1

我创建了 和 的子类,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。有没有办法告诉设计师创建LocalizedMenuItems 代替?也许通过添加一个属性LocalizedMenuStrip

任何帮助表示赞赏

4

0 回答 0