我创建了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;
}
}
这是按照我的计划进行的,只有一件事让我烦恼:
当我使用Designer将项目添加到LocalizedMenuStrip
时,我总是得到一个标准的ToolStripMenuItem
。有没有办法告诉设计师创建LocalizedMenuItem
而不是?可能是通过向LocalizedMenuStrip
感谢任何帮助