4

可以说我有 FormChild 继承 FormParent。在父级中,顶部有一个工具提示。我想要的是在我的子窗体中添加额外的元素,但是控件始终被锁定,尽管我已将修饰符设置为protected

上网查了一下,好像是个众所周知的bug;但是有人知道解决方法吗?

4

3 回答 3

4

那么您可以手动编辑 FormChild.Designer.cs 文件。在那里您可以访问继承的工具条。

编辑:

  1. 添加这个类:

    //System.Design.dll required
    [Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
    public class InheritableToolStrip : ToolStrip { }
    
  2. 编译项目

  3. 使用工具箱中的 InheritableToolStrip 添加到 FormParent。
  4. 将修饰符属性更改为受保护。
  5. 将项目添加到 FormChild 中的继承工具条。

你应该能够在设计器中设计控件。尝试了一下 - 似乎它有效。

Ps Iam 使用 VS2010,.NET v4

于 2011-07-14T07:32:05.107 回答
0

Microsoft 已锁定复杂控件的 Visual Inheritance,因为他们无法弄清楚如何以简单的方式管理继承树上子项控件的设计器序列化。

一个简单的解决方法(达到相同的效果)是在子窗体上放置一个不可见的工具条,并在加载时将其与基本窗体工具条合并。

我开发了 MergableToolStrip 控件,您可以在这里免费使用

于 2012-05-21T00:14:51.310 回答
-1

您可以像这样将工具条传递给子窗体。

public partial class ChildForm : Form
{ 
    private readonly ToolStrip parentToolStrip;

    public ChildForm(ToolStrip strip)
    {
        parentToolStrip = strip;
    }
}

请注意,上面的代码语法可能是错误的,我知道控件名称比 ToolStrip 长,我只是用作演示来向您展示概念。

于 2011-07-14T07:26:17.730 回答