Windowsフォームアプリケーション:
これは何時間も私を困惑させてきました。私がやろうとしているのは、ラベルを押し続けるとフォームが移動することです。
private void label1_MouseUp(object sender, MouseEventArgs e)
{
KeepMoving = false;
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
KeepMoving = true;
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (KeepMoving == true)
this.Location = new Point(MousePosition.X - (e.X + SystemInformation.FrameBorderSize.Width + label1.Left), MousePosition.Y - (e.Y + SystemInformation.CaptionHeight + label1.Top));
}
これが私が使用しているものです(もちろん、パブリックブールのKeepMovingを使用します)。
eXとeYを削除すると、すべて正常に機能しますが、ラベルの左上の位置を基準にしていますが、ラベル自体の位置が必要です。
メッセージボックスを使用してラベルのeXとeYの座標を表示すると、番号が正しく表示され、ラベルのどこをクリックしたかがわかります。上記のコードのポイントを使用すると、ラベルのどこをクリックしても番号は変わりません。移動しようとすると、30k以上の範囲になります。
MouseEventArgsが方程式で機能しないのはなぜですか?申し訳ありませんが、説明が不十分な場合は、できる限りのことを試みました。