2

パネルとパネル内に2つのボタンがあるWinFormアプリケーションがあります。パネルにmousemoveイベントを追加すると、予想どおり、パネル内でマウスを動かすと、mousemove関数が呼び出されます。

問題は、ボタンの上でマウスボタンを押すとボタンが押され、ボタンを押したままマウスをパネルに移動すると、マウスボタンを離すまでPanelmousemove関数が呼び出されないことです。

これに対する回避策はありますか?そして、私がはっきりしていない場合は、もっとはっきりさせようとすることができます。

4

1 に答える 1

1

そのため、ボタンが押され、マウスが下のパネルに戻っている間、パネルの MouseMove イベントは発生していないようです。

この時点で、ボタンの MouseMove にフックすることで、ポインターの位置をキャプチャできます。ただし、ポインターの位置はパネルではなくボタンに相対的であるため、これらの座標をボタンの位置座標に追加する必要があります。

Point mousePoint;

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    mousePoint = e.Location;
}

private void button1_MouseMove(object sender, MouseEventArgs e)
{
    mousePoint = new Point(button1.Location.X + e.Location.X, button1.Location.Y + e.Location.Y);
}
于 2012-11-15T04:56:40.143 に答える