私は現在、キャンバス上にカーソルの位置を設定するのにSetCursorPos(int x, int y)
を使用しています。これは、テキストボックスからカンマ区切りの座標を取得し、キャンバスを基準にしてそれを変換する翻訳を行う私のコードです。C#を使用してWPFでマウスポインタの位置を設定する最適な方法は何ですか?
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)
を使用して、私のキャンバスに相対座標表示する別のテキストボックスを持っている)。。すべてが正常に働いていたhere..moments前に起こっています。所望のマウス・コードをタイプすることにある。 &打つと、両方のテキストボックスが同じ座標を表示していました。しかし今、私はcoordをタイプします。 &が入力したら、それは2倍になります。すなわち、100,100を入力すると、カーソルは200,200に移動します(2番目のボックスに表示されます)。私は値を2で割って調整しましたが、カーソルは私が説明できない別の奇妙な場所に行きます。
PS:カーソルの位置を設定する方が良い(確かに面倒なことがあっても)、投稿してください。