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

C# 如何从flowlayoutpanel更改控件的属性?,c#,winforms,user-controls,flowlayoutpanel,C#,Winforms,User Controls,Flowlayoutpanel,假设以编程方式添加控件并假设每个控件的名称相同,如何更改flowlayoutpanel中控件的属性 例如,此图显示有两个文本框和两个按钮, 如何更改按钮2的背面颜色?假设控件已在运行时添加 foreach(Controls ctrl in flowlayoutpanel1.Controls) { //What should I put here? } 嗯,最简单的方法是保留对正在添加的按钮的显式引用。否则,您可以添加一个标记来区分它们(以防i18n问题)。例如,您可以将“button2”标签

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

例如,此图显示有两个文本框和两个按钮, 如何更改按钮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:完全忘记了您也可以使用控件的
名称
属性

如果您只是想更改按钮响应事件时按钮的背景色,您可以使用事件处理程序的
sender
参数。

您可以尝试


嗯,我完全忘了控件名。哎哟。@Joey你的帖子是正确的,请再发一遍,这样我就可以把它标记为答案了。可以对控件名称进行筛选,以使其精细化。谢谢。谢谢这一次,现在我知道了
标记的用法了@Rye:我建议你在这里使用
名称而不是
标记,因为这是你想要的(同时你也避免了比较字符串和对象的问题)。否则,
标记
属性就是您想要粘贴到可能需要的控件上的任何对象。如果您愿意,它可以为您保存控件的子类化,如果您只需要控件中的另一段数据。
flowLayoutPanel1.Controls.Add(new Button() { Text = "button 1", Name = "btn1" });
Button btn1 = flowLayoutPanel1.Controls.Find("btn1", true).FirstOrDefault() as Button;
btn1.Text = "found!";