win7鼠标左键(win7鼠标左键变成了右键属性)
摘要
鼠标输入也是一种常见的WPF事件类型,主要通过鼠标的操作来触发事件。常见的鼠标事件有MouseEnter和MouseLeave,分别是在鼠标移动到组件上和离开组件时触发的,这两个事件都是直接事件,尽在某个元素上触发,不会传播到别的元素上。除了这两种比较简单的直接时间,也包括一些冒泡路由事件和隧道路由事件,比如:PreviewMouseMove、MouseMove等
正文
鼠标单击
鼠标单击鼠标单击分为鼠标左键和鼠标右键的单击,常见的鼠标单击事件会触发以下事件:PreviewMouseLeftButtonDown
PreviewMouseRightButtonDown
MouseLeftButtonDown
MouseRightButtonDown
PreviewMouseLeftButtonUp
PreviewMouseRightButtonUp
MouseLeftButtonUp
MouseRightButtonUp
Preview一般是隧道
捕获鼠标
如果我们希望只能某个组件独占鼠标,那么我们利用鼠标捕获,让该组件捕获鼠标,从而鼠标点击其他组件时无法进入到响应函数中。
privatevoidWindow_MouseDown(objectsender,MouseButtonEventArgse){lblPostion.Content=e.GetPosition(rect);}privatevoidWindow_MouseMove(objectsender,MouseEventArgse){lblPostion.Content=e.GetPosition(rect);}privatevoidbtnCapture_Click(objectsender,RoutedEventArgse){Mouse.Capture(this.rect);}
拖拽
鼠标拖放就是将窗口内某个元素拖离原来位置并放置到窗口的其他位置上,一般拖放分为三个步骤:
鼠标单击选择要拖放的元素;鼠标左键按住不放移动元素使其位置发生变化;鼠标松开左键将元素放置在某个位置。AllowDrop="True"
privatevoidlbl1_MouseDown(objectsender,MouseButtonEventArgse){Labellbl=(Label)sender;DragDrop.DoDragDrop(lbl,lbl.Content,DragDropEffects.Copy);}private电脑voidlbl2_Drop(objectsender,DragEventArgse){lbl2.Content=e.Data.GetData(DataFormats.Text);}
做一个拖拽的例子
MouseMove
MouseLeftButtonUp
MouseLeftButtonDown
当Down,捕获鼠标
当Up,释放鼠标
当Move,修改Top,Left,
.SetValue(Canvas.LeftProperty,point.X-mouseOffset.X);
.SetValue(Canvas.TopProperty,point.Y-mouseOffset.Y);
写一个简单拖拽类
internalclassDragClass{boolisDrag=false;PointmouseOffset;publicCanvascav{get;set;}publicSystem.Windows.UIElementui{get;set;}publicDragClass(Canvascav,System.Windows.UIElementui){this.cav=cav;this.ui=ui;this.ui.MouseLeftButtonDown+=Ui_MouseLeftButtonDown;this.ui.MouseLeftButtonUp+=Ui_MouseLeftButtonUp;this.ui.MouseMove+=Ui_MouseMove;}privatevoidUi_MouseMove(object电脑sender,MouseEventArgse){if(isDrag){Pointpoint=e.GetPosition(this.cav);((System.Windows.UIElement)sender).SetValue(Canvas.TopProperty,point.Y-mouseOffset.Y);((System.Windows.UIElement)sender).SetValue(Canvas.LeftProperty,point.X-mouseOffset.X);}}privatevoidUi_MouseLeftButtonUp(objectsender,MouseButtonEventArgse){if(isDrag){((System.Windows.UIElement)sender).ReleaseMouseCapture();isDrag=false;}}privatevoidUi_MouseLeftButtonDown(objectsender,MouseButtonEventArgse){isDrag=true;mouseOffset=e.GetPosition((System.Windows.IInputElement)sender);((System.Windows.UIElement)sender).CaptureMouse();}}
DragClassdrap1=newDragClass(this.cav,this.rect1);DragClassdrap2=newDragClass(this.cav,this.rect2);DragClassdrap3=电脑newDragClass(this.cav,this.rect3);DragClassdrap4=newDragClass(this.cav,this.rect4);电脑电脑