У меня есть следующая проблема:Запись абсолютной позиции мыши в TextBox
У меня есть окно с двумя текстовыми полями. Когда я нажимаю в текстовом поле, а затем нажимаю в другом месте (даже вне окна), позиция щелчка мыши должна быть записана в текстовое поле.
Я нашел библиотеку MouseKeyHook
, в которой демонстрация показывает, как позиция мыши обновляется в форме окна. Но мне еще не удалось применить код к моей проблеме. Я даже не знаю, где я должен написать код, найденный в демо.
То, что я придумал до сих пор является следующее:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace LineClicker
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void StarttextBox_GotFocus(object sender, RoutedEventArgs e)
{
Mouse.Capture(StarttextBox);
StarttextBox.Text = string.Format(" x {0} , y {1}", PointToScreen(Mouse.GetPosition(this)).X, PointToScreen(Mouse.GetPosition(this)).Y);
}
}
}
Это код для одного TextBox. Когда я нажимаю на него, отображаются координаты x и y. Они не являются абсолютными, я думаю, что это связано с параметром this
в методе GetPosition
. Что мне нужно выбрать вместо this
?
Другое дело, что позиция не обновляется всегда. Когда я перемещаю мышь в нижний правый угол моего рабочего стола, а затем активирую текстовое поле, вставляя его в нее, позиция не обновляется.
Каковы шаги для этого?
Если вы хотите получить абсолютное положение мыши относительно экрана и обновить ее, даже если вы находитесь за пределами WPF Window, вам придется использовать MouseHook (использует вызовы API Win32 для получения позиции) , и таймер, который получает позицию и отображает ее в TextBlock. –