我正在尝试使用如下循环动态分配按钮控件文本:
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 = "";
答案 0 :(得分:10)
理想情况下,首先不要将button1
,button2
等作为变量。有一个集合(例如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 = "";
}