解决C#中取消方向键对控件焦点控制的实现方法
2018-10-12 14:10
2081 查看
在C# winform 应用程序中,对于键盘响应事件,经常使用到"KeyPress"、“KeyUp”、"KeyDown"事件,可以处理某个按键的自定义处理事件。有时想定义方向键的自定义处理事件时,你可以发现,虽然自定义的处理事件发生了响应,但是也可以看到,按下方向键时,发现窗体上控件的焦点也发生了切换。而这种结果不是我们想要的,我们不想按下方向键时,控件的焦点发生切换,只想响应我们自定义的处理函数即可。下面的方法可以取消方向键对控件焦点的控制:
UpKey()、DownKey()、LeftKey()、RightKey()分别是自定义的各个方向键的处理函数。在各个自定义处理函数之后使用return true 表示对按键的响应不继续处理,直接返回,这样就可以避免了方向键对控件焦点的控制。对于其他的按键,return base.ProcessCmdKey(ref msg, keyData);使用默认的处理。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)//取消方向键对控件的焦点的控件,用自己自定义的函数处理各个方向键的处理函数
{
switch (keyData)
{
case Keys.Up:
UpKey();
return true;//不继续处理
case Keys.Down:
DownKey();
return true;
case Keys.Left:
LeftKey();
return true;
case Keys.Right:
RightKey();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
UpKey()、DownKey()、LeftKey()、RightKey()分别是自定义的各个方向键的处理函数。在各个自定义处理函数之后使用return true 表示对按键的响应不继续处理,直接返回,这样就可以避免了方向键对控件焦点的控制。对于其他的按键,return base.ProcessCmdKey(ref msg, keyData);使用默认的处理。
您可能感兴趣的文章:
相关文章推荐
- C#中在控件中画图并用TIMER控件进行控制方法的实现
- VC++中对对话框中控件的控制的一种实现方法(适合初学者看)
- C#: 中文和UNICODE字符转换方法 及仿安居客地图实现。。。错误 GMap2未定义 解决办法 -VB 中文转为UNICODE字符
- C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考
- C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考
- [ASP.NET 2.0]定制C#TextBox控件中只允许输入数字的解决方法
- C#实现后台大量运算并刷新控件的方法
- C#实现全局热键响应,失去焦点情况下响应全局快捷键的方法
- C#控件的闪烁问题解决方法
- C# 线程操作 出现“从不是创建控件lstUser的线程访问它”错误的解决方法
- C#在WinForm和Web中实现回车键代替TAB键切换控件焦点
- 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误
- C# WebBrower1控件提示“该文档已被修改,是否保存修改结果”解决方法
- 定制C#TextBox控件中只允许输入数字的解决方法
- C# WinForm 中控件(Label,Button等) 文本自动换行 解决方法
- C#调用OCX控件Catastrophic failure解决方法
- C# :线程中操作多控件 (委托实现异步及同步的方法)
- C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
- 加了验证控件后,取消按扭不起作用的解决方法
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果