组MenuItem的项目

时间:2017-02-03 16:56:11

标签: c# winforms

我想通过编程方式用分隔符分隔menuItem中项目集合中的每个组。

我知道我可以使用this.myMenuItem.Items.Add(new ToolStripSeparator());但是这对我来说不是一个选项,因为myMenuItem的内容是动态创建的,例如我最终会得到一个空组。所以我将有两个没有项目的ToolStripSeparator。

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

// 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可以决定放置此项目的位置以及是否需要分隔符。 我知道我可以组合条件或计算添加的项目,所以我可以决定是否添加分隔符,但我们的想法是让添加的项目自己决定是否添加。所以在启动一个Item时,我无法确定是否需要添加一个分隔符。

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

1 个答案:

答案 0 :(得分:0)

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

// 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");
}

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