为更改和添加值触发的ComboBox事件

时间:2017-10-05 23:48:32

标签: .net winforms user-interface

假设我有一个带有ComboBox的C#.NET窗体应用程序,它选择字符串值并接受新值的输入。

时触发事件处理方法的最有效方法是什么?
      
  • 选择了组合框的预先存在的值,或
  •   
  • a 新输入的值是否已键入/输入到组合框中?

我尝试过像SelectedIndexChanged这样的选项,但是当新输入的值时,我似乎无法触发。我认为这是一个相当简单的事情,但我不确定。

我可以陷入Enter键,但这似乎是半破坏的假设,这意味着更新。

2 个答案:

答案 0 :(得分:1)

我使用ComboBox_SelectedIndexChanged对所选项目进行更改。

我还会捕获ComboBox_Leave事件以检查项目是否为新项目(列表中不存在)。这将满足从ComboBox切换焦点的Enter,Tab键和鼠标点击。

同时查看"可过滤的DataGridViews",在网络上有一些msdn和codeproject文章可以提供帮助。

答案 1 :(得分:0)

如果不知道你的全部要求是什么,我会质疑一个组合框是否适合这个。我的第一个观察是允许用户即时输入新的组合框项目可能会打开潘多拉魔盒。我可以很容易地看到一些简单的拼写错误中的项目重复,以及必然会发生的其他用户滑稽动作。这将是一个令人头疼的问题。

正如@Jeremy Thompson建议的那样,连接组合框“Leave”事件可能有所帮助,您可以使用ComboBox.Text属性来获取用户输入的新文本,然后检查它是否已存在且不是为空或null,然后只需将其添加到组合框项目列表中。这应该有效,但我猜可能有更好的方法来实现你的目标。用户将在组合框中输入什么内容?

private void comboBox1_Leave(object sender, EventArgs e) {
  string currentSelection = comboBox1.Text;
  if (currentSelection != null && currentSelection != "" && !comboBox1.Items.Contains(currentSelection)) {
    comboBox1.Items.Add(currentSelection);
  }
}