如何获取已选中的ToolStripMenuItem?

3

我正在使用一个带有两个主要ToolStripMenuItemsMenuStrip,每个都有其自己的“下拉”菜单,其中更多的ToolStripMenuItems具有设置为true的CheckOnClick属性。

现在我正在尝试检索所选项目,我知道bool ToolStripMenuItem.Checked存在,但是如何使用循环从每个主要ToolStripMenuItem中获取ToolStripMenuItems,然后检查哪个Checked等于true?

或者有没有更好的方法来检索已检查的ToolStripMenuItem


只需使用foreach迭代Items属性即可。不清楚为什么您会有问题。 - Hans Passant
我不知道该如何循环,ToolStripMenuItem.DropDownItems 就是我要找的东西。 - nitrkli
1个回答

3

假设你正在使用Linq,以下是你可以做的:

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (var item in this.menuStrip1.Items.Cast<ToolStripMenuItem>())
        {
            GetCheckMenuItemText(item);
        }
    }

    private void GetCheckMenuItemText(ToolStripMenuItem item)
    {
        if (item.HasDropDownItems)
        {
            foreach (var subItem in item.DropDownItems.Cast<ToolStripMenuItem>())
            {
                GetCheckMenuItemText(subItem);
            }
        }
        else
        {
            if (item.CheckOnClick)
                Debug.WriteLine(item.Text);
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接