我创建了 和 的子类,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;
}
}
这按我的计划工作,只有一件事困扰着我:
当我将项目添加到我LocalizedMenuStrip
的使用设计器时,我总是最终得到一个标准ToolStripMenuItem
。有没有办法告诉设计师创建LocalizedMenuItem
s 代替?也许通过添加一个属性LocalizedMenuStrip
任何帮助表示赞赏