欢迎来到天天文库
浏览记录
ID:30240490
大小:88.04 KB
页数:7页
时间:2018-12-28
《键盘输入、鼠标输入、焦点处理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、键盘类和键盘事件WPF提供了基础的键盘类(System.Input.Keyboard类),该类提供与键盘相关的事件、方法和属性,这些事件、方法和属性提供有关键盘状态的信息。Keyboard的事件也通过UIElement等XAML基元素类的事件向外提供。对于键盘操作,其常用的事件有两组:·KeyDown事件和PreviewKeyDown事件:处理键盘键按下·KeyUp事件和PreviewKeyUp事件:处理键盘键抬起其中KeyDown和KeyUp事件属于冒泡路由事件,而PreviewKeyDown和PreviewKeyup属于隧道
2、路由事件。为了使元素能够接收键盘输入,该元素必须可获得焦点。默认情况下,大多数UIElement派生对象都可获得焦点。如果不是这样,则要使元素可获得焦点,请将基元素上的Focusable属性设置为true。像StackPanel和Canvas这样的Panel类将Focusable的默认值设置为false。因此,对要获取键盘焦点的这些对象而言,必须将Focusable设置为true。例如:在笔者的Notebook中有“静音”、“增大音量”、“减小音量”这三个快捷键,在一个应用程序的窗体上处理这三个键的点击可以:1:3、lass="InputCommandAndFocus.Window1"2:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3:xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4:Title="Window1"Height="300"Width="480"5:Focusable="True"PreviewKeyDown="Window_PreviewKeyDown">6:7:4、--...-->8:9:1:privatevoidWindow_PreviewKeyDown(objectsender,KeyEventArgse)2:{3:if(e.Key==Key.VolumeMute)4:{5://按下“静音”键6:txtMessage.Text="Mute";7:e.Handled=true;8:}9:elseif(e.Key==Key.VolumeUp)10:{11://按下“增大音量”键12:txtMessage.Text="Up";13:e.Handled=true5、;14:}15:elseif(e.Key==Key.VolumeDown)16:{17://按下“减小音量”键18:txtMessage.Text="Down";19:e.Handled=true;20:}21:}二、鼠标类和鼠标事件WPF提供的System.Input.Mouse类提供与鼠标相关的事件、方法和属性,这些事件、方法和属性提供有关鼠标状态的信息。与Keyboard类类似,其事件也通过UIElement等基元素向外提供。其事件主要有以下几组(每个事件均包含XXX冒泡路由事件和PreviewXXX隧道路由事件)·Mouse6、Down、MouseUp事件:处理鼠标键的按下与抬起·MouseEnter、MouseLeave、MouseMove:处理鼠标进入、离开控件及在控件上移动·MouseWheel:处理鼠标滚轮滚动另外,对于鼠标位置的捕获,使用Mouse类的GetPosition方法,其参数是一个UIElement,表示其鼠标位置基于哪一个控件的坐标系。例如,对于一个矩形图形,设置其鼠标的各种事件:1:7、Stroke="Black"Width="200"Fill="White"3:MouseEnter="mainRectangle_MouseEnter"MouseLeave="mainRectangle_MouseLeave"4:MouseMove="mainRectangle_MouseMove"MouseDown="mainRectangle_MouseDown"5:MouseWheel="mainRectangle_MouseWheel"/>1:privatevoidmainRectangle_MouseEnter(objec8、tsender,MouseEventArgse)2:{3://鼠标进入控件时,控件的颜色为红色4:mainRectangle.Fill=newSolidColorBrush(Colors.Red);5:}6: 7:privatevoi
3、lass="InputCommandAndFocus.Window1"2:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3:xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4:Title="Window1"Height="300"Width="480"5:Focusable="True"PreviewKeyDown="Window_PreviewKeyDown">6:7:4、--...-->8:9:1:privatevoidWindow_PreviewKeyDown(objectsender,KeyEventArgse)2:{3:if(e.Key==Key.VolumeMute)4:{5://按下“静音”键6:txtMessage.Text="Mute";7:e.Handled=true;8:}9:elseif(e.Key==Key.VolumeUp)10:{11://按下“增大音量”键12:txtMessage.Text="Up";13:e.Handled=true
4、--...-->8:
5、;14:}15:elseif(e.Key==Key.VolumeDown)16:{17://按下“减小音量”键18:txtMessage.Text="Down";19:e.Handled=true;20:}21:}二、鼠标类和鼠标事件WPF提供的System.Input.Mouse类提供与鼠标相关的事件、方法和属性,这些事件、方法和属性提供有关鼠标状态的信息。与Keyboard类类似,其事件也通过UIElement等基元素向外提供。其事件主要有以下几组(每个事件均包含XXX冒泡路由事件和PreviewXXX隧道路由事件)·Mouse
6、Down、MouseUp事件:处理鼠标键的按下与抬起·MouseEnter、MouseLeave、MouseMove:处理鼠标进入、离开控件及在控件上移动·MouseWheel:处理鼠标滚轮滚动另外,对于鼠标位置的捕获,使用Mouse类的GetPosition方法,其参数是一个UIElement,表示其鼠标位置基于哪一个控件的坐标系。例如,对于一个矩形图形,设置其鼠标的各种事件:1:7、Stroke="Black"Width="200"Fill="White"3:MouseEnter="mainRectangle_MouseEnter"MouseLeave="mainRectangle_MouseLeave"4:MouseMove="mainRectangle_MouseMove"MouseDown="mainRectangle_MouseDown"5:MouseWheel="mainRectangle_MouseWheel"/>1:privatevoidmainRectangle_MouseEnter(objec8、tsender,MouseEventArgse)2:{3://鼠标进入控件时,控件的颜色为红色4:mainRectangle.Fill=newSolidColorBrush(Colors.Red);5:}6: 7:privatevoi
7、Stroke="Black"Width="200"Fill="White"3:MouseEnter="mainRectangle_MouseEnter"MouseLeave="mainRectangle_MouseLeave"4:MouseMove="mainRectangle_MouseMove"MouseDown="mainRectangle_MouseDown"5:MouseWheel="mainRectangle_MouseWheel"/>1:privatevoidmainRectangle_MouseEnter(objec
8、tsender,MouseEventArgse)2:{3://鼠标进入控件时,控件的颜色为红色4:mainRectangle.Fill=newSolidColorBrush(Colors.Red);5:}6: 7:privatevoi
此文档下载收益归作者所有