2012-10-09 65 views
0

我對鑄造按鈕的理解存在一些問題,也許你可以幫助我。如果我有例如3個按鈕,我不會有很長的代碼,我可以施放它們,對吧? 例如:如何投射按鈕

private void button1_Click(object sender, EventArgs e) 
{ 

} 

private void button2_Click(object sender, EventArgs e) 
{ 

} 

private void button3_Click(object sender, EventArgs e) 
{ 

} 

如果我給埃夫裏的按鍵標籤,我是前人的精力能問,如果被點擊的按鈕,對不對?

private void MachMalClick(object sender, EventArgs e) 
{ 
    var myButton = (Button)sender; 

    if (myButton != null) 
    { 
     var test = myButton.Tag; 
switch (test) 
      { 
       case 1: MessageBox.Show("button 1 was clicked"); 
        break; 
       case 2: MessageBox.Show("button 2 was clicked"); 
        break; 
       case 3: MessageBox.Show("button 3 was clicked"); 
        break; 
      } 
    } 
} 

如果上mthode是成功的對象必須是一個按鈕(鑄造發件人到按鈕 - >必須是一個按鈕),但現在我有問題ADRESS標記。有人能幫助我嗎?我在網上找不到東西,我很抱歉,如果這是一個愚蠢的問題,但即時通訊新的C#。

+1

「但現在我有問題ADRESS標籤」 - 是什麼問題?你有例外嗎?請更具體一些。 – Slugart

+0

我不能做這個開關,是什麼讓我覺得我腦中有一個思維錯誤。該錯誤是一個開關表達式:必須有一個相應的類型,允許空值 – BudBrot

+0

這可以幫助您: http://stackoverflow.com/questions/4791645/get-return-value-from-pressed-button –

回答

1

您可以Id property

Button myButton = (Button)sender; 
if(myButton.Id == "button1") 
{ 
    .... 
} 
elseif(myButton.Id == "button2") 
{ 
    ..... 
} 
+0

哇。非常感謝你。有用。 – BudBrot

+0

我很樂意爲您效勞user1676819 –

0
var test = myButton.Tag as string; 

嘗試你不能在對象上進行切換。

+0

也是非常感謝您。這對我來說也非常有用 – BudBrot

0

你不需要這個「標籤」屬性?

您可以直接檢查Button對象。

if(sender == button1) 
    MessageBox.Show("button 1 was clicked"); 
else if(sender == button2) 
    MessageBox.Show("button 2 was clicked"); 
else if (...) 
    ... 

這假定按鈕創建的設計時間和按鈕字段被命名爲「Button1的」,「按鈕2」等