ComboBox 回车必然触发提交事件
来源:互联网 发布:青岛seo软件排行榜 编辑:程序博客网 时间:2024/05/21 12:41
无论下拉列表是否展开,回车必然触发提交事件,Esc 必然触发取消事件,从而导致非预期结果。
MSDN 载有:
测试代码:
解决方案:
MSDN 载有:
ComboBox.IsInputKey 方法照理说,下拉列表展开时回车不会触发提交事件, Esc 也不会触发取消事件,但事实却并非如此,原因何在?
protected override bool IsInputKey(
Keys keyData
)
如果 keyData 参数包含 Return 或 Escape 值,并且 DroppedDown 属性为 true,则 IsInputKey 方法返回 true。
测试代码:
public class ComboBoxEx: ComboBox { protected override bool IsInputKey(Keys keyData) { if (DroppedDown) switch (keyData) { case Keys.Return: return true; case Keys.Escape: return true; } return base.IsInputKey(keyData); }}透过调试器可看到,当下拉列表未打开时, DroppedDown 为 false , IsInputKey() 执行一遍,行为预期。当下拉列表打开时, IsInputKey() 奇怪地执行两遍,第一遍 DroppedDown 为 true ,第二遍 DroppedDown 为 false ,致使 IsInputKey() 形同虚设,从而导致非预期结果。
解决方案:
public class ComboBoxEx: ComboBox { protected bool DroppedDownBak = false; protected override bool IsInputKey(Keys keyData) { if (DroppedDown || DroppedDownBak) { if (DroppedDownBak) DroppedDownBak = false; if (DroppedDown) DroppedDownBak = true; switch (keyData) { case Keys.Return: return true; case Keys.Escape: return true; } } return base.IsInputKey(keyData); }}
- ComboBox 回车必然触发提交事件
- 回车触发提交事件
- 回车触发按钮提交事件
- 禁止表单按回车触发提交事件
- javascript 回车触发提交
- asp.net页面中 回车触发提交事件
- asp.net页面中 回车触发提交事件(转)
- asp.net页面中 回车触发提交事件
- asp.net页面中 回车触发提交事件(转)
- IE8下,button回车触发提交事件的解决
- ComboBox接受回车事件
- 按回车触发事件
- TextBox回车触发事件
- TEXTBOX回车触发事件
- 回车触发按钮事件
- js触发回车事件
- js触发回车事件
- jQuery回车触发事件
- Win7 一键获得管理所有权限(最高权限)注册表
- 推荐一个记事本程序(替代windows记事本)
- 1.面向对象基础(封装、继承、多态、抽象类)0711
- 1.JavaScript语言基础0804
- 魔力宝贝服务器端文件介绍
- ComboBox 回车必然触发提交事件
- OSPF常见错误和排错方法
- Win32 ShellCode 编程技术
- 在csdn上的被推荐
- 分裂的天朝互联网
- 【Php】遍历目录下文件、批量替换文件内容等功能的一个类V2
- 添加用户代码
- 【Js】js的面向对象真是晦涩
- 修改ubuntu10.10和XP的首启动(我的系统windows7 测试无误)