【问题标题】:VB.net Combobox or Textbox null or emptyVB.net 组合框或文本框为空或为空
【发布时间】:2015-05-18 10:00:43
【问题描述】:

由于某种原因,以下查询似乎不起作用。谁能告诉我为什么它的行为与我的预期不同。

基本上,如果所述的combobox.text 或textbox.text 都是空白的,那么应该会显示一条消息。如果选择其中之一,则显示当前日期时间。

If String.IsNullOrEmpty(lbx_Aux_Codes.Text) OrElse String.IsNullOrEmpty(com_Work_Item.Text) Then

    MessageBox.Show("Please Select a Task or Work Item")

Else

    StartTime = DateTimeLog()
    MessageBox.Show(StartTime)

End If

感谢任何帮助。

【问题讨论】:

    标签: vb.net combobox textbox


    【解决方案1】:

    OrElse 更改为AndAlso

    您的代码应如下所示

      If String.IsNullOrEmpty(lbx_Aux_Codes.Text) AndAlso String.IsNullOrEmpty(com_Work_Item.Text) Then
          MessageBox.Show("Please Select a Task or Work Item")
      Else
          StartTime = DateTimeLog()
          MessageBox.Show(StartTime)
      End If
    

    OrElseOr 将返回 true 如果其中一个为真,因此如果您希望该消息仅在两者都为空时弹出,因为如果一个已填充您想继续 else,则使用 And而是。

    【讨论】:

    • 使用AndAlso 而不是And
    • @MattWilko 请编辑我的答案。我不想承担功劳。 :)
    【解决方案2】:

    我认为最好使用 AndAlso 来满足这个要求。 OrElse 用于不同的“短路”目的。您可以查看:Or versus OrElse 并使用 ElseIf 作为您的第二个条件:

    If String.IsNullOrEmpty(lbx_Aux_Codes.Text) AndAlso String.IsNullOrEmpty(com_Work_Item.Text) Then
    
    MessageBox.Show("Please Select a Task or Work Item")
    
    ElseIf String.IsNullOrEmpty(lbx_Aux_Codes.Text) Or _
    String.IsNullOrEmpty(com_Work_Item.Text) Then
    
    StartTime = DateTimeLog()
    MessageBox.Show(StartTime)
    
    End If
    

    【讨论】:

    • 这很令人困惑,因为它与 Or vs OrElse 无关
    • AndAlso 也是一个短路评估器,从您的前两行中不清楚。
    • 先生,我不想把它变成讨论,但我的回答中没有任何内容表明 AndAlso 不是短路评估器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多