Я пытаюсь поймать событие щелчка в подменю контекстного меню, которое динамически создается с помощью следующего кода. Контекстное меню cmList создается в конструкторе, а код события клика добавляется из меню свойств.
for (int i = 0; i <= sTagsContext.GetUpperBound(0); i++)
{
cmListTags.Items.Add(sTagsContext[i]);
ToolStripMenuItem submenu = new ToolStripMenuItem();
submenu.Text = i.ToString();
submenu.Image = Properties.Resources.InfoBig;
(cmListTags.Items[i] as ToolStripMenuItem).DropDownItems.Add(submenu);
chkListTags.ContextMenuStrip = cmListTags;
}
Как создать код, который будет выполняться при щелчке по подменю любого из элементов контекстного меню и наличии идентификатора элемента подменю (установленного в свойстве text)?
Я попытался добавить обработчик событий, используя
(cmListTags.Items[i] as ToolStripMenuItem).DropDownItems.Add(i.ToString(), Properties.Resources.InfoBig, new EventHandler(InfoClicked));
где я создаю функцию
public void InfoClicked(object sender, EventArgs e)
{
}
Эта функция вызывается при щелчке по подменю, но ни отправитель, ни e не имеют никакой информации о щелчке по элементу подменю - отправитель равен нулю, а e пусто.
Если я задаю e для типа ToolStripItemClickedEventArgs и изменим строку добавления Dropdown на
(cmListTags.Items[i] as ToolStripMenuItem).DropDownItems.Add(i.ToString(), Properties.Resources.InfoBig, new ToolStripItemClickedEventHandler(InfoClicked));
Я получаю несоответствие типов времени компиляции для последнего параметра DropDownItems.Add.