如何在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()的控件需要是VisibleEnabled

尝试将Mouse.Capture放入Loaded事件处理程序中,例如

在XAML中:

  ...  

在代码中:

 private void Window_Loaded(object sender, RoutedEventArgs e) { var b = Mouse.Capture(this); } 

我之前没有拍过整个窗口,所以不确定它是如何工作的。 它的典型用法是。

  1. MouseDown: – 在子控件上调用Mouse.Capture()
  2. MouseMove: – 处理鼠标的X和Y坐标
  3. MouseUp: – 调用Mouse.Capture(null)清除鼠标事件捕获。