各位大侠老师好.
我最近写一个小东西,用户提出了两个易用方面的要求:
1. 对于Combobox这样的控件,在组合框里输入文本的时候要有自动完成功能
2. 按下回车键后,焦点从一个控件转移到下一个控件(等于按Tap键) 这个两个功能分开都能实现,但是同时启用则由问题. 我发现
如果设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyPress事件,则KeyPress事件失效;
如果设置设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyDown事件,则自动完成失效. 我考虑是不是MS对于自动完成事件就是通过注册KeyPress或者KeyDown事件完成的?如果我自己接管了这两个事件则冲突了? 如果我想两者都实现,是不是要自己实现Combobox的自动完成呢?或是有其他简便办法?
我最近写一个小东西,用户提出了两个易用方面的要求:
1. 对于Combobox这样的控件,在组合框里输入文本的时候要有自动完成功能
2. 按下回车键后,焦点从一个控件转移到下一个控件(等于按Tap键) 这个两个功能分开都能实现,但是同时启用则由问题. 我发现
如果设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyPress事件,则KeyPress事件失效;
如果设置设置Combobox的AutoCompleteMode 和AutoCompleteSource属性,同时注册Combobox的KeyDown事件,则自动完成失效. 我考虑是不是MS对于自动完成事件就是通过注册KeyPress或者KeyDown事件完成的?如果我自己接管了这两个事件则冲突了? 如果我想两者都实现,是不是要自己实现Combobox的自动完成呢?或是有其他简便办法?
解决方案 »
- 请问验证控件RegularExpressionValidator是vs2005或vs2003自带的吗?
- asp.net 2.0 c# 数据库到session
- 小问题
- MSDN目录只显示 Help on help了
- 高分求visual c#.net建的asp.net应用程序源码。
- 如何在 .Net Framework 下 1 毫秒级精确循环定时
- 介绍个适合我的好书给我好吗?.net方面的
- 在前台使用if else 必须放在<%%>内是什么用法,请赐教
- 这条SQL语句怎么用?
- c#和数据库的应用。100分送
- 怎样合并excel中的各个页面[
- 在winform中播放flash并获取其点击事件,快来帮忙
KeyPress判断回车,然后你想让那个组件由焦点,就设置组件的Focused
按回车键的话,只能让combobox的文本框内容被选中,并不会切换焦点.
注册KeyDown事件切换焦点无误.
//自动完成下拉框
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;
AutoCompleteMode设为SuggestAppend,AutoCompleteSource为ListItems
我注册KEYDOWN判断是回车可以切换焦点,但是自动完成就废了.
可以实现:
1。 Combobox自动完成
2。 用回车键切换焦点.
如果你的界面层次比较多的话,先Select一下.