第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > WPF经典教程--键盘输入事件 鼠标输入事件 焦点处理

WPF经典教程--键盘输入事件 鼠标输入事件 焦点处理

时间:2019-02-22 21:42:27

相关推荐

WPF经典教程--键盘输入事件  鼠标输入事件  焦点处理

一、键盘和键盘事件

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,则焦点不会更改。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。