C# 循环添加控件到面板

标签 c# dynamic controls add

我想为面板中的文件中的每一行添加一个按钮。 到目前为止我的代码是:

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();

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

最佳答案

代码看起来不错,但可能会出现以下情况。

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

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

我怀疑没有 2 是导致问题的主要原因。

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

关于C# 循环添加控件到面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406868/

相关文章:

c# - 如何测试 EF 模型

c# - 为什么 FileSystemWatcher 检测不到来自 Visual Studio 的更改?

c# - ILogger 显示不正确的货币符号

javascript - 使用 Angular.js 的 ng-repeat 创建动态链接

IOS/xcode/核心数据 : Implement calendar control using core data

c# - 如何在 C# 中下载 HTML 源代码

python - 动态函数创建和函数体评估

javascript - 重新定义 jQuery 函数

iphone - cocoa touch 的日历控件

php - Codeigniter 和 PHP 检查 session 是否存在