我有一个表单,在运行时通过'for'方法添加了几个按钮
public Form()
{
for (int i = 0 ... )
Button b = new Button()
b.text = (string) i ;
etc..
etc..
}
。现在我想改变某个事件上按钮的文本属性。如何实现这一目标?我尝试了一些但没有工作的东西..由于按钮变量在方法内,它们在外面不可用。
由于
答案 0 :(得分:4)
变量并不重要(尽管如果它变得更容易,你可以将它们存储在一个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
}
}
答案 1 :(得分:0)
您可以保留您创建的按钮的引用,即您可以拥有包含所有动态控件的List,或者只有一个按钮,使按钮对象成为类级对象,以便您可以访问它任何地方。