Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 尝试验证我的组合框时遇到问题_.net_Vb.net_Vb.net 2010 - Fatal编程技术网

.net 尝试验证我的组合框时遇到问题

.net 尝试验证我的组合框时遇到问题,.net,vb.net,vb.net-2010,.net,Vb.net,Vb.net 2010,我已经决定给我的组合框添加一些验证,我试图实现的是确保用户只能输入组合框中的字段,但我现在遇到的问题是,如果用户单击组合框,没有输入任何内容,并试图离开组合框,则会出现消息框 Private Sub Combobox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Combobox1.Validating If Combobox1.Items.Contains(Combob

我已经决定给我的组合框添加一些验证,我试图实现的是确保用户只能输入组合框中的字段,但我现在遇到的问题是,如果用户单击组合框,没有输入任何内容,并试图离开组合框,则会出现消息框

Private Sub Combobox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Combobox1.Validating
    If Combobox1.Items.Contains(Combobox1.Text) = False Then
        e.Cancel = True
    End If
End Sub

Private Sub Combobox1_Leave(sender As Object, e As System.EventArgs) Handles Combobox1.Leave
    If Combobox1.Items.Contains(Combobox1.Text) = False Then
        Combobox1.Select()
        MessageBox.Show("select item from combobox")
    End If
End Sub

如前所述,编码确实有效,但我试图确保如果用户未在组合框中输入任何内容,消息框不会出现。

根据您的评论,我认为您需要做的只是添加一个空字符串检查:

Private Sub ComboBox1_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles ComboBox1.Validating
  If ComboBox1.Items.Contains(ComboBox1.Text) = False Then      
    e.Cancel = (ComboBox1.Text <> String.Empty)
  End If
End Sub

Private Sub ComboBox1_Leave(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.Leave
  If Not ComboBox1.Items.Contains(ComboBox1.Text) Then
    If ComboBox1.Text <> String.Empty Then
      ComboBox1.Select()
      MessageBox.Show("select item from combobox")
    End If
  End If
End Sub
Private子ComboBox1\u验证(ByVal sender作为对象,ByVal e作为CancelEventArgs)处理Combox1。验证
如果ComboBox1.Items.Contains(ComboBox1.Text)=False,则
e、 Cancel=(ComboBox1.Text String.Empty)
如果结束
端接头
私有子ComboBox1_Leave(ByVal发送方作为对象,ByVal e作为事件参数)处理Combox1.Leave
如果不是ComboBox1.Items.Contains(ComboBox1.Text),则
如果ComboBox1.Text String.Empty,则
ComboBox1.Select()
Show(“从组合框中选择项”)
如果结束
如果结束
端接头
使用以下代码:

Private Sub Combobox1_Leave(sender As Object, e As System.EventArgs) Handles Combobox1.Leave

    If ComboBox2.SelectedIndex = -1 Then
        MessageBox.Show("select item from combobox")
    End If
End Sub

通常,将DropDownStyle设置为DropDownList可以防止出现这种问题。嗨,是的,我理解,但这并不完全是我想要的。正如你自己所说,代码是有效的。不确定您目前正在寻找什么帮助。好的,我的组合框中填充了数据-例如,组合框中包含字段奥迪宝马福特(作为行)因此,如果我输入Mercedez并在表单上选择另一个控件,它当前会失败,出现消息框,这非常好,但是如果我单击组合框,在组合框中不输入任何内容,并且我在表单上选择另一个控件,则消息框会在不应该出现的时候出现-因此,只有当出现错误时,消息框才会出现组合框中的文本,而不是组合框为空时的文本。