七月 8

wpf之理解鼠标输入事件

MouseEnter事件:当鼠标移动到某个元素上时,就触发MouseEnter事件。需要注意的是,这是一个直接事件。

MouseLeave事件:当鼠标指针离开某个元素时,就触发MouseLeave事件。这个事件也是一个直接事件。

PreviewMouseMove事件:移动鼠标时就会触发这个隧道事件。事件会提供一个MouseEventArgs对象。这个对象包含鼠标此时状态的一些属性,还有一个叫做GetPosition()的方法可以获得鼠标的坐标。GetPosition()方法中的参数为坐标所在的坐标系,一般情况下用this即可。GetPosition()返回的为一个类型为Point数据。因此,使用GetPosition()方法的一个案例为:

Point pt = e.GetPosition(this);

MouseMove事件:与PreviewMouseMove对应的冒泡事件。

鼠标单击事件

PreviewMouseLeftButtonDown以及PreviewMouseRightButtonDown事件:按下鼠标时触发的隧道事件。

MouseLeftButtonDown以及MouseRightButtonDown事件:按下鼠标时触发的冒泡事件。

PreviewMouseLeftButtonUp以及PreviewMouseRightButtonUp事件:释放鼠标时触发的隧道事件。

MouseLeftButtonUp以及MouseRightButtonUp事件:释放鼠标时触发的隧道事件。

这些鼠标单击事件都会提供一个MouseButtonEventArgs的对象。值得注意的是,Windows程序一般是对Up类事件进行相应,而不是对Down事件进行相应。

鼠标捕获事件

绝大多数时候,在一个鼠标按键按下的动作之后,紧接着会有一个鼠标按键释放的动作。然而,在有的时候也并非如此。例如,我们可能在按下鼠标按键之后先把鼠标移动出这个点击的元素再释放。这样,接收鼠标按下动作的元素就无法接收鼠标释放的动作了。如果我们希望这个元素仍然能够接收鼠标释放的动作,就需要使用鼠标捕获事件,让这个元素捕获鼠标。这样,无论鼠标在按下后移动到哪里,这个元素都可以接收到鼠标释放的动作。需要注意的是,一旦鼠标被某一个元素捕获之后,其他的元素就无法接收鼠标的信息了。

示例:Mouse.Capture(this.button1); //让button1捕获鼠标。

鼠标拖放事件

鼠标拖放事件一般首先在拖拽源的MouseDown函数中定义:

DragDrop.DoDragDrop(dragSource, dragContent, DragDropEffects.(对应的枚举))

接收拖拽的元素首先要在XAML中设定AllowDrop为True。这样才能接收拖拽过来的数据。然后,要在接收拖拽的元素上添加Drop事件,并进行设置:

((将Object转化为的类型)sender).Content = e.Data.GetData(DataFormats.Text);

温馨提示:TextBox自带拖放功能。



文章由安静原创,发表于www.ajnote.com。转载请注明出处

发表 2019年7月8日 自 anjing 类别 "C#学习笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注