В настоящее время я использую 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 : Если есть лучший, более надежный способ установить положение курсора (даже если с ним связано много хлопот), пожалуйста, опубликуйте его.