C# 组菜单项';s项目

C# 组菜单项';s项目,c#,winforms,C#,Winforms,我想用一个分隔符以编程方式分隔菜单项集合中的每个组 我知道我可以使用this.myMenuItem.Items.Add(新的ToolStripSeparator())但是,这对我来说不是一个选项,因为myMenuItem的内容是动态创建的,例如,我可以以一个空组结束。因此,我将有两个ToolStripSeparator,它们之间没有项 比如这个例子。如果conditionA为false或condition1A和conditionA2为false,我将得到两个连续的分隔符。 如果我移动myMenu

我想用一个分隔符以编程方式分隔菜单项集合中的每个组

我知道我可以使用
this.myMenuItem.Items.Add(新的ToolStripSeparator())
但是,这对我来说不是一个选项,因为myMenuItem的内容是动态创建的,例如,我可以以一个空组结束。因此,我将有两个ToolStripSeparator,它们之间没有项

比如这个例子。如果
conditionA
为false或
condition1A
conditionA2
为false,我将得到两个连续的分隔符。
如果我移动myMenuItem.Items.Add(新的ToolStripSeparator())在第一个或第二个嵌套的if中,我可以在同一个组中获得分隔符

// Add group A of items
myMenuItem.Items.Add(new ToolStripSeparator());
If(conditionA)
{
    If(conditionA1)
        myMenuItem.Items.Add("group A: item 1");
    If(conditionA2)
        myMenuItem.Items.Add("group A: item 2");
}
// Add group B of items
myMenuItem.Items.Add(new ToolStripSeparator());
If(conditionB)
{
    If(conditionB1)
        myMenuItem.Items.Add("group B: item 1");
    If(conditionB2)
        myMenuItem.Items.Add("group B: item 2");
}
// Add group C of items
myMenuItem.Items.Add(new ToolStripSeparator());
If(conditionC)
{
    If(conditionC1)
        myMenuItem.Items.Add("group C: item 1");
    If(conditionC2)
        myMenuItem.Items.Add("group C: item 2");
}
我想知道是否有一种简单的方法(比如标记我们的组选项)可以用于动态创建的项目,以便MenuItem可以决定将该项目放置在何处以及是否需要分隔符。 我知道我可以组合条件或计算添加的项目,以便决定是否添加分隔符,但想法是让添加的项目自己决定是否添加。因此,当启动一个项目时,我无法确定是否必须添加分隔符


我正在使用Windows.Forms.ToolStripMenuItem控件。

最简单的更改是,如果要向某个组添加项目,则只为该组添加分隔符:

// Add group A of items
If(conditionA)
{
    if(conditionA1 || conditionA2)
        myMenuItem.Items.Add(new ToolStripSeparator());
    If(conditionA1)
        myMenuItem.Items.Add("group A: item 1");
    If(conditionA2)
        myMenuItem.Items.Add("group A: item 2");
}
// Add group B of items
If(conditionB)
{
    if(conditionB1 || conditionB2)
        myMenuItem.Items.Add(new ToolStripSeparator());
    If(conditionB1)
        myMenuItem.Items.Add("group B: item 1");
    If(conditionB2)
        myMenuItem.Items.Add("group B: item 2");
}
// Add group C of items
If(conditionC)
{
    if(conditionC1 || conditionC2)
        myMenuItem.Items.Add(new ToolStripSeparator());
    If(conditionC1)
        myMenuItem.Items.Add("group C: item 1");
    If(conditionC2)
        myMenuItem.Items.Add("group C: item 2");
}

您还可以将其封装到自定义控件中,具体取决于您将如何使用它。

您将如何得到一个空组?显示添加菜单项的代码。@LarsTech我提供了一个codeNo的示例,默认情况下没有内置方法可以神奇地添加分隔符。任何使用添加或插入分隔符的方法都需要您检查条件或计算添加的项目等。张贴的答案是一种方法。不要回避它。我知道我可以添加更多的if条件或计算添加到组中的每个项目,但我想问是否有一种简单的方法可以做到这一点,这样我就可以避免这些if语句,而不是添加更多