2016-12-02 56 views
0

我有一个组合框从项目中填充数据库(sql express)。我想阻止用户使用自己的自定义输入来保存文件。我想要的是,当点击保存时,会出现某种提示,例如:“没有输入有效的项目。”目前正在使用离开事件。这是代码:检查100 +项目下拉列表中的项目

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。该方法对我来说不起作用,因为用户必须能够键入并根据每个键入的字符查看建议。不能让用户滚动这么多记录。有没有其他方法可以实现这一点?

+0

你可以只需将'DropDownStyle'属性设置为'DropDownList',以确保用户只能选择组合框中的值并且不能输入自由文本。 –

+0

我已经在我的解释中说过为什么我不想要那个。标题甚至开始说,超过100 +记录..... @ZoharPeled – Jevon

+1

对不起,我迷失了那部分... –

回答

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 
+0

如果我想将它包含在我的saveTofile函数中,该怎么办?我会怎么做?因为目前这是其自身的功能 – Jevon

+1

答案更新与一个可能的解决方案。 – tezzo