在选择后重置组合框中的文本
本文关键字:文本 组合 选择 | 更新日期: 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;
这里的用户体验问题有点模棱两可:有时您可能希望将列表重置为"已知的良好状态"。例如,如果列表保持在先前的选择上,用户可能会感到困惑。重置列表框可以让用户感觉到他们想要的操作已经发生了。