2014-02-05 113 views
1

在我的C#項目中,我創建了一個Hangman遊戲,它有一組按鈕,其中包含從A到Z的字母。點擊時所有這些按鈕將執行相同的方法。 我不想爲他們逐個創建一個事件處理程序。 那麼如何爲所有這些按鈕創建一個SINGLE事件處理程序?如何爲多個按鈕創建事件處理程序?

回答

6

訂閱相同的處理程序,所有按鈕和使用sender獲得按鈕,引發的事件:如果您的按鈕命名爲字母A .. Z那麼你可以只用button.Name拿到信

void Button_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    // use Name or Tag of button 
} 

。如果按鈕的名稱如buttonA ... buttonZ,則可以從button.Name獲取子字符串以獲取相關字母(或button.Name.Last())。如果按鈕的名稱與字母無關,則可以使用按鈕的Tag屬性設置並獲取分配給每個按鈕的字母。

+0

後,我做了什麼,你告訴我,有我的錯誤清單上寫着上的錯誤**'Hangman_APPD_Assignment.Form2'不包含'Sbtn_Click'的定義,並且沒有找到接受類型爲'Hangman_APPD_Assignment.Form2'的第一個參數的擴展方法'Sbtn_Click'(可以找到缺少使用指令或程序集引用嗎?) ** – user2622438

+0

@ user2622438看起來像您有'Sbtn_Click'方法,它已被刪除,但您仍然使用它來訂閱事件。轉到錯誤來源並刪除訂閱 –

+1

沒關係。問題已經解決了。感謝您的解決方案! :) – user2622438

0

喜歡的東西

private void Button_Click(object sender, EventArgs e) 
    { 
     Button b = (Button) sender; 
     //button name 
    } 

msdn

2

假設你已經出Button1,Button2 BUTTON3。你可以把所有的按鈕單擊事件相同的方法設計頁面上:

或負載事件

button1.Click+=button_Click; 
button2.Click+=button_Click; 
button3.Click+=button_Click; 

and you write the method 

private void button_Click(object sender, EventArgs e) 
{ 
    var button=sender as Button; 
    // your code 

} 
相關問題