【问题标题】:Editing Custom Controls or Panels in the Designer environment在 Designer 环境中编辑自定义控件或面板
【发布时间】:2011-12-04 00:13:23
【问题描述】:

我创建了一个继承 System.Windows.Forms.Panel 的自定义控件,并添加了一些额外的属性。然后我打算创建继承这个自定义面板类的子类,并向它们添加内容。

自定义面板类将作为各个步骤的内容传递给“向导”框架(带有后退/下一步按钮)。我打算广泛使用它,为威世智创建 40-50 个不同的页面来处理我项目中的各种事情。

问题:有没有办法在设计器中查看面板,并从那里修改其布局和设计?我可以用艰难的方式编写所有代码,但我真的不想。

我进行了一些搜索并找到了this article,但它讨论了创建自定义控件并将其添加到库中。我不需要这样做,我只想直接在 Designer 中查看/编辑控件,而不将其添加到表单中。

【问题讨论】:

  • 听起来你想要一个 UserControl 而不是继承的面板。
  • 我可以从其他面板类型继承来做到这一点吗?我尝试使用流布局面板和其他特殊控件来做到这一点,但没有成功。我不敢相信我忽略了一个 UserControl,它现在可以工作,但我对这些其他特殊对象很好奇。

标签: c# winforms windows-forms-designer


【解决方案1】:

明显的答案再次救援。

创建一个自定义控件,根据需要添加布局/拆分面板,并将其属性更改为 DockStyle.Fill。

只要您将所有其他控件添加到布局控件,这将使您的自定义控件“行为”像布局控件。

【讨论】:

    【解决方案2】:

    首先添加这个命名空间

    using System.ComponentModel.Design;
    

    System.ComponentModel.DesignerAttribute 属性应用于控件,如下所示:

    [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] 
    public class UserControl1 : System.Windows.Forms.UserControl
    {
          ...
    }
    

    现在您可以在设计器环境中编辑自定义用户控件

    【讨论】:

      最近更新 更多