0

我目前正在使用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:如果有更好,更可靠的方法来设置光标的位置(即使它有很多相关的麻烦),请发布。

4

1 回答 1

0

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

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

  1. 如果您调用具有固定值的 SetCursorPos,鼠标指针会转到正确的位置吗?
  2. 您是否尝试过使用调试器单步执行代码以查看是否所有值都按应有的方式计算?
  3. 您是否检查过两个文本框是否执行相同的鼠标光标更改代码?(根据您的问题描述,我敢猜测某些东西被执行了两次,因此光标位置加倍
于 2011-10-23T17:11:07.267 回答