Я хочу иметь доступ к координатам мыши независимо от того, находится ли курсор над окном моего приложения.
Когда я использую Mouse.Capture (IInputElement) или UIElement.CaptureMouse (), оба не могут захватить мышь и возвращают false.
В чем может быть моя проблема?
Файл cs для моего окна выглядит следующим образом:
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);
}
}
}





Управление, переданное Mouse.Capture(), должно быть Видимый и Включено.
Попробуйте поместить Mouse.Capture в обработчик событий Loaded, например
В XAML:
<Window ... .. .. Title = "My Window" loaded = "Window_Loaded">
...
</Window>
В коде:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var b = Mouse.Capture(this);
}
Раньше я не снимал все окно целиком, поэтому не уверен, как это будет работать. Типичное его использование.
Mouse.Capture() на дочернем элементе управленияMouse.Capture(null), чтобы очистить захват событий мыши.
Спасибо. Я проверил, включено ли окно, но не было ли оно активным. Даже после захвата мыши MouseMove все еще поднимается, только когда мышь находится в окне. Может быть, Capture - это не то, что мне нужно?