通过循环动态分配按钮文本

时间:2011-11-11 12:01:43

标签: c# winforms button

我正在尝试使用如下循环动态分配按钮控件文本:

int ButtonNumber = 1;

while (ButtonNumber < 10)
{
    //WHAT TO DO HERE!?
    ButtonNumber++;
}

我想避免以下情况:

button1.Text = "";
button2.Text = "";
button3.Text = "";
button4.Text = "";
button5.Text = "";
button6.Text = "";
button7.Text = "";
button8.Text = "";
button9.Text = "";

5 个答案:

答案 0 :(得分:10)

理想情况下,首先不要将button1button2等作为变量。有一个集合(例如List<Button>):

private List<Button> buttons = new List<Button>();

(编辑:你需要在某个地方填充这个...当然......)

然后稍后更新文本:

for (int i = 0; i < buttons.Count; i++)
{
    buttons[i].Text = "I'm button " + i;
}

不幸的是,这与设计师的表现并不十分相称。

可以通过ID获取控件,但我个人不会这样做。如果真的想要:

for (int i = 1; i <= 10; i++)
{
    Control control = Controls["button" + i];
    control.Text = "I'm button " + i;
}

答案 1 :(得分:1)

创建一个按钮数组:

Button[] buttons = new Button[10];
for(int i = 1; i < 10; i++)
{
   buttons[i] = new Button();
   buttons[i].Text = "";
}

答案 2 :(得分:0)

您始终可以使用this.Controls.Find()在WinForms中找到命名控件。

答案 3 :(得分:0)

你也可以这样做,假设你的表格中有所有按钮

foreach (Control c in this.Controls)
            {
                if (c is Button)
                {
                    c.Text = "MyButton" + (c.TabIndex + 1);
                }
            }

答案 4 :(得分:0)

//试试这个

         Button btn;
         for (int n_i = 0; n_i < 10; n_i++)
            {
            btn = (Button)Controls.Find("button" + n_i,true)[0];
            btn.Text = "";
            }