フォームをドラッグして移動させる方法(C#用メモ)
フォームをマウスでドラッグして移動させる方法。
タイトルバーのないウィンドウも、この方法で移動させることが出来ます。
マウスのボタンが押されたとき、マウスポインタの位置を保存しておきます。
次にマウスが動いたとき、保存しておいたマウスポインタの位置と今の座標の差(移動距離)を計算し、フォームを移動させます。
// マウスポインタの位置を保存する private Point mousePoint; //マウスのボタンが押されたとき private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { //位置を記憶する mousePoint = new Point(e.X, e.Y); } } //マウスが動いたとき private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { this.Left += e.X - mousePoint.X; this.Top += e.Y - mousePoint.Y; } }
フォームの初期化処理で、MouseDown、MouseMoveイベントハンドラに、定義したメソッドを追加します。
// // コンストラクタ // public Form1() { : : // マウス移動イベントを追加 this.MouseDown += new MouseEventHandler(Form1_MouseDown); this.MouseMove += new MouseEventHandler(Form1_MouseMove); : : }
なお、この状態ではフォーム上でマウスをドラッグした場合は移動できますが、フォーム上のコントロールの上でドラッグした場合は移動できません。これを行うためには、そのコントロールのMouseDown、MouseMoveイベントハンドラにも、定義したメソッドを追加します。方法は、フォームのイベントハンドラに追加したのと同じです。