2015-09-15 50 views
0

請參閱下面的鏈接截圖。C#刪除子菜單項圖像邊距

總之,我需要那些小白盒子消失 - 它們應該放置一個圖像,但沒有圖像,所以我寧願它們消失。

我使用後續的代碼來實現這一點:

foreach (ToolStripMenuItem menuItem in mnuMain.Items) 
    ((ToolStripDropDownMenu)menuItem.DropDown).ShowImageMargin = false; 

這適用於什麼我猜是主要項目,而不是分項目,你可以在圖片中看到。

我已經嘗試了上面的代碼的一些變化,試圖讓它捕獲一切,而不是隻是第一級的項目,但沒有運氣。

我在做什麼錯?

http://i.imgur.com/bst1i4v.png

+3

您將需要對菜單項目中的項目進行遞歸。 –

回答

1

你應該做的是爲子項目了。爲此,您可以使用此代碼:

private void Form1_Load(object sender, EventArgs e) 
{ 
    SetValuesOnSubItems(this.menuStrip1.Items.OfType<ToolStripMenuItem>().ToList()); 
} 

private void SetValuesOnSubItems(List<ToolStripMenuItem> items) 
{ 
    items.ForEach(item => 
      { 
       var dropdown = (ToolStripDropDownMenu)item.DropDown; 
       if (dropdown != null) 
       { 
        dropdown.ShowImageMargin = false; 
        SetValuesOnSubItems(item.DropDownItems.OfType<ToolStripMenuItem>().ToList()); 
       } 
      }); 
} 
+0

這很好,謝謝。 –