更改在运行时添加的控件的属性

时间:2010-04-18 07:37:28

标签: c# winforms

我有一个表单,在运行时通过'for'方法添加了几个按钮

 public Form()
 {
 for (int i = 0 ... )
  Button b = new Button() 
  b.text =  (string) i ;
  etc..
  etc..
  }

。现在我想改变某个事件上按钮的文本属性。如何实现这一目标?我尝试了一些但没有工作的东西..由于按钮变量在方法内,它们在外面不可用。

由于

2 个答案:

答案 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,或者只有一个按钮,使按钮对象成为类级对象,以便您可以访问它任何地方。