2010年10月23日

フォームをドラッグして移動させる方法(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イベントハンドラにも、定義したメソッドを追加します。 方法は、フォームのイベントハンドラに追加したのと同じです。

良かったらクリックしてください
にほんブログ村 IT技術ブログ プログラム・プログラマーへ  人気ブログランキングへ

posted by among at 19:25 | Comment(0) | TrackBack(0) | C#
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/43938582

この記事へのトラックバック