2016-06-07 25 views
0

如何遍歷Windows窗體中的所有ContextMenus?在Windows窗體中查找所有ContextMenuStrips形式

我目前擁有的是:

public void SearchContextMenuStrip(Form Window) 
{ 
    foreach (Control item in Window.Controls) 
    { 
     if (item is ContextMenuStrip) 
     { 
      MessageBox.Show("ContextMenuStrip found!", "ContextMenuStrip found"); 
     } 
     else 
     { 

     } 
    } 
} 

也能正常工作的所有其他控件,但不是爲ContextMenus。

我希望這能夠翻譯多語言應用程序的所有文本,所以如果有人知道更好的解決方案,這是非常感謝。

在此先感謝!

+1

我認爲這是一個不好的本地化解決方案。請閱讀此https://msdn.microsoft.com/ru-ru/library/y99d1cd3%28v=vs.71%29.aspx。 – shfire

+0

Window.Controls只會給你窗體上的頂層控件。每個控件都有一個Controls集合,並且您需要遍歷它(您需要遞歸)。 – shfire

+0

ContextMenuStrip不是控件,因此您無法通過Controls屬性找回它。你將不得不迭代'components'。這並不總是有效,但對於ContextMenuStrip而言。 –

回答

1

您只需一個ContextMenuStrip每個控制關聯,所以我想你想ToolStripMenuItem

foreach(var item in Window.ContextMenuStrip.Items) 
{ 
} 
+0

偉大的解決方案!謝謝!小腳註:您錯過了foreach括號中的'in'一詞。 – Sander

0

使用的resx文件,併爲每個區域語言與翻譯創建它。使用settings.NAME而不是硬編碼。本地化將自動應用。

https://msdn.microsoft.com/en-us/library/aa992030(v=vs.100).aspx

+0

我玩過它。這種方法(afaik)的缺點是,例如當你有10個帶「hello」的按鈕並且你想要5種語言時,你必須在5個單獨的文件中改變50個單詞「hello」。通過構建我自己的翻譯序列,只需要以每個人都可以獲得的格式在一個文件中更改5個單詞(因爲翻譯可能會由'不太聰明'的非技術人員完成)。我沒有得到標準方式的進步......但是如果你知道一種不那麼迂迴的標準方式,那將是非常棒的!我會對這樣的解決方案非常感興趣! – Sander

相關問題