2017-02-03 74 views
-2

我想以编程方式用Separator将我的menuItem中的项目集合中的每个组分开。Group MenuItem's Items

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

就像这个例子。如果conditionA为假或condition1AconditionA2为假,我将得到两个连续的分隔符。
如果我在第一个或第二个嵌套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"); 
} 

我徘徊,如果有一种简单的方法(如标签我们组选件),我可以动态创建的项目使用,因此菜单项可以决定把这个项目,我们是否需要一个分离器或没有。 我知道我可以结合条件或计数添加项目,所以我可以决定是否添加分隔符,但是想法是让添加的项目自己决定是否添加或不添加。所以当启动一个Item时,我无法确定是否必须添加分隔符。

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

+1

你最终会得到一个空的组?显示添加菜单项的代码。 – LarsTech

+0

@LarsTech我提供了一个代码示例 – Mhd

+0

不,没有内置的方法来默认添加分隔符。任何使用添加或插入分隔符的方法都会要求您检查条件或计算添加的项目等。发布的答案是一种实现方法。不要回避它。 – LarsTech

回答

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

你也可以封装成一个自定义控件这取决于你如何将会使用它。

+0

我知道我可以添加更多,如果条件或计数每个项目添加到一个组,但我问是否有一个简单的方法来做到这一点,所以我可以避免这些如果语句不添加更多 – Mhd