WinForms ToolStrip在可视继承中不可用

时间:2011-07-14 07:20:08

标签: c# winforms visual-studio toolstrip visual-inheritance

假设我有FormCharent继承FormParent。在父母中,顶部有一个工具提示。我想要的是在我的子表单中添加额外的元素,但控件始终被锁定,尽管我已将修饰符设置为受保护

我检查过互联网,看来这是一个众所周知的错误;但有没有人知道一种解决方法或什么?

3 个答案:

答案 0 :(得分:3)

您可以手动编辑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中的继承工具栏。
  6. 你应该能够在设计师中设计控制权。尝试了一下 - 似乎有效。

    P.S。我使用的是VS2010,.NET v4

答案 1 :(得分:0)

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

一个简单的解决方法(实现相同的效果)是在子表单上删除不可见的工具条,并在加载时将其与基本表单工具条合并。

I've developed MergableToolStrip controls you can use free of charge here

答案 2 :(得分:-1)

您可以将工具条传递给子表单。

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

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

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