2017-02-03 71 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