WPF TextBox 控件获取热键并转为 win32 Keys
来源:互联网 发布:淘宝数据包 编辑:程序博客网 时间:2024/06/05 11:44
WPF 中使用的 Key 对象与 WinForm 中的 Keys 不同,两者的按键枚举对象与物理键的映射关系有功能键上有区别,无法进行类型强制转换。使用 win api 注册热键时,需要将之转换成 win32 的键值,可以使用 KeyInterop.VirtualKeyFromKey(),另外,Keys 可以保存组合鍵,Key 则只是单个按键。Keys 的成员中有个 Modifiers,从下图可以看出 0~15位之外,是用来存放功能键的。 从两张图对比上,可以直观地发现两者的区别。
示例代码:
using System.Windows.Input;namespace demo.Controls{ class HotKeyTextBox : BeiLiNu.Ui.Controls.WPF.Controls.XTextBox { private System.Windows.Forms.Keys pressedKeys = System.Windows.Forms.Keys.None; protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e) { int keyValue = KeyInterop.VirtualKeyFromKey(e.Key); if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { keyValue += (int)System.Windows.Forms.Keys.Control; } if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt) { keyValue += (int)System.Windows.Forms.Keys.Alt; } if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) { keyValue += (int)System.Windows.Forms.Keys.Shift; } this.Keys = (System.Windows.Forms.Keys) keyValue; e.Handled = true; } public System.Windows.Forms.Keys Keys { get { return pressedKeys; } set { pressedKeys = value; setText(value); } } private void setText(System.Windows.Forms.Keys keys) { this.Text = keys.ToString(); } }}
0 0
- WPF TextBox 控件获取热键并转为 win32 Keys
- WPF TextBox 扩展验证控件
- TextBox控件获取焦点并光标正确闪烁
- WPF控件开发(1) TextBox占位符
- WPF 创建多行 TextBox 控件
- 获取TextBox控件的行数
- Wpf 获取控件句柄
- WPF获取控件坐标
- WIN32程序创建热键
- WPF TextBox控件中文字实现垂直居中
- WPF TextBox控件中文字实现垂直居中
- WPF TextBox控件中文字实现垂直居中
- WPF编程:textbox控件文本框数据显示最后一行
- 潘鹏整理WPF(7)文本控件TextBox&&PassWordBox
- Wpf TextBox 控件如何绑定 Dictionary <int, string>
- WPF C# VS2013 TextBox控件 限制只能输入数字
- C# WPF TextBox控件与变量的绑定
- 获取GridView内TextBox控件的值
- 搜狐畅游的求字符串对称轴算法题
- <深入理解C指针>学习笔记和总结 第五章 指针和字符串
- <深入理解C指针>学习笔记和总结 第六章 指针和结构体
- <深入理解C指针>学习笔记和总结 第六章 指针和结构体 第二部分
- Ubuntu安装texlive(vanilla installation)
- WPF TextBox 控件获取热键并转为 win32 Keys
- c++11绑定器bind
- 更新OPatch中OCM报错
- LeetCode2.1.14 @ Valid Sudoku 验证数独D2F2
- Chapter6 SQL:Data Manipulation
- 有关ReprojectImageTo3D的点云长得奇怪的解决方案
- SQL SERVER基础
- 开机,连网,application, 启动Service 记录
- 5.1.12 Populating Next Right Pointers in Each Node II