2009-01-13 26 views
17

Tôi muốn có thể truy cập vào tọa độ của con chuột cho dù con trỏ có nằm trên cửa sổ ứng dụng của tôi hay không.Làm cách nào để sử dụng CaptureMouse hoặc Mouse.Capture trong ứng dụng C# WPF của tôi?

Khi tôi sử dụng Mouse.Capture (IInputElement) hoặc UIElement.CaptureMouse(), cả hai đều không chụp được chuột và trả về false.

Điều gì có thể là vấn đề của tôi?

Các tập tin cs cho cửa sổ của tôi là như sau:

using System.Windows; 
using System.Windows.Input; 

namespace ScreenLooker 
{ 
    /// <summary> 
    /// Interaction logic for Window1.xaml 
    /// </summary> 
    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); 
     } 
    } 
} 

Trả lời

16

Việc kiểm soát thông qua với Mouse.Capture() cần phải được VisibleEnabled.

Thử đặt Mouse.Capture trong trình xử lý sự kiện Loaded, ví dụ:

Trong XAML:

<Window ... .. .. Title="My Window" loaded="Window_Loaded"> 
... 
</Window> 

Trong Mã số:

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

Tôi đã không chiếm được toàn bộ cửa sổ trước, vì vậy không chắc chắn về cách nó sẽ làm việc. Việc sử dụng điển hình của nó là.

  1. MouseDown: - gọi Mouse.Capture() về kiểm soát con
  2. MouseMove: - Quy trình X và Y coords chuột
  3. MouseUp: - gọi Mouse.Capture(null) để xóa chuột chụp sự kiện.
+0

Cảm ơn. Tôi đã kiểm tra xem cửa sổ đã được bật hay chưa, nhưng nó có hoạt động hay không. Ngay cả sau khi chụp chuột, MouseMove vẫn chỉ được nâng lên khi chuột ở trong cửa sổ. Có lẽ Capture không phải là những gì tôi muốn sau khi tất cả? –

Các vấn đề liên quan