実行時に簡単にローカライズできるように、MenuStrip
とのサブクラスを作成しました。ToolStripMenuItem
現在、私のクラスは次のようになっています。
public class LocalizedMenuStrip : MenuStrip
{
public void Localize()
{
foreach (ToolStripMenuItem Item in Items)
{
if (Item is LocalizedMenuItem)
{
((LocalizedMenuItem)Item).Localize();
}
}
}
}
と
public class LocalizedMenuItem : ToolStripMenuItem
{
private String textKey;
private LocalizedString LocalizedText;
[Browsable(true)]
[Category("Display")]
[Description("Sets or returns the TextKey used to retrieve the localized text for this item.")]
public String TextKey
{
get { return textKey; }
set
{
textKey = value;
LocalizedText = new LocalizedString(value);
Text = LocalizedText;
}
}
public void Localize()
{
Text = LocalizedText;
}
}
これは私が計画したとおりに機能し、私を悩ませているのは1つだけです。
LocalizedMenuStrip
Designer を使用してアイテムを追加すると、常に標準を取得することになりますToolStripMenuItem
。LocalizedMenuItem
代わりに sを作成するようデザイナーに指示する方法はありますか? たぶん、に属性を追加することによってLocalizedMenuStrip
どんな助けでも大歓迎です