Get tag property from ToolStripMenuItem and buttons in click event handler

I have a method set for the click event handler in several ToolStripMenuItems buttons and tools.

I want to get the sender tag property to see what was clicked, but it looks like ToolStripMenuItems cannot be passed to Control.

How can I get the Tag property of both buttons and ToolStripMenuItems?

Here is a simplified version of my method.

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;
        }
}

Thank!

+3
source share
1 answer

Since there is no main base class or Button interface and ToolStripMenuItem that defines the tag, you need to throw:

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");
}
+5
source

Source: https://habr.com/ru/post/1791341/


All Articles