2014-02-18 35 views
0

在C#与DotNet 4我有一个窗体与组合框,启动程序时填充值。 现在用户可以下拉并选择其中一个值。但是:也可以在组合框中写入新的东西。如何仅允许组合框中的有效值?

问题:我能做些什么,不可能写出不属于列表的内容?

感谢

回答

3

使ComboBox的文本部分不可编辑,设置DropDownStyle属性为“DropDownList的”。

1

它可以通过简单地将属性分配给组合框.DropDownStyle = ComboBoxStyle.DropDownList来完成。但是,此属性不允许编辑文本。意味着您必须通过鼠标或上/下箭头键选择项目。您无法通过选择此属性来过滤结果。如果你想过滤的结果,但不允许接受无效的值,那么你可以当我插入一个无效的文本组合框,然后什么也没有发生通过写cmb_Validating事件

private void cmb_Validating(object sender, CancelEventArgs e) 
{ 
    if (cmb.SelectedValue == null && cmb.Text != string.Empty) 
     e.Cancel=true; 
} 
+0

一些代码做到这一点? 新事件的断点在e.cancel = true处停止,但那又如何? –

+0

当控制焦点发生变化时,将发生验证事件。因此,应用程序将不允许您在未分配有效值的情况下集中其他控件。所以,在这里你必须分配有效的值,否则应用程序不会允许你做任何形式的事情。 – Shell