2011-02-10 17 views
3

我在多個按鈕和ToolStripMenuItems中設置了單擊事件處理程序的方法。從ToolStripMenuItem中獲取標籤屬性和單擊事件處理程序中的按鈕

我想獲得發件人的標籤屬性,看看哪些被點擊,但似乎像ToolStripMenuItems不能被鑄造到控制。

如何獲得按鈕和ToolStripMenuItems的Tag屬性?

這裏是我的方法的簡化版本。

private void menu_Click(object sender, EventArgs e) 
    { 
     switch (((Control)sender).Tag.ToString()) 
     { 
      case "X": 
       // do something 
       break; 
      case "Y": 
       //do something else 
       break; 
      default: 
       //something else 
       break; 
     } 
} 

謝謝!

回答

5

因爲有一個定義標籤沒有公共基類或按鈕的界面和ToolStripMenuItem,你需要做一個轉換:

internal static object GetTag(object sender) 
{ 
    Button button = sender as Button; 
    ToolStripItem tsi = sender as ToolStripItem; 

    if (button != null) 
    return button.Tag; 
    if (tsi != null) 
    return tsi.Tag; 

    throw new ArgumentException("Unexpected sender"); 
} 
+0

謝謝!這樣可行。我雖然`as`運算符只是另一種說法'(type)object`的方法 – solarc 2011-02-10 23:44:06

相關問題