2011-02-10 31 views
3

いくつかのButtonとToolStripMenuItemsでclickイベントハンドラに設定したメソッドがあります。ToolStripMenuItemのTagプロパティを取得し、クリックイベントハンドラのButtonを

送信者のTagプロパティを取得して、クリックされたかどうかを確認したいのですが、ToolStripMenuItemsをControlにキャストできないようです。

ButtonとToolStripMenuItemの両方の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 '演算子は'(型)オブジェクト 'と言う別の方法でしたが – solarc

関連する問題