C# 如何为MenuStrip子类设置默认MenuItem类型
我创建了C# 如何为MenuStrip子类设置默认MenuItem类型,c#,visual-studio,windows-forms-designer,C#,Visual Studio,Windows Forms Designer,我创建了MenuStrip和ToolStripMenuItem的子类,以便在运行时轻松定位 现在我的课程是这样的: public class LocalizedMenuStrip : MenuStrip { public void Localize() { foreach (ToolStripMenuItem Item in Items) { if (Item is LocalizedMenuItem)
MenuStrip
和ToolStripMenuItem
的子类,以便在运行时轻松定位
现在我的课程是这样的:
public class LocalizedMenuStrip : MenuStrip
{
public void Localize()
{
foreach (ToolStripMenuItem Item in Items)
{
if (Item is LocalizedMenuItem)
{
((LocalizedMenuItem)Item).Localize();
}
}
}
}
及
这是我的计划,只有一件事困扰着我:
当我使用设计器将项目添加到我的LocalizedMenuItem
时,我总是得到一个标准的ToolStripMenuItem
。有没有办法告诉设计师改为创建LocalizedMenuItem
s?可以通过向LocalizedMenuStrip
非常感谢您的帮助您需要应用[ToolStripDesignerAvailability]属性,以便在设计时选择自定义项目类。不清楚你现在是怎么做的。要使其成为默认选择,需要为MenuStrip定制设计器,这没有什么乐趣。编写自己的本地化方案从来都不是一个错误。现在我只需添加一个MenuItem,然后将其类型更改为我自己的MenuItemClass。工作不多,但可能会变得单调乏味。
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;
}
}