新しいコントロールを画面上で簡単に移動できるようにラベルのオーバーライドを作成しました。ドラッグアンドドロップ - Winformsでのラベルの移動
私は以下のコードを添付しましたが、アプリケーションを実行したり、ラベルを移動しようとすると常にオフになっています。また時には完全に消えたり、トレイルを残したり、0,0の場所にリセットすることもあります。スクリーンショットを見てください。
私はこれを100%使用していましたが、最近調整した後、再び犬に行ってしまい、どのように動作させるかわかりません。
スクリーンショット:
コード:
internal sealed class DraggableLabel : Label
{
private bool _dragging;
private int _mouseX, _mouseY;
public DraggableLabel()
{
DoubleBuffered = true;
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (_dragging)
{
Point mposition = PointToClient(MousePosition);
mposition.Offset(_mouseX, _mouseY);
Location = mposition;
}
base.OnMouseMove(e);
}
protected override void OnMouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
_dragging = true;
_mouseX = -e.X;
_mouseY = -e.Y;
BringToFront();
Invalidate();
}
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (_dragging)
{
_dragging = false;
Cursor.Clip = new Rectangle();
Invalidate();
}
base.OnMouseUp(e);
}
}
これは、あなたが[バージョンコントロール](http://www.fortnet.org/FortNet/HTML/Presentation/CVS/whyvc.html)__を使用して将来起こることを防ぐことを示しています。 [このチュートリアル](http://hginit.com/01.html)で始めるのに役立つかもしれません。 – Adam
私はこれまで100%働いていたのとはまったく違った音を出しましたが、最近調整した後は再び犬に行ってしまいました。あなたが見ることができるように、あなたの質問に言及するのは害ではありません。 – Adam