2013-10-09 42 views
0

我有10個按鈕,0-9(button0,button1,button2 ...)。當我點擊這些按鈕時,我想對它們執行相同的例程。我想知道如何在點擊這些按鈕之後,引導他們進入下面的例程。將多個按鈕路由到相同的例程

private void button0_Click(object sender, EventArgs e) 
    { 
     int newValue; 

     newValue = Convert.ToInt32(Button.text); 
    } 

我已經走了到每個按鈕的屬性,那麼事件,並改變了點擊事件button0_Click(我還以爲這將增加「處理button1.click,button2.click等私人無效button0_Click(對象發件人,EventArgs的)「,「後」,但如果它在後臺,沒關係,只要它的作品。)

我還需要知道如何識別有按鈕被按下,這是我在「Convert.ToInt32(Button.text)」(例如button2.te xt =「2」)。

回答

2

您可以爲設計器中的所有按鈕選擇相同的事件處理程序(在屬性窗口的事件選項卡中選擇該事件,並且將會有一個下拉列表以及所有定義的事件處理程序)。

要獲取已點擊哪個按鈕,請將sender參數投射到Button上,然後您就可以擁有它。

Button button = (Button)sender; 
int value = int.Parse(button.Text); 

編輯另外,「Handles control.event」語法只存在於Visual Basic中。

編輯:查看生成的代碼(例如Form1.Designer.cs)以查看事件是如何連接的。

0

C#語言不使用handles來綁定事件(就像VB一樣)。實際綁定的代碼位於生成的表單代碼中,即在您放置的背景中。

sender屬性是事件發生時控件的引用。你只需要將它轉換爲實際類型的控件:

private void button0_Click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    int newValue = Convert.ToInt32(button.text); 
} 

作爲替代使用按鈕的文本(例如,如果你想給應用程序翻譯成不同的語言,或者乾脆不想依賴文本),可以在每個按鈕的Tag屬性中放入任何你喜歡的東西,並在事件處理程序中檢索它。

0

您可以將它們連接到相同的事件處理程序,從發件人中提取按鈕,例如,

private void button0_Click(object sender, EventArgs e) 
{ 
    var button = sender as Button 
    if (button != null) 
    { 
     int newValue = Convert.ToInt32(Button.text); 
    } 
} 
相關問題