获取项目和子项目的文本 contextmenustrip

Get text on items and sub-items 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");
    }
}

我想问一下,如果我只点击任何子项目,我如何获得项目和子项目的文字。例如,我点击项目 C 中的子项目 2,则输出为 item C and Subitem 2.

您可以为子项添加 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;
    }