如何在C#WPF应用程序中使用CaptureMouse或Mouse.Capture?
我希望能够访问鼠标的坐标,无论光标是否在我的应用程序的窗口上。
当我使用Mouse.Capture(IInputElement)或UIElement.CaptureMouse()时,两者都无法捕获鼠标并返回false。
可能是我的问题?
我窗口的cs文件如下:
using System.Windows; using System.Windows.Input; namespace ScreenLooker { /// /// Interaction logic for Window1.xaml /// public partial class Window1 : Window { public Window1() { InitializeComponent(); bool bSuccess = Mouse.Capture(this); bSuccess = this.CaptureMouse(); } protected override void OnMouseMove(MouseEventArgs e) { tbCoordX.Text = e.GetPosition(this).X.ToString(); tbCoordY.Text = e.GetPosition(this).Y.ToString(); //System.Drawing.Point oPoint = System.Windows.Forms.Cursor.Position; //tbCoordX.Text = oPoint.X.ToString(); //tbCoordY.Text = oPoint.Y.ToString(); base.OnMouseMove(e); } } }
传递给Mouse.Capture()
的控件需要是Visible和Enabled 。
尝试将Mouse.Capture放入Loaded
事件处理程序中,例如
在XAML中:
...
在代码中:
private void Window_Loaded(object sender, RoutedEventArgs e) { var b = Mouse.Capture(this); }
我之前没有拍过整个窗口,所以不确定它是如何工作的。 它的典型用法是。
- MouseDown: – 在子控件上调用
Mouse.Capture()
- MouseMove: – 处理鼠标的X和Y坐标
- MouseUp: – 调用
Mouse.Capture(null)
清除鼠标事件捕获。