Каков наилучший способ установить положение указателя мыши в WPF с помощью C # - PullRequest
0 голосов
/ 18 октября 2011

В настоящее время я использую SetCursorPos(int x, int y), чтобы установить позицию курсора на холсте. Это мой код, который берет координаты, разделенные запятыми, из текстового поля и переводит их относительно моего 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);
}

Странные вещи происходят здесь ... несколько минут назад все работало нормально ... (У меня есть другое текстовое поле, которое непрерывно отображает координаты курсора относительно моего Canvas, используя e.GetPosition(canvas)). и при наборе желаемой координаты мыши. И, нажав Enter, оба текстовых поля отображали одинаковые координаты (что должно быть). Но сейчас , когда я набираю любую координату. & нажмите Enter, оно станет вдвое больше, чем должно. т.е. при наборе 100 100 мой курсор переходит на 200 200 (который отображается во 2-м поле). Я поделил значения на 2 для настройки, но затем курсор переместился в другое странное место, которое я не могу объяснить.

PS : Если есть лучший, более надежный способ установить положение курсора (даже если с ним связано много хлопот), пожалуйста, опубликуйте его.

1 Ответ

0 голосов
/ 23 октября 2011

Ну, первый самый очевидный вопрос - что изменилось между «моментами назад» и сейчас? Компьютерное программное обеспечение, как правило, не меняет свою производительность без каких-либо изменений.

Но, чтобы помочь вам отладить, попробуйте следующее:

  1. Если вы вызываете SetCursorPos с фиксированными значениями, указатель мыши перемещается в правильное местоположение?
  2. Вы пытались пройтись по коду с помощью отладчика, чтобы увидеть, все ли значения рассчитаны так, как должны?
  3. Вы проверили, выполняют ли оба текстовых поля один и тот же код изменения курсора мыши? (из вашего описания проблемы я бы осмелился предположить, что что-то выполняется дважды , таким образом, расположение курсора удваивается )
...