我想通过编程方式用分隔符分隔menuItem中项目集合中的每个组。
我知道我可以使用this.myMenuItem.Items.Add(new ToolStripSeparator());
但是这对我来说不是一个选项,因为myMenuItem的内容是动态创建的,例如我最终会得到一个空组。所以我将有两个没有项目的ToolStripSeparator。
就像这个例子。如果conditionA
为false或condition1A
且conditionA2
为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控件。
答案 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");
}
您也可以将其封装到自定义控件中,具体取决于您将如何使用它。