加入我具有其中幾個按鈕經由「的」方法更改在運行時
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