一、键盘和键盘事件
WPF提供了一个基本的键盘类(System.Input.Keyboard类),该类提供键盘相关的事件,方法和属性,以提供有关键盘状态的信息。键盘事件也由诸如UIElement XAML基本元素类的事件提供。对于键盘操作,有两个常见事件:
KeyDown事件和PreviewKeyDown事件:处理键盘按键
KeyUp事件和PreviewKeyUp事件:处理要抬起的键盘按键
其中,KeyDown和KeyUp事件属于气泡路由事件,而PreviewKeyDown和PreviewKeyup属于隧道路由事件。

为了让元素接收键盘输入,元素必须能够获得焦点。默认情况下,大多数UIElement派生对象可以获得焦点。如果不是这种情况,则需要获取元素的焦点。将base元素上的Focusable属性设置为true。 Panel类(如StackPanel和Canvas)将Focusable的默认值设置为false。因此,要让这些对象获得键盘焦点,必须将Focusable设置为true。

二,鼠标和鼠标事件
WPF提供的System.Input.Mouse类提供了鼠标相关的事件,方法和属性,它们提供有关鼠标状态的信息。 类似于Keyboard类,其事件也由UIElement和其他基本元素提供。
(window.cproArray = window.cproArray.Push [] .Push({id:“u3054369”});
主要事件是以下组(每个事件包含XXX泡泡路由事件和PreviewXXX隧道路由事件)。
MouseDown,MouseUp事件:处理并抬起鼠标按钮。
MouseEnter,MouseLeave,MouseMove:处理鼠标输入并离开控件并继续控制
MouseWheel:处理鼠标滚轮滚动

另外,为了捕获鼠标位置,使用Mouse类的GetPosition方法,该参数是一个UIElement,它代表基于鼠标位置的控件的坐标系。

三、焦点处理

在WPF中,有两个与焦点有关的主要概念:键盘焦点和逻辑焦点。键盘焦点指接收键盘输入的元素,而逻辑焦点指焦点范围中具有焦点的元素。

1、键盘焦点:

键盘焦点指当前正在接收键盘输入的元素。在整个桌面上,只能有一个具有键盘焦点的元素。在WPF中,具有键盘焦点的元素会将IsKeyboardFocused设置为true。Keyboard类的静态属性FocusedElement获取当前具有键盘焦点的元素。

为了使元素能够获取键盘焦点,基元素的Focusable和IsVisible属性必须设置为true。有些类(如Panel基类)默认情况下将Focusable设置为false;因此,如果您希望此类元素能够获取键盘焦点,必须将Focusable设置为true。

可以通过用户与UI交互(例如,按Tab键定位到某个元素或者在某些元素上单击鼠标)来获取键盘焦点。还可以通过使用Keyboard类的Focus方法,以编程方式获取键盘焦点。Focus方法尝试将键盘焦点给予指定的元素。返回的元素是具有键盘焦点的元素,如果有旧的或新的焦点对象阻止请求,则具有键盘焦点的元素可能不是所请求的元素。

2、逻辑焦点

逻辑焦点指焦点范围中的FocusManager..::.FocusedElement。焦点范围是一个跟踪其范围内的FocusedElement的元素。键盘焦点离开焦点范围时,焦点元素会失去键盘焦点,但保留逻辑焦点。当键盘焦点返回到焦点范围时,焦点元素会再次获得键盘焦点。这使得键盘焦点可以在多个焦点范围之间切换,但确保了在焦点返回到焦点范围时,焦点范围中的焦点元素再次获得键盘焦点。

应用程序中有多个具有逻辑焦点的元素,但在特定的焦点区域中,只有一个具有逻辑焦点的元素。
GetFocusScope返回指定元素的焦点范围。

默认情况下,WPF是焦点类,具有Window,MenuItem,ToolBar和ContextMenu。

GetFocusedElement获取指定焦点区域的焦点元素。 SetFocusedElement将焦点元素设置在指定的焦点区域中。 SetFocusedElement通常用于设置初始焦点元素。

3,键盘导航
当您按导航键一段时间时,KeyboardNavigation类将负责实现默认的键盘焦点导航。 导航键有:Tab,Shift + Tab,Ctrl + Tab,Ctrl + Shift + Tab,上键,下键,左键和右键。

您可以通过设置其他KeyboardNavigation属性TabNavigation,ControlTabNavigation和DirectionalNavigation来更改导航容器的导航行为。 这些属性是KeyboardNavigationMode类型,可能有Continue,Local,Contained,Cycle,Once和None。 默认值是继续,这意味着该元素不是导航容器。

4.重点活动
与键盘焦点相关的事件包括PreviewGotKeyboardFocus,GotKeyboardFocus,PreviewLostKeyboardFocus和
LostKeyboardFocus。 这些事件被定义为Keyboard类的附加事件,但作为基本元素类的等价路由事件访问更方便。
当元素获得键盘焦点时,它将导致GotKeyboardFocus。 当元素失去键盘焦点时,它会触发LostKeyboardFocus。 如果处理PreviewGotKeyboardFocus事件或PreviewLostKeyboardFocusEvent事件并将Handled设置为true,则焦点不会更改。

WPF经典教程--键盘输入事件, 鼠标输入事件, 焦点处理相关推荐

  1. 鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc

    c语言高级编程技术教程 图形显示方式与鼠标输入 c语言高级编程技术教程 图形显示方式和鼠标输入 图形显示方式和鼠标输入 问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光 标将 ...

  2. qml开发笔记(七):输入元素鼠标输入MouseArea和键盘输入Keys

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  3. WPF and Silverlight 学习笔记(十四):键盘输入、鼠标输入、焦点处理[转]

    一.键盘类和键盘事件 WPF提供了基础的键盘类(System.Input.Keyboard类),该类提供与键盘相关的事件.方法和属性,这些事件.方法和属性提供有关键盘状态的信息.Keyboard的事件 ...

  4. 自动化测试——浏览器操作、键盘输入、鼠标操作事件

    文章目录 一.浏览器操作 1.打印Title 2.打印URL 3.浏览器的最大化 4.设置浏览器的宽和高 5.操作浏览器的前进和后退 6.控制滚动条控制 二.模拟键盘输入 1.导入键盘输入的包 2.登 ...

  5. 【Win32 API学习】模拟键盘输入和鼠标输入

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

  6. 模拟键盘输入和鼠标输入 winAPI

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

  7. 模拟键盘输入和鼠标输入

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

  8. html js鼠标滚轮事件,JS事件-鼠标滚轮事件

    之前学习了onmouseover,onmousedown等鼠标事件,今天来看看鼠标的滚轮事件,浏览器兼容一直是让人比较恶心的事情,今天就让我们将恶心进行到底,看看这个恶心的鼠标滚轮事件! 鼠标滚轮事件 ...

  9. java 计算器——加减乘除,键盘输入和鼠标输入

    这次的键盘输入我只是完成了基本的加减乘除,sin,cos等函数运算暂时没有考虑,但是这是一个可以用鼠标控制输入也可以键盘输入的计算器,主要功能: 按下home键--清零,清空结果文本框,可重新输入新的 ...

最新文章

  1. 练习5-2 找两个数中最大者 (10 分)
  2. Python基础 基本数据类型
  3. RabbitMQ队列持久化
  4. MyBatis 源码解读-获得Mapper 对象
  5. 梁迪:我为MVP骄傲,《微软最有价值专家奖励计划介绍》附专题视频
  6. 标称型数据和数值型数据_统计信息中的数据类型-标称,有序,间隔和比率数据类型,并举例说明
  7. MySQLdb查询有中文关键字查不到数据
  8. 20155302《网络对抗》Exp7 网络欺诈防范
  9. SAP接口编程之 JCo3.0 系列(03) : 表参数
  10. 电脑鼠标右键没有新建选项怎么办?
  11. 三阶魔方中心块调整公式及助记方法
  12. 轨道交通检测中心-轨道交通产品可靠性检测机构
  13. 设置linux服务器时间自动同步
  14. c++ 头歌实训 第四关 日历打印
  15. SNN系列|学习算法篇(1)Tempotron
  16. 职业理想规划计算机专业,计算机专业的职业生涯规划书范文
  17. js中new操作符具体做了什么
  18. HTML-图文排版如何以代码实现
  19. 解决 nginx 反向代理时的 upstream timeout 问题
  20. Android SnackBar

热门文章

  1. 一次性纸杯包含的测试点
  2. vscode按下ctrl键,点击鼠标别名跳转
  3. FreeSwitch VoiceMail 语音信箱 研究
  4. python 0o_python中0o1010是多少
  5. 2023高考志愿填报防骗指南来啦!
  6. WordPress网站首页好看的四格推荐广告代码
  7. 彩光价格一般是多少_彩光去斑费用价格一般需要多少
  8. 开工快乐,给大家发个国庆后的开工红包!
  9. MANET模拟器和拓扑可视化研究(Matlab代码实现)
  10. 阿里巴巴,果然开始拥有“预测未来”的能力了...