使用c#在WPF中设置鼠标指针位置的最佳方法是什么?

本文关键字:最佳 方法 是什么 位置 鼠标指针 WPF 设置 使用 | 更新日期: 2023-09-27 18:11:26

我目前使用SetCursorPos(int x, int y)来设置光标在画布上的位置。这是我的代码,它从文本框中获取逗号分隔的坐标,并进行一些转换以将其转换为相对于我的画布。

if (e.Key == Key.Enter)
{
    string[] s = setcoordinatesTB.Text.Split(", ".ToCharArray());
    if (s.Length != 2) return;
    int x,y;
    bool r1 = int.TryParse(s[0], out x);
    bool r2 = int.TryParse(s[1], out y);
    if (!(r1 && r2)) return;
    Point rel = canvas.TranslatePoint(new Point(x, y), window);
    SetCursorPos( x + (int)window.Left + 10 + (int)rel.X, y + (int)window.Top + 32 + (int)rel.Y);
}
奇怪的事情发生了,刚才一切都很好…(我有另一个文本框,连续显示光标坐标相对于我的画布使用e.GetPosition(canvas))。然后输入所需的鼠标键。按下回车键,两个文本框显示相同的字符串(应该是)。但是现在,当我键入任何代码时。&按下回车键,它变成了原来的两倍。例如,在输入100,100时,光标变为200,200(显示在第二个框中)。我把值除以2来调整,但是,然后,光标转到另一个奇怪的位置,我无法解释。

PS:如果有更好,更可靠的方法来设置光标的位置(即使它有很多麻烦),请发布。

使用c#在WPF中设置鼠标指针位置的最佳方法是什么?

好吧,第一个最明显的问题是-"片刻之前"answers"现在"之间发生了什么变化?计算机软件通常不会在不改变某些内容的情况下改变其输出。

但是为了帮助您调试,请尝试以下操作:

  1. 如果你用固定的值调用SetCursorPos,鼠标指针会到正确的位置吗?
  2. 你有没有试过步进你的代码与调试器,看看是否所有的值计算,因为他们应该?
  3. 是否检查了两个文本框是否执行相同的鼠标光标更改代码?(从你的问题描述中,我敢猜测有些东西是被执行两次,因此光标位置是翻倍)