在我的情况下,用户会得到一个ComboBox,其中可能有很多选择。与此匹配的是一个过滤项的TextBox。当TextBox有焦点时,我想做的是打开下拉列表--让用户看到当前过滤器在输入它时完成了什么。(这不仅是自动完成的,我目前正在匹配项目中的任何地方的过滤器文本,我可以用RegEx搜索代替它。)
听起来很简单--当TextBox获得焦点时放下框,当失去焦点时关闭它。它打开了--很快又关闭了。有什么好答案吗?
我的Google-Fu今晚肯定很弱,我不敢相信以前没有人想这么做,但我在外面什么也没发现。(我已经看到了一件相关的事情:输入一个开放的ComboBox来提供建议选项,就像谷歌那样,但我的列表是必需的,而不仅仅是建议。)
发布于 2014-04-25 04:58:01
可以为设置属性的TextBox代码添加焦点事件。
ComboBox.DroppedDown = true;而不是添加到TextChanged代码的TextBox事件中。
ComboBox.SuspentLayout();
//ComboBox.Items add/remove
ComboBox.ResumeLayout();当文本为空时,不要忘记重置项目。
编辑:
这似乎很有效(但你没有机会看到鼠标)
string[] items = { "abcd", "abc", "bcd", "cd" };
private void textBox1_TextChanged(object sender, EventArgs e)
{
comboBox1.SuspendLayout();
comboBox1.Items.Clear();
comboBox1.Items.AddRange(items.Where(item => item.ToLower().Contains(textBox1.Text.ToLower())).ToArray());
comboBox1.ResumeLayout();
comboBox1.DroppedDown = true;
}https://stackoverflow.com/questions/23284328
复制相似问题