我的表格上有一个组合框。它处于DropDown模式,并且具有自动完成功能。首次显示时,其文本为"Choose part..."
。我希望在做出选择后将其文本重置为此。我试过这个(假设组合框名为comboBox1
):
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// [omitted]
comboBox1.Text = "Choose part...";
}
仅在使用键盘进行选择时才有效(例如,键入值并按[Enter]
或开始输入,使用箭头选择其中一个自动更正值,然后按[Enter]
)。使用鼠标进行选择时,文本仍为选定值。
我遇到键盘和键盘的问题鼠标之前用组合框做不同的事情,但这与某些不发射的事件有关。我确定这个事件正在激活(无论使用哪种方法,上面省略的代码都会运行。)
有没有人见过这个?任何解决方案?
答案 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;
此处的用户体验问题有些含糊不清:有时您可能希望将列表重置为“已知良好状态”。例如,如果列表保留在先前的选择上,则用户可能会感到困惑。重置列表框确实可以让用户知道他们想要实际发生的任何操作。