如何从flowlayoutpanel更改控件的属性?

时间:2010-10-08 05:17:13

标签: c# winforms user-controls flowlayoutpanel

假设您以编程方式添加控件并假设每个控件的名称相同,如何更改flowlayoutpanel中控件的属性?

例如,此图像显示有2个文本框和2个按钮, 如何更改按钮2的背面颜色?假设控件已在运行时添加。

alt text

foreach(Controls ctrl in flowlayoutpanel1.Controls)
{
//What should I put here?
}

2 个答案:

答案 0 :(得分:3)

嗯,最简单的方法是保留对您添加的按钮的明确引用。否则你可以添加一个标签来区分它们(以防止i18n问题)。例如。您可以将“button2”的标记设置为“button2”,然后您可以使用:

foreach (Control ctl in flp.Controls) {
    if ("button2".Equals(ctl.Tag)) {
        ctl.BackColor = Color.Red;
    }

}

我假设您的问题是再次找到实际按钮而不是设置背景颜色。您同样可以检查控件是否为按钮,其文本为“button2”,但是如果文本可以根据UI语言而改变,那可能不是一个好主意。

ETA:完全忘了您也可以使用控件的Name属性。

如果您只想在按钮的事件的响应中更改按钮的背景颜色,则可以使用事件处理程序的sender参数。 / p>

答案 1 :(得分:3)

您可以尝试Control.ControlCollection.Find

flowLayoutPanel1.Controls.Add(new Button() { Text = "button 1", Name = "btn1" });
Button btn1 = flowLayoutPanel1.Controls.Find("btn1", true).FirstOrDefault() as Button;
btn1.Text = "found!";