C#将控件添加到循环中的面板

Yos*_*ter 8 c# controls add dynamic

我希望为文件中的每一行添加一个按钮.到目前为止我的代码是:

StreamReader menu = new StreamReader("menu.prefs");
int repetition = 0;

while(!menu.EndOfStream)
{
    Button dynamicbutton = new Button();
    dynamicbutton.Click += new System.EventHandler(menuItem_Click);
    dynamicbutton.Text = menu.ReadLine();
    dynamicbutton.Visible = true;
    dynamicbutton.Location = new Point(4+repetition*307, 4);
    dynamicbutton.Height = 44;
    dynamicbutton.Width = 203;
    dynamicbutton.BackColor = Color.FromArgb(40,40,40);
    dynamicbutton.ForeColor = Color.White;
    dynamicbutton.Font = new Font("Lucida Console", 16);
    dynamicbutton.Show();
    menuPanel.Controls.Add(dynamicbutton);
    repetition++;
    MessageBox.Show(dynamicbutton.Location.ToString());
}
menu.Close();
Run Code Online (Sandbox Code Playgroud)

问题是只创建了第一个控件.

cry*_*ted 9

代码看起来很好,但可能存在以下情况.

1.您的文件中可能只有一个条目,因此您只能在面板中添加一个按钮.

2.您的面板宽度小于所有动态按钮宽度的总和.

我怀疑没有2是造成问题的主要原因.

所以,我建议你使用FlowLayoutPanel.添加动态内容,因为它会自动布局所有子控件.