WPF - 监听判断键盘组合键的按下
- 对于键盘事件PreviewKeyDown、PreviewKeyUp、KeyDown、KeyUp,在其中检查当次事件是哪个按键触发的很简单,只需要判断KeyEventArgs类型的事件参数e的Key属性。
- 如果需要判断修饰键(Alt、Ctrl、Shift)是否同时被按下,以Window.KeyDown事件为例,有两种写法:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.H)
{
//同时按下了Ctrl + H键(H要最后按,因为判断了此次事件的e.Key)
//修饰键只能按下Ctrl,如果还同时按下了其他修饰键,则不会进入
}
}
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control) && e.Key == Key.H)
{
//同时按下了Ctrl + H键(H要最后按,因为判断了此次事件的e.Key)
//修饰键只要按下了Ctrl,不管按没按其他修饰键,都会进入
}
}
其中的e.KeyboardDevice.Modifiers,可以用Keyboard.Modifiers(Keyboard类的静态属性)来替换。
- 另外,也可以利用Keyboard类的静态方法IsKeyDown,完全脱离事件参数e,来监听判断键盘按键(推荐) :
if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.H) && Keyboard.IsKeyDown(Key.C))
{
//只要当下同时按下的键中包含LeftCtrl、H和C,就会进入
}
这种方式可以在任何时刻,检测多个组合按键(不一定是修饰键),并且对按键顺序和最后按的是哪个键没有要求。
- 但是,以上方法有使用前提,都只在当前窗体获得焦点时有效。
如果焦点在别的窗体上,或者用户切换到别的应用程序时,则只好利用C#的平台调用功能,调用操作系统底层的dll,来进行监听了。
WPF - 监听判断键盘组合键的按下的更多相关文章
- js监听不到组合键
我在js文件中写代码,监听 ctrl + enter 组合键,但是一直监听不到.只能监听到单个键. 后来我将监听的代码放到html页面中去,就能监听到了. 这个问题困扰我很久,记录下!
- Android 监听软键盘搜索键
现在很多的Android应用都有了数据搜索功能,在以往的设计上,会使用搜索框+搜索按钮来实现搜索功能: 现在呢,越来越流行的是,去除搜索按钮,直接监听软键盘搜索键,当用户输入完搜索关键字后,直接点击软 ...
- Android App监听软键盘按键的三种方式
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面:在点击搜索框的时候,点击右下角的sea ...
- 键盘-App监听软键盘按键的三种方式
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面:在点击搜索框的时候,点击右下角的sea ...
- Android App监听软键盘按键的三种方式(转)
最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“G ...
- h5 移动端 监听软键盘弹起、收起
前面一篇博客 h5 安卓 键盘弹起界面适配 修改webview高度提到了在adnroid中如何监听软键盘的弹起与收起,是利用的窗口的高度发生变化window.onresize事件来做突破点的,但是io ...
- Android 监听软键盘按键的三种方式
前言: 我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键加载url页面:在点击搜索框的时候,点击右下角的searc ...
- Android 另类方法监听软键盘的弹出收起事件
http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...
- adnroid 监听软键盘的显隐
首先注明出处,我只是想做个笔记:http://www.jb51.net/article/64820.htm 第一眼看到的时候,觉得不太可靠,因为之前都是看到这样处理的,根据监听一个根布局的size,可 ...
随机推荐
- php __set()和__get()函数
<?php /* 总结: 1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用 2. 向一个难以访问的属性赋值的时候 __set() 方法被调用 3. 难以访问包括:(1)私有属 ...
- xml的生成和发送
s2014-04-07 10:01:05 之前学的是解析,现在需要生成xml, 然后利用蓝牙或者wifi发送到服务器 2014-04-07 10:36:34 采用dom4j创建xml报错 后来发现安卓 ...
- scala和maven整合实践
.scala和maven如何整合 网上有一堆教程讲idea如何new module或new project一步一步来创建scala工程,在这里我不推荐这个.原因是现在主流的开发环境,大多数是采 ...
- iOS 设置控件圆角、文字、字体
以按钮为例: UIButton btn = [UIButton new]; btn.layer.masksToBounds = YES; btn.layer.cornerRadius = 10.0; ...
- JAVA语言中冒号的用法
近来由于本人要介入android平台的开发,所以就买了本JAVA语言的书学习.学习一段时间来,我的感觉是谭浩强就是厉害,编写的<C编程语言>系列丛书不愧是经典.书中对C语言的介绍既系统又全 ...
- SQL迅速增加表中记录语句
很多时候我么需要为表中疯狂增加N条记录,那么我们该使用什么语句实现该功能呢?如下: insert into 表名(字段1,字段2,字段3....) select 字段1,字段2,字段3.... fr ...
- 安装MYSql Windows7下MySQL5.5.20免安装版的配置
MySQL Windows安装包说明: 1.mysql-5.5.20-win32.msi:Windows 安装包,图形化的下一步下一步的安装. 2.mysql-5.5.20.zip,这个是window ...
- jQuery软键盘插件
1.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.or ...
- Delphi中点击DBGrid某一行获得其详细数据方法
http://www.cnblogs.com/leewiki/archive/2011/12/16/2290172.html Delphi中点击DBGrid某一行获得其详细数据方法 前提是用ADOTa ...
- JSP/Servlet(一)
JSP/Servlet(一) Web应用和web.xml文件: 一.构建Web应用: 1.在任意目录下创建一个文件夹. 2.在第1步所建的文件夹内建一个WEB-INF文件夹(注意大小写). 3.进 ...