首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打开ComboBox,而另一个控件有焦点

打开ComboBox,而另一个控件有焦点
EN

Stack Overflow用户
提问于 2014-04-25 04:43:05
回答 1查看 175关注 0票数 0

在我的情况下,用户会得到一个ComboBox,其中可能有很多选择。与此匹配的是一个过滤项的TextBox。当TextBox有焦点时,我想做的是打开下拉列表--让用户看到当前过滤器在输入它时完成了什么。(这不仅是自动完成的,我目前正在匹配项目中的任何地方的过滤器文本,我可以用RegEx搜索代替它。)

听起来很简单--当TextBox获得焦点时放下框,当失去焦点时关闭它。它打开了--很快又关闭了。有什么好答案吗?

我的Google-Fu今晚肯定很弱,我不敢相信以前没有人想这么做,但我在外面什么也没发现。(我已经看到了一件相关的事情:输入一个开放的ComboBox来提供建议选项,就像谷歌那样,但我的列表是必需的,而不仅仅是建议。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 04:58:01

可以为设置属性的TextBox代码添加焦点事件。

代码语言:javascript
运行
复制
ComboBox.DroppedDown = true;

而不是添加到TextChanged代码的TextBox事件中。

代码语言:javascript
运行
复制
ComboBox.SuspentLayout();
//ComboBox.Items add/remove
ComboBox.ResumeLayout();

当文本为空时,不要忘记重置项目。

编辑:

这似乎很有效(但你没有机会看到鼠标)

代码语言:javascript
运行
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23284328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档