2011-06-13 66 views
2

我在項目中有50個按鈕,因爲所有按鈕都被鏈接到方法。而現在,當一個按鈕被按下時,我希望它不可見。因爲我不希望我的代碼包含50 IF語句來檢查其 按鈕被按下:c#替換整數

If(sender == Button1) 
{  
    Button1.visible = false; 
} 

這段代碼獲得很長,如果我生病了幾乎相同的代碼塊時只按鈕名稱改變50次。 有沒有反過來以另一種方式獲得更短的代碼?

也許:如果一個字符串變量包含按鈕的名稱?

string buttoncheck = Button1; 

然後在上面的代碼插入buttoncheck代替Button1的,因爲buttoncheck包含Button1的值/名?

謝謝!

回答

3

嘗試

Button button = (Button) sender; 
button.Visible = false; 
+2

+1假設只是一個按鈕被鉤的方法,這是簡單而直接的方式來做到這一點。 – 2011-06-13 21:28:40

+0

謝謝,這很好:) – laz 2011-06-13 21:39:52

2

通過它鑄造一個按鈕,你可以使用由sender提供的參考來設置觸發事件的按鈕的可見性。

if(sender is Button) 
{ 
    ((Button)sender).Visible = false; 
} 
+1

如果你已經用'is'檢查過,就不需要'as',只需要投它並避免冗餘檢查。 – 2011-06-13 21:27:45

+0

好點。固定! – 2011-06-13 21:45:39

2
((Button)sender).Visible = false; 
7

試着這麼做

var x = sender as Button; 
if(x != null){ 
    x.Visible = false; 
} 
1

試試這個:

Button button = sender as Button; 
button.Visible = false; 
2

在你的情況下,你有一個發件人。

您可以將您的發件人轉換爲您的按鈕對象類型。

var button = sender as Button; 

if(button != null) 
    button.Visible = false; 
0

只使用發件人。

var button = (Button) sender; 
button.Visible = false; 
2

如果50個按鈕共享相同的功能,訂閱他們的Click事件相同的事件處理程序,做到這一點:

Button button = sender as Button;  
if (button != null) 
    button.Visible = false;