WPF鼠标事件简介

91 篇文章 1 订阅
24 篇文章 1 订阅
主要有以下几种事件:
主要事件子事件触发条件 
MouseHover 鼠标悬停在控件发生 
MouseLeave 鼠标离开控件时发生EventHandler
MouseEnter 鼠标进入控件时发生EventHandler
MouseMove 鼠标移动过程中重复发生MouseEventHandler
MouseDown 鼠标键按下时发生MouseEventHandler
MouseLeftButtonDown鼠标左键按下时发生 
MouseRightButtonDown鼠标右键按下时发生 
MouseUp 鼠标键松开时发生MouseEventHandler
MouseLeftButtonUp鼠标左键松开时发生 
MouseRightButtonUp鼠标右键松开时发生 
MouseWheel 鼠标滚轮滚动时发生MouseEventHandler

 

另外还有Preview+事件   如: PreviewMouseMove 等等事件,   先于正常的鼠标事件发生。

发生顺序:

鼠标事件按以下顺序发生:

MouseEnter

MouseMove

MouseHover / MouseDown / MouseWheel

MouseUp

MouseLeave

 

与组件的绑定

组件名称.事件名称+=new System.EventHandler(事件名称);

OR 组件名称.事件名称+=new System.MouseEventHandler(事件名称);

 

 

鼠标事件使用条件

某些控件的功能增强: TreeView里面元素的拖动

或者自定义控件的许多功能: flash的时间轴

 

 

控件内拖动功能举例:

 

l  获得MouseDown时position。

l  在 MouseMove中检查鼠标左键按下情况 和 鼠标移动情况。

l  把移动的举例和系统提供的SystemParameters.MinimumHorizontalDragDistance比较

如:

Math.Abs(now.X-start.X)>SystemParameters.MinimumHorizontalDragDistance

l  在MouseUp中根据左键的释放情况,判断释放拖动完成,然后做相应处理。

 

 

 

特殊问题解决

我们在编写程序代码过程中可能遇到某些鼠标事件完全不被触发的情况,如果你的MouseDown不触发,那么你可以试试PreviewMouseDown事件,其他事件类似,具体什么原因,我也不清楚,感觉MouseDown 与 PreviewMouseDown是两套独立的事件链,互相不影响。

MouseMove的触发不是按固定位移量触发的,(例如:鼠标滑动选择元件,若鼠标移动太快,某些被划过的元件就不被选择了),所以某些情况下在MouseMove里处理 不太可靠。

WPF(Windows Presentation Foundation)是一种用于创建用户界面的框架,它提供了丰富的功能和灵活性。在WPF中,可以使用鼠标事件来响应用户的鼠标操作。 WPF窗体中的鼠标事件包括以下几种: 1. MouseDown:当鼠标按下时触发的事件。 2. MouseUp:当鼠标释放时触发的事件。 3. MouseMove:当鼠标移动时触发的事件。 4. MouseEnter:当鼠标进入窗体区域时触发的事件。 5. MouseLeave:当鼠标离开窗体区域时触发的事件。 6. MouseDoubleClick:当鼠标双击时触发的事件。 要使用这些鼠标事件,可以在XAML中为窗体或其他UI元素添加相应的事件处理程序,也可以在代码中通过订阅事件来实现。 以下是一个示例,演示如何在WPF窗体中处理鼠标事件: ```xaml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF Mouse Events" Height="450" Width="800" MouseDown="Window_MouseDown" MouseUp="Window_MouseUp" MouseMove="Window_MouseMove" MouseEnter="Window_MouseEnter" MouseLeave="Window_MouseLeave" MouseDoubleClick="Window_MouseDoubleClick"> <Grid> <!-- 窗体内容 --> </Grid> </Window> ``` ```csharp public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_MouseDown(object sender, MouseButtonEventArgs e) { // 鼠标按下事件处理逻辑 } private void Window_MouseUp(object sender, MouseButtonEventArgs e) { // 鼠标释放事件处理逻辑 } private void Window_MouseMove(object sender, MouseEventArgs e) { // 鼠标移动事件处理逻辑 } private void Window_MouseEnter(object sender, MouseEventArgs e) { // 鼠标进入窗体事件处理逻辑 } private void Window_MouseLeave(object sender, MouseEventArgs e) { // 鼠标离开窗体事件处理逻辑 } private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e) { // 鼠标双击事件处理逻辑 } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值