Ich habe folgendes Problem:Schreib absolute Mausposition in TextBox
Ich habe ein Fenster mit zwei Textfelder. Wenn ich in ein Textfeld klicke und irgendwo anders klicke (auch außerhalb des Fensters), sollte die Mausklickposition in das Textfeld geschrieben werden.
Ich fand die MouseKeyHook
Bibliothek, in der eine Demo zeigt, wie die Mausposition in einer Windows-Form aktualisiert wird. Aber ich habe es noch nicht geschafft, den Code auf mein Problem anzuwenden. Ich weiß nicht einmal, wo ich den in der Demo gefundenen Code schreiben soll.
Was ich mit so weit kam ist folgende:
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);
}
}
}
Dies ist der Code für eine textBox. Wenn ich darauf klicke, werden x- und y-Koordinaten angezeigt. Sie sind nicht absolut, ich denke, das liegt an dem Parameter this
in der GetPosition
Methode. Was muss ich anstelle von this
wählen?
Eine andere Sache ist, dass die Position nicht immer aktualisiert wird. Wenn ich die Maus in die untere rechte Ecke meines Desktops bewege und dann die Textbox aktiviere, indem ich sie einraste, wird die Position nicht aktualisiert.
Was sind die Schritte hier zu tun?
Wenn Sie die absolute Position der Maus relativ zum Bildschirm abrufen und aktualisieren möchten, auch wenn Sie sich außerhalb des WPF-Fensters befinden, müssen Sie ein MouseHook verwenden (Verwendet Win32 API-Aufrufe, um die Position zu erhalten) und einen Timer, der die Position ermittelt und in Ihrem TextBlock anzeigt. –