繁体   English   中英

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

[英]What is the best possible method to set the position of Mouse Pointer in WPF using C#

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

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)连续显示相对于Canvas的光标坐标)。 并键入所需的鼠标坐标。 然后按Enter键,两个文本框都显示相同的坐标(应该是)。 但是现在 ,当我键入任何坐标时。 并按Enter键,它将变成应有的两倍。 例如,在输入100,100时,我的光标将移至200,200(在第二个框中显示)。 我将值除以2进行调整,但随后光标移到了另一个我无法解释的怪异位置。

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

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

但是为了帮助您调试,请尝试以下方法:

  1. 如果使用固定值调用SetCursorPos,鼠标指针是否会移至正确的位置?
  2. 您是否尝试过使用调试器单步执行代码,以查看是否所有值均按预期方式计算?
  3. 您是否检查过两个文本框是否执行相同的鼠标光标更改代码? (根据您的问题描述,我敢于猜测某事正在执行两次 ,因此光标位置被加倍了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM