1

winforms C# プロジェクトに問題があります。

(実行時に) フォームの周りに新しい (カスタム) ボタンを移動したい。どうやってやるの?

    Button[] buttons = new Button[1000];
        int counter = 0;
        Button myText = new Button();
private void button2_Click(object sender, EventArgs e)
        {
                Button myText = new Button();
                myText.Tag = counter;
                myText.Location = new Point(x2,y2);
                myText.Text = Convert.ToString(textBox3.Text);
                this.Controls.Add(myText);
                myText.MouseMove += new MouseEventHandler(myText_MouseMove);
                myText.MouseDown += new MouseEventHandler(myText_MouseDown);
                buttons[counter] = myText;
                counter++;
        }
 public void myText_MouseMove(object sender, MouseEventArgs e)
        {
            int s = e.GetHashCode();
            int check = 0;
            for (int i = 0; i < counter; i++)
            {
                if (buttons[i].GetHashCode() == s)
                    check = i;
            }
            if (e.Button == MouseButtons.Left)
            {
                buttons[check].Left += e.X - move.X;
                buttons[check].Top += e.Y - move.Y;
            }
        }
        void myText_MouseDown(object sender, MouseEventArgs e)
        {
            move = e.Location;
        }

上記のコードを使用して新しいボタンを作成し、フォーム内で移動しようとしています。

ボタンを1つだけコーディングすると移動できますが、より多くのボタンに対してもこれを実行できるようにしたいと考えています。

4

2 に答える 2

2

これを試して

public void myText_MouseMove(object sender, MouseEventArgs e)
    {
        Button button = (Button)sender;
        if (e.Button == MouseButtons.Left)
        {
            button .Left += e.X - move.X;
            button .Top += e.Y - move.Y;
        }
    }
于 2012-04-21T13:34:13.607 に答える