它在一个特定的控制范围内工作,但并不能用于具体的控制.
如何直接从屏幕(没有平台调用)获取鼠标位置和使用鼠标事件独立于任何控件?
2需要点数:
鼠标不在控件内,而是在屏幕上的鼠标事件.
鼠标位置不在控件内,而是在屏幕上.
应该在不使用Platform Invoke的情况下解决.
接下来两个不工作:
System.Windows.Input.Mouse.GetPosition(this)
没有把鼠标放在一个特定的控件上.
System.Windows.Forms.Cursor.Position.X
System.Windows.Forms.Cursor.Position不起作用,因为它在WPF应用程序中没有类型,但它在Windows窗体应用程序中起作用.
IntelliSense获取System.Windows.Forms.Cursor.Position,但它没有得到任何类型的位置,因此我无法得到:
Position.X Position.Y
和
Point pointToWindow = Mouse.GetPosition(this); Point pointToScreen = PointToScreen(pointToWindow);
没有把鼠标放在一个特定的控件上.
解决方法
使用控件的MouseDown事件可以尝试这样:
var point = e.GetPosition(this.YourControl);
编辑:
您可以使用Mouse.Capture(YourControl)将鼠标事件捕获到特定控件;所以它将捕获鼠标事件,即使它不在该控件上.这是link