文本文件的每一行的新按钮?

时间:2014-07-07 21:16:41

标签: c# for-loop dynamic controls

我正在尝试为文本文件的每一行动态创建一个新按钮。

我的问题是,无论文本文件有多少行,它都只生成一个按钮。

代码:

System.IO.StreamReader file = new System.IO.StreamReader
  (@"D:\SupportDash\Settings\Settings.txt");

string[] lines = System.IO.File.ReadAllLines(@"D:\SupportDash\Settings\Settings.txt");
        foreach(String row in lines)
        {        

            Button Buttona = new System.Windows.Forms.Button();
            Buttona.Text = "Test";
            Buttona.UseVisualStyleBackColor = true;
            Buttona.Location = new System.Drawing.Point(85,28);
            Buttona.Click += (s, e) => 
            {
                Form DynamicForm = new Form();
                DynamicForm.Show();

            };

            groupBox2.Controls.Add(Button);

            counter++;

        }

        file.Close();
    }

我也尝试过使用while和do-while循环。 - 同样的事情发生了。

我的文本文件由回车符分隔。 (它使用File.ApendAllText()生成在程序中;)

这个问题是由我的程序引起的,只是认为有一条巨大的线?

2 个答案:

答案 0 :(得分:2)

您将所有按钮放在同一个Location,因此可能看起来只有一个按钮,实际上每行只有一个按钮,它们只是彼此重叠。

每次循环时尝试递增位置Top或使用支持包装的面板控件。

答案 1 :(得分:0)

您需要将每个新按钮定位在新位置,例如

您的设置

Buttona.Location = new System.Drawing.Point(85,28);

调用类似

的内容
var buttonHeight = 10;

Buttona.Location = new System.Drawing.Point(85,28 + (count * buttonHeight  ));

你实际上是创建了多个按钮,但它们都是彼此重叠的。