2011-10-17 14 views
0

私は現在、キャンバス上にカーソルの位置を設定するのに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:カーソルの位置を設定する方が良い(確かに面倒なことがあっても)、投稿してください。

答えて

0

最初のほとんどのobviouseの質問は - "瞬間の前"と今の間に何が変わったでしょうか?コンピュータソフトウェアは通常、何か変更がなければ出力を変更しません。

しかし、あなたはデバッグに役立つ次のことを試してみる:

  1. あなたは固定値でSetCursorPosを呼び出すと、マウスポインタが正しい場所に行くんは?
  2. デバッガでコードをステップ実行して、すべての値が計算されているかどうかを確認しましたか?
  3. 両方のテキストボックスで同じマウスカーソルがコードを変更しているかどうかを確認しましたか?
を(問題の記述から、私はこのようにカーソル位置が を倍増している、何かが が二回実行されていることを推測あえてだろう)
関連する問題