假设您以编程方式添加控件并假设每个控件的名称相同,如何在 flowlayoutpanel 中更改控件的属性?
例如,这张图片显示有 2 个文本框和两个按钮,我将如何更改按钮 2 的背景颜色?假设控件已在运行时添加。
foreach(Controls ctrl in flowlayoutpanel1.Controls)
{
//What should I put here?
}
假设您以编程方式添加控件并假设每个控件的名称相同,如何在 flowlayoutpanel 中更改控件的属性?
例如,这张图片显示有 2 个文本框和两个按钮,我将如何更改按钮 2 的背景颜色?假设控件已在运行时添加。
foreach(Controls ctrl in flowlayoutpanel1.Controls)
{
//What should I put here?
}
好吧,最简单的方法是保留对您正在添加的按钮的显式引用。否则,您可以添加一个标签来区分它们(以对抗 i18n 问题)。例如,您可以将“button2”的标签设置为“button2”,然后您可以使用:
foreach (Control ctl in flp.Controls) {
if ("button2".Equals(ctl.Tag)) {
ctl.BackColor = Color.Red;
}
}
我假设您的问题是再次找到实际按钮而不是设置背景颜色。您还可以检查控件是否为按钮,其文本是否为“button2”,但如果文本可以根据 UI 语言更改,那可能不是一个好主意。
ETA:完全忘记了您也可以Name
为此使用控件的属性。
但是,如果您只想更改按钮的背景颜色以响应来自按钮的事件,则可以只使用sender
事件处理程序的参数。
您可以尝试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!";