2011-02-08 33 views
3

我有一個GUI應用程序,添加了一個按鈕。在幾個插件的DLL中,會創建一個新按鈕,並且需要將其添加到GUI中以代替現有的按鈕。C#分配一個按鈕到另一個

有沒有辦法簡單地說ButtonA = ButtonB?或者我必須在運行時從GUI中刪除按鈕,然後添加新的按鈕?

謝謝。

+6

您可以更改現有按鈕的事件處理程序方法。一個按鈕是一個按鈕。 – 2011-02-08 11:23:49

回答

3

或者你可以將其鏈接到另一個處理程序,是這樣的:

舊的Click事件處理程序

private void ButtonA_Click(object sender, EventArgs e) 
{ 
//Do sth 
} 

新的Click事件處理程序(例如,如果你創建一個新的按鈕)

private void ButtonB_Click(object sender, EventArgs e) 
{ 
//Do sth 
} 

,那麼你需要刪除第一個處理程序,並添加新的處理程序:

ButtonA.Click -= this.ButtonA_Click; 
ButtonA.Click += new EventHandler(ButtonB_Click); 
1

你的按鈕被添加到一些父母(例如表格)。這意味着您必須從Form的Controls集合中刪除原始按鈕,然後添加新按鈕。或者,您可以替換Controls集合中的按鈕。

讓遍歷集合後說,你會發現該按鈕是第5'元素,你可以做這樣的事情:

this.Controls[4] = ButtonB; 

我不是100%肯定這是否意味着你將不得不手動使屏幕無效以更新GUI。在這種情況下,呼叫ButtonB.Invalidate();

0

將您感興趣的屬性從第一個按鈕複製到創建的第二個按鈕,然後從Controls集合中刪除第一個按鈕或將.Visible設置爲false。

至於事件,您將遇到問題,因爲您必須手動調用舊按鈕事件處理程序 - .NET中無法讀取OnClick(或任何其他事件)訂戶。