Получить текст на элементы и подпункты contextmenustrip - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть contextmenustrip в toolStripDropDownButton со следующими элементами и подпунктами:

private void addItem()
{
    toolStripDropDownButton1.DropDown = this.contextMenuStrip1;
    contextMenuStrip1.Items.Add("item A");
    contextMenuStrip1.Items.Add("item B");
    contextMenuStrip1.Items.Add("item C");
    addSubItem();
}

private void addSubItem()
{
    for (int i = 0; i < contextMenuStrip1.Items.Count; i++)
    {
        (contextMenuStrip1.Items[i] as ToolStripMenuItem).DropDownItems.Add("SubItem 1");
        (contextMenuStrip1.Items[i] as ToolStripMenuItem).DropDownItems.Add("SubItem 2");
        (contextMenuStrip1.Items[i] as ToolStripMenuItem).DropDownItems.Add("SubItem 3");
    }
}

Я хочу спросить, как получить текст для элементов и подпунктов, если я просто нажимаю на любой подпункт. например, я щелкаю по Подпункту 2 в элементе C, затем выводим item C and Subitem 2.

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете добавить событие Click для вложенных элементов и использовать свойство OwnerItem, чтобы получить родительское меню для этого вложенного элемента.

Внутри addSubItem ()

 foreach (ToolStripMenuItem item in (contextMenuStrip1.Items[i] as ToolStripMenuItem).DropDownItems)
                {
                    item.Click += Item_Click;
                }

и Событие клика

private void Item_Click(object sender, EventArgs e)
    {
        string parentMenuText = (sender as ToolStripMenuItem).OwnerItem.Text;
        string subItemText = (sender as ToolStripMenuItem).Text;
    }
...