您可以使用相同的Click事件的每一個按鈕,並用發件人的對象,它鑄造Button
:
private void buttonsToClose_Click(object sender, EventArgs e)
{
((Button)sender).Visible = false;
}
然後只是處理程序添加到您想要關閉自己的每一個按鈕點擊。
但是請注意,如果您或其他人在不是Button
的對象上使用此處理程序,則會拋出InvalidCastException
,所以如果您實際上要使用此代碼,則會添加某種有條件的檢查發件人的真實類型。
此外,您可以通過鑄造發件人Control
代替,因爲從Control
Button
繼承,並且所有Control
對象具有Visible
屬性重用此爲任何Control
對象。下面是一個例子,有一個條件,以防止無效轉換:
private void controlToMakeInvisible_Click(object sender, EventArgs e)
{
if (sender.GetType() == typeof(Control))
{
((Control)sender).Visible = false;
}
}
最後要注意的 - 這似乎從你的文章一樣,你可能對事件的創建方法略有誤解和與Windows的對象連線中形式。如果你進入了設計,增加一個點擊事件,並看到彈出到你的表單代碼如下:
private void button1_Click(object sender, EventArgs e)
這種方法的名字在它的功能沒有任何影響。 button1_Click
的button1部分實際上與Button
button1
實際上沒有任何邏輯鏈接 - 它只是由Designer分配的默認名稱。將方法button1_Click
與Button.Click
事件的實際分配自動生成到您的Form的Designer.cs方法中。
這樣做的問題是,如果你複製並粘貼button1_Click
和改變button1
每發生率button2
,就像這樣:
private void button2_Click(object sender, EventArgs e)
{
button2.Visible = false;
}
它不會當button2
被點擊射擊。事實上,它永遠不會開火,因爲該方法實際上並未連接到任何控件/事件。
這個問題似乎是脫離主題,因爲它屬於http://codereview.stackexchange.com – Shiva 2014-10-29 20:20:13
@JasonB你有沒有得到你的答案? – 2014-10-31 12:53:10
@Riddle謝謝。 – 2014-11-04 05:32:28