2013-08-23 87 views
0

我在窗口中運行相同類型的流程的不同類型的文本框旁邊有幾個按鈕。我決定通過添加句柄添加逗號分隔符來將所有_click事件整合到一個事件中。有沒有辦法告訴哪個按鈕被某個屬性點擊了,這樣我就可以只使用case語句或者某種程度來啓用那些特定的文本框?由於它都是通過一個點擊事件來處理的(因爲我不想爲了運行與其他按鈕運行相同的功能而創建10個點擊事件,保存代碼和可讀性)是否有某種方法可以找出哪個按鈕被點擊?當你點擊一個按鈕時傳遞數據?

回答

1

在你委託你有兩個參數:對象發件人,並EventArgs的。 只投sender對象到按鈕對象,然後你可以用一個按鈕,它的所有屬性應對:

private void button_Click(object sender, EventArgs e) 

     { 
      Button btn = sender as Button; 
      string name = btn.Name; 
     } 

編輯:對不起,沒注意VB.NET標籤,但我爲了以防萬一,我會留下我的回答;)

+0

這可以輕鬆地轉換爲VB代碼。對我來說,這看起來是正確的! – Recipe

1

你可以嘗試這樣的事:

Public Sub YourEventHandlerName(sender As object, e As EventArgs) 
    Select CType(sender, Button).Name 
     Case "Button1_Name" 
      'Do what ever you wanted to do in here 
     Case "Button2_Name" 
      'Do what ever you wanted to do in here 
    End Select 
End Sub 
+0

說實話,如果這是用法的實際想法,我寧願看到每個按鈕的事件處理程序。這是更清潔,更容易維護。 通過這種方式,您可以將硬編碼的名稱作爲字符串進行粘貼...... – Recipe

相關問題