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);
}
ここで奇妙なことが起こっています。少し前にすべてが正常に機能していました。(使用してキャンバスに相対的なカーソル座標を継続的に表示する別のテキストボックスがありますe.GetPosition(canvas)
)。目的のマウス座標を入力します。&Enterキーを押すと、両方のテキストボックスに同じ座標が表示されていました(そうあるべきです)。しかし今、私が任意の座標を入力すると。&Enterキーを押すと、本来の2倍になります。つまり、100,100と入力すると、カーソルが200,200に移動します(2番目のボックスに表示されます)。値を2で割って調整しましたが、説明できない別の奇妙な場所にカーソルが移動します。
PS:カーソルの位置を設定するためのより良い、より確実な方法がある場合(それが多くの面倒を伴う場合でも)、それを投稿してください。