2012-04-26 12 views
5

Fare koordinatlarına göre fare konumunu almak istiyorum. Bunu yapmak için aşağıdaki kodu kullanıyorum.Mouse Move WPF Ana Penceresinin Dışında Tetikleme Yok

window.PointToScreen(Mouse.GetPosition(window)); 

Beklendiği gibi çalışıyor. Ama benim MouseMove olayım MainWindow dışında ateş etmiyor. Bu, penceremi geri yüklediğimde fareyi masaüstünün üzerine getirirsem olur.

Herhangi bir fikir takdir edildi.

cevap

8

CaptureMouse() yöntemini kullanın. Yukarıdaki Örneğin

, eklemek olabilir:

window.CaptureMouse(); 

sizin kod-arkasında MouseDown olay işleyicisi içinde.

window.ReleaseMouseCapture(); 

sizin kod-arkasında MouseUp olay işleyicisi içinde:

Daha sonra araman gerekiyor.

+0

Çok yardımcı! teşekkürler – DevEstacion

1

Herhangi bir fare düğmesine basılmadan WPF penceresinin dışında fare konumunu yakalayabilmem gerekiyordu. Windows için bir olay yerine bir iş parçacığı ile birlikte bir WINAPI GetCursorPos çağırmak için Interop kullanarak sona erdi.

using System.Runtime.InteropServices; 
using Point = System.Drawing.Point; 

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool GetCursorPos(ref Point lpPoint); 

public MainWindow() 
    { 
     InitializeComponent(); 

     new Thread(() => 
     { 
      while (true) 
      { 
       //Logic 
       Point p = new Point(); 
       GetCursorPos(ref p); 

       //Update UI 
       Dispatcher.BeginInvoke(new Action(() => 
       { 
        Position.Text = p.X + ", " + p.Y; 
       })); 

       Thread.Sleep(100); 
      } 
     }).Start(); 
    } 
} 

Harika çalışıyor!

+0

UI kilitli ... – pix

+0

Üzgünüz Ben uyku (0) bu hata, hataya bağlı olarak, 100 gibi başka bir şeye değiştirin – Peheje

İlgili konular