选择后重置Combobox中的文本

时间:2011-12-29 19:28:07

标签: c# .net winforms combobox

我的表格上有一个组合框。它处于DropDown模式,并且具有自动完成功能。首次显示时,其文本为"Choose part..."。我希望在做出选择后将其文本重置为此。我试过这个(假设组合框名为comboBox1):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      // [omitted]

      comboBox1.Text = "Choose part...";
    }

仅在使用键盘进行选择时才有效(例如,键入值并按[Enter] 开始输入,使用箭头选择其中一个自动更正值,然后按[Enter])。使用鼠标进行选择时,文本仍为选定值。

我遇到键盘和键盘的问题鼠标之前用组合框做不同的事情,但这与某些不发射的事件有关。我确定这个事件正在激活(无论使用哪种方法,上面省略的代码都会运行。)

有没有人见过这个?任何解决方案?

2 个答案:

答案 0 :(得分:3)

请尝试使用委托:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
  // [omitted]

  this.BeginInvoke((MethodInvoker)delegate { comboBox1.Text = "Choose part..."; });
}

正如Hans评论的那样,这可能不是用户期望ComboBox工作的最佳用户界面实现。

答案 1 :(得分:0)

另一种方法是在索引0处添加项目:

ComboBox1.Items.Insert(0, new ListItem("Choose Part...", "Choose Part..."));

然后在处理ComboBox1.SelectedListItemChanged()事件后将组合框重置为第0项

ComboBox1._SelectedIndexChanged = 0;       

此处的用户体验问题有些含糊不清:有时您可能希望将列表重置为“已知良好状态”。例如,如果列表保留在先前的选择上,则用户可能会感到困惑。重置列表框确实可以让用户知道他们想要实际发生的任何操作。