0

別のパネル (panel1) 内にパネル (panel2) があります。panel1 のマウス位置を取得したいのですが、マウスを panel2 の上に移動すると、次のコードが機能しなくなります。

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        label1.Text = "Offset: " + e.X + " x " + e.Y;
    }

マウスが panel2 の上にある場合でも、マウスの引数を読み取るにはどうすればよいですか? ありがとう!

編集: パネル 2 は、パネル 1 の中心 x=100、y=100 にあります。マウスを panel2 の左上隅に移動すると、1x1 などの座標が表示されます。ここで、101x101 のように panel1 に配置する必要があります。

編集 2: ドラッグしようとはしていません。元のパネル (panel1) の座標を読み取るだけで、panel2 をズームするためのオフセットを計算できます。したがって、必要なのは mousemove だけで、他には何もありません。ありがとう

4

4 に答える 4

0

他のパネルのイベントにも割り当てる必要があります。

于 2013-06-13T14:02:40.103 に答える
0

イベント ハンドラーを panel2 に配置してから、panel1 と panel2 の left/top プロパティを使用して、panel2 内のマウス位置をオフセットして、panel1 内の目的の位置を取得できませんか?

于 2013-06-13T14:08:25.213 に答える
0

また、2 番目のパネルにイベントを割り当てるのが最善だと思います。マウスがパネル 1 にある場合、座標は直接提供されます。パネル 2 にある場合は、両方のパネル間の相対的な位置を考慮して変換されます (非常に簡単: X/Y 位置の変動。値はハードコードする必要はありませんが、実行時に更新されます)。

于 2013-06-13T14:20:45.273 に答える