如何动态地向我的表单添加按钮?

noD*_*ame 18 c# dynamic button winforms

当我点击button1时,我想在表单上创建10个按钮.下面的代码没有错误,但它也不起作用.

private void button1_Click(object sender, EventArgs e)
{
    List<Button> buttons = new List<Button>();
    for (int i = 0; i < buttons.Capacity; i++)
    {
        this.Controls.Add(buttons[i]);   
    }
}
Run Code Online (Sandbox Code Playgroud)

Igb*_*man 22

您没有创建任何按钮,只有一个空列表.

您可以忘记列表,只需在循环中创建按钮.

private void button1_Click(object sender, EventArgs e) 
{     
     int top = 50;
     int left = 100;

     for (int i = 0; i < 10; i++)     
     {         
          Button button = new Button();   
          button.Left = left;
          button.Top = top;
          this.Controls.Add(button);      
          top += button.Height + 2;
     }
} 
Run Code Online (Sandbox Code Playgroud)


alf*_*alf 20

它不起作用,因为列表为空.试试这个:

private void button1_Click(object sender, EventArgs e)
{
    List<Button> buttons = new List<Button>();
    for (int i = 0; i < 10; i++)
    {
        Button newButton = new Button();
        buttons.Add(newButton);
        this.Controls.Add(newButton);   
    }
}
Run Code Online (Sandbox Code Playgroud)


pst*_*jds 5

你可以这样做:

Point newLoc = new Point(5,5); // Set whatever you want for initial location
for(int i=0; i < 10; ++i)
{
    Button b = new Button();
    b.Size = new Size(10, 50);
    b.Location = newLoc;
    newLoc.Offset(0, b.Height + 5);
    Controls.Add(b);
}
Run Code Online (Sandbox Code Playgroud)

如果您希望它们以任何一种合理的方式进行布局,最好将它们添加到布局面板之一(即FlowLayoutPanel)或自己对齐它们。