我有一个表单,在其中通过“for”方法动态添加了多个按钮
public Form()
{
for (int i = 0 ... )
Button b = new Button()
b.text = (string) i ;
etc..
etc..
}
现在我希望在某个事件中更改按钮的文本属性。如何实现这一点?我尝试了一些方法,但都没有成功......由于按钮变量在方法内部,因此在外部不可用。
谢谢
变量不是很重要(虽然如果这样做会更容易,你可以将它们存储在单个List<T>
字段中)。通常的做法是浏览Controls
集合(必要时进行递归)。
foreach(Control control in someParent.Controls) {
Button btn = control as Button;
if(btn != null) {
btn.Text = "hello world";
// etc
}
}
void DoSomething(Control parent) {
foreach(Control control in parent.Controls) {
Button btn = control as Button;
if(btn != null) {
btn.Text = "hello world";
// etc
}
DoSometing(control); // recurse
}
}
您可以保留您所创建的按钮的引用,即您可以将所有动态控件放入一个列表中,或者如果只有一个按钮,则将按钮对象设置为类级别对象,以便您可以在任何地方访问它。
.Tag
),那将会很有帮助。 - Marc Gravell