检查100多个项目的下拉列表中的项目

时间:2016-12-02 14:10:45

标签: c# sql winforms

我有一个comboBox,其中包含从数据库(sql express)填充的项目。我想阻止用户使用自己的自定义输入保存文件。我想要的是点击保存后会出现某种类似的提示:“列表中没有输入有效的项目”。目前正在使用离开事件。这是代码:

  private void comboBox3_Leave(object sender, EventArgs e)
    {
        ComboBox cb = (ComboBox)sender;
        if (!comboBox3.Items.Contains(cb.Text))
        {
            MessageBox.Show("Not a valid Cari-med Item!");
        }

它有效,但我只想询问是否有其他方法可以完成所要求的。在我的研究中,我已经尝试将样式更改为dropDownList。该方法对我不起作用,因为用户必须能够根据键入的每个字符键入并查看建议。不能让用户滚动这么多记录。有没有其他方法可以实现这个目标?

1 个答案:

答案 0 :(得分:1)

如果项目无效,您可以使用Leave事件代替Validating事件并设置e.Cancel = True。如果事件被取消,则焦点仍在ComboBox

这是VB.NET中的一个简单示例:

Private Sub ComboBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ComboBox1.Validating

    If Not CType(sender, ComboBox).Items.Contains(CType(sender, ComboBox).Text) Then
        MsgBox("Not a valid item!")
        e.Cancel = True
    End If

End Sub

如果您想在Sub / Function中执行此操作,可以在执行代码前检查有效SelectedItem

If IsNothing(Me.ComboBox1.SelectedItem) Then
    MsgBox("Not a valid item!")
    Me.ComboBox1.Focus() 'optional step
Else
    'your save function
End If