在选择后重置组合框中的文本

本文关键字:文本 组合 选择 | 更新日期: 2023-09-27 18:19:07

我的表单上有一个组合框。它在下拉模式下,它有自动完成功能。当它第一次显示时,它的文本是"Choose part..."。我想它重置它的文本到这个选择后。我已经尝试了这个(假设组合框被命名为comboBox1):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      // [omitted]
      comboBox1.Text = "Choose part...";
    }

它仅在使用键盘进行选择时有效(例如,键入一个值并按[Enter] 开始键入,使用箭头选择一个自动更正的值,并按[Enter])。当使用鼠标进行选择时,文本保持所选值。

我的键盘有问题&鼠标以前用组合框做不同的事情,但这与某些事件不触发有关。我确信这个事件正在触发(不管使用什么方法,上面省略的代码都会运行)。

有人见过这个吗?有解决方案吗?

在选择后重置组合框中的文本

尝试使用委托:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
  // [omitted]
  this.BeginInvoke((MethodInvoker)delegate { comboBox1.Text = "Choose part..."; });
}

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

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

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

处理combobox1 . selectedlisttitemchanged()事件后,将组合框重置为0项

ComboBox1._SelectedIndexChanged = 0;       

这里的用户体验问题有点模棱两可:有时您可能希望将列表重置为"已知的良好状态"。例如,如果列表保持在先前的选择上,用户可能会感到困惑。重置列表框可以让用户感觉到他们想要的操作已经发生了。