加入我具有其中几个按钮经由“的”方法更改在运行时
public Form()
{
for (int i = 0 ...)
Button b = new Button()
b.text = (string) i ;
etc..
etc..
}
在运行时添加一种形式的控件属性。现在我想更改某个事件上按钮的文本属性。这如何实现?我已经尝试了一些东西,但都没有工作..因为按钮变量在方法内部,所以它们不在外部可用。
感谢
加入我具有其中几个按钮经由“的”方法更改在运行时
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
}
}
你可以保持您所创建的按钮的参考,即你可以有它所有的动态控制列表,或者如果它只有一个按钮,使按钮对象成为一个级别的对象,以便您可以在任何地方访问它。
就是这样,这就是应该如何完成的,递归版本+1。 – 2010-04-18 07:43:18
这段代码有点过头了,所以我得仔细研究一下。非常感谢! – user257412 2010-04-18 07:43:23
@ user257412 - 控件在树中;诸如面板的控件可以在其中具有其他控件,并且这些控件也可以是容器控件。这段代码只是遍寻树木寻找按钮。当然,如果有什么明显的东西来识别你的*按钮(可能是'.Tag'),这将会有所帮助。 – 2010-04-18 07:44:40