0

だから私はグーグルで少し検索して、マウスでボタンをドラッグするコードを見つけました。これらのどれも実際にはうまくいきませんでしたが、私はたくさん見つけました。

だから私はあなたに尋ねます!:-)

私のフォームで動作させようとしているコード:

bool isDragged = false;
  Point ptOffset;
  private void button1_MouseDown( object sender, MouseEventArgs e )
  {
     if ( e.Button == MouseButtons.Left )
     {
        isDragged = true;
        Point ptStartPosition = button1.PointToScreen(new Point(e.X, e.Y));

        ptOffset = new Point();
        ptOffset.X = button1.Location.X - ptStartPosition.X;
        ptOffset.Y = button1.Location.Y - ptStartPosition.Y;
     }
     else
     {
        isDragged = false;
     }
  }

  private void button1_MouseMove( object sender, MouseEventArgs e )
  {
     if ( isDragged )
     {
        Point newPoint = button1.PointToScreen(new Point(e.X, e.Y));
        newPoint.Offset(ptOffset);
        button1.Location = newPoint;
     }
  }

  private void button1_MouseUp( object sender, MouseEventArgs e )
  {
     isDragged = false;
  }

もちろん、pictureBox1 を button1 に変更しました。

しかし、私はこれを機能させることができません。

理由を知っている人はいますか?

ああ、これをすべてのボタンで使用したいのですが、すべてのボタンで機能させるには、button1 を何に置き換えればよいでしょうか?

-ところで、私はVisual Studio Expressを使用しています。

前もって感謝します!

4

2 に答える 2

1

Windowsフォームに関しては、私は本当にただのコピーペーストですが

あなたが投稿したコードは、実際にはそれ自体では何もしません!

動作させるには、コントロールの MouseDown() および MouseMove() イベントをこれらのメソッドに接続する必要があります。

  1. フォーム (pictureBox1) 上のコントロールを選択します。
  2. プロパティ ペイン (デフォルトでは右下) で、[Lightning Bolt] アイコンをクリックして、そのコントロールのイベントのリストを取得します。
  3. MouseDownエントリを見つけて、その右側にあるドロップダウンを に変更しpictureBox1_MouseDownます。
  4. MouseMoveエントリを見つけて、その右側にあるドロップダウンを に変更しpictureBox1_MouseMoveます。

それを実行して、pictureBox1 をドラッグします。

編集:以下の私のコメントで概説されているように、複数のコントロールに対してコードを機能させる方法を次に示します。

    bool isDragged = false;
    Point ptOffset;

    private void button1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            isDragged = true;
            Button btn = (Button)sender;
            ptOffset = new Point(btn.Location.X - Cursor.Position.X, btn.Location.Y - Cursor.Position.Y);
        }
        else
        {
            isDragged = false;
        }
    }

    private void button1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDragged)
        {
            Point newPoint = Cursor.Position;
            newPoint.Offset(ptOffset);
            Button btn = (Button)sender;
            btn.Location = newPoint;
        }
    }

    private void button1_MouseUp(object sender, MouseEventArgs e)
    {
        isDragged = false;
    }
于 2013-11-07T02:17:04.690 に答える