Опитвам се да хвана събитие за щракване върху подменю на контекстно меню, създадено динамично от следния код. Контекстното меню 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)
{
}
Тази функция се извиква, когато се щракне върху подменюто, но нито sender, нито e имат информация за щракнатия елемент от подменюто - sender е null и e е празно.
Ако задам e да бъде тип ToolStripItemClickedEventArgs и променям реда за добавяне на падащо меню на
(cmListTags.Items[i] as ToolStripMenuItem).DropDownItems.Add(i.ToString(), Properties.Resources.InfoBig, new ToolStripItemClickedEventHandler(InfoClicked));
Получавам несъответствие на типа време на компилиране за последния параметър на DropDownItems.Add.