winform中Combobox自动完成和回车键的问题

on_my_way20xx 2011-10-27 10:03:18
各位大侠老师好.
我最近写一个小东西,用户提出了两个易用方面的要求:
1. 对于Combobox这样的控件,在组合框里输入文本的时候要有自动完成功能

2. 按下回车键后,焦点从一个控件转移到下一个控件(等于按Tap键)

这个两个功能分开都能实现,但是同时启用则由问题. 我发现
如果设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyPress事件,则KeyPress事件失效;
如果设置设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyDown事件,则自动完成失效.

我考虑是不是MS对于自动完成事件就是通过注册KeyPress或者KeyDown事件完成的?如果我自己接管了这两个事件则冲突了?

如果我想两者都实现,是不是要自己实现Combobox的自动完成呢?或是有其他简便办法?
...全文
763 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
on_my_way20xx 2011-10-27
  • 打赏
  • 举报
回复
谢谢大家~~~~~~~~~~~~~
神棍 2011-10-27
  • 打赏
  • 举报
回复
你是怎么切换焦点呢?
如果你的界面层次比较多的话,先Select一下.
on_my_way20xx 2011-10-27
  • 打赏
  • 举报
回复
我问题解决了,注册Keyup事件,AutoCompleteMode设为SuggestAppend,AutoCompleteSource为ListItems
可以实现:
1。 Combobox自动完成
2。 用回车键切换焦点.
on_my_way20xx 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nanqi0506 的回复:]
AutoCompleteSource属性你设的什么?

我将AutoCompleteMode设为SuggestAppend,AutoCompleteSource为ListItems
注册KeyDown事件切换焦点无误.
[/Quote]
我和你设置一样
AutoCompleteMode设为SuggestAppend,AutoCompleteSource为ListItems
我注册KEYDOWN判断是回车可以切换焦点,但是自动完成就废了.
萧炎 2011-10-27
  • 打赏
  • 举报
回复

//自动完成下拉框
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("VV");
dt.Rows.Add(new string[] { "aa", "x" });
dt.Rows.Add(new string[] { "bb", "z" });
dt.Rows.Add(new string[] { "cc", "y" });
dt.Rows.Add(new string[] { "dd", "w" });

this.comboBox1.DataSource = dt;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "VV";
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

神棍 2011-10-27
  • 打赏
  • 举报
回复
AutoCompleteSource属性你设的什么?

我将AutoCompleteMode设为SuggestAppend,AutoCompleteSource为ListItems
注册KeyDown事件切换焦点无误.
on_my_way20xx 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
有属性 AutoCompleteMode
KeyPress判断回车,然后你想让那个组件由焦点,就设置组件的Focused
[/Quote]
2楼大哥的意思是: 只用AutoCompleteMode属性么? 然后配合KeyPress?

我刚测试了 如果只设置AutoCompleteMode属性,不设置AutoCompleteSource属性:自动完成不能实现,
按回车键的话,只能让combobox的文本框内容被选中,并不会切换焦点.

bdmh 2011-10-27
  • 打赏
  • 举报
回复
有属性 AutoCompleteMode
KeyPress判断回车,然后你想让那个组件由焦点,就设置组件的Focused

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧