我知道让表单设计器工作是一件棘手的事情。 泛型,x64,项目 XML 的微妙问题......但也许有人可以就我当前的问题提供建议,即我创建的继承自TabPage的组件,当我尝试在设计器中查看它时显示为列表它的控件,像这样:

在此处输入图片说明

提前致谢。

#1楼 票数:2 已采纳

您不能将TabPage作为设计器的根,而您可以对Panel或其他容器控件执行相同操作。 限制是因为, TabPage只能托管在TabControl ,甚至不能托管在设计器的覆盖控件中:

无法将 TabPage 添加到“System.Windows.Forms.Design.DesignerFrame+OverlayControl”。 TabPages 只能添加到 TabControls。

当控件的基类具有DocumentDesigner类型的设计器时,控件可以显示为设计器的根。 FormUserControl就是这样的控件,这意味着当您创建新的Form1:Form或新的UserControl1:UserControl ,由于基类派生自可设计的控件,因此可以在设计器中以 root 身份编辑该类。

我相信您可以通过使用UserControl来处理您的要求,但出于学习目的(或作为一种解决方法),如果您想让从Panel派生的控件可设计,您可以将以下代码复制到代码文件中:

public class MyControl: MyDesignableControl
{
}
[Designer(typeof(DocumentDesigner), typeof(IRootDesigner))]
public class MyDesignableControl : Panel
{

}

然后保存它,然后双击它,你可以看到你可以像根控件一样设计它。

然后在完成设计后,将Panel更改为TabPage

DocumentDesigner 备注

此设计器是根设计器,这意味着在设计模式下查看相关文档时,它为关联文档提供根级设计模式视图。

您可以使用DesignerAttributeDesignerAttribute与类型相关联。 有关自定义设计时行为的概述,请参阅扩展设计时支持

  ask by Michael translate from so

未解决问题?本站智能推荐:

1回复

在设计时显示所有表单列表的用户控件属性

众所周知,使用 Form.cs 文件创建的表单我有Form类型的属性示例: public Form TargetForm {get;set;} 我不需要使用 Actiator.CreateInstance() 来创建 Form 我只需要从 Forms.cs 文件中选择一个 Form 并将其附加到 T
3回复

在Windows窗体中显示控件的集合

我想显示如下内容:- 每一行都与一个进程有关(PID、父级等信息)。 用户可以选中checkbox并单击启动按钮以获取有关该过程的一些动态详细信息。 问题是CheckedListBox控件不允许多于一列,而其他控件(如ListView (允许多列))不允许将checkbox控件嵌入到列中。 我想知
1回复

在设计时显示MultilineStringEditor以编辑编辑控件的行?

我正在阅读这篇C#文章,以了解如何创建ActionList和Action Items,但本文仅关注DesignerActionPropertyItem类型的操作项... 我想创建一个DesignerActionMethodItem类型的项来调用一个方法,该方法必须打开一个MultilineS
1回复

托管Windows窗体设计器-在运行时序列化设计器并生成C#代码

我正在创建一个设计器表面并将控件加载到运行时。 将控件反序列化/加载到运行时时遇到问题。 我尝试过的所有方法似乎都有某种类型的问题。 发行面临例如: 控件仍然受设计时的约束 并非所有属性都会反序列化所有属性,即嵌套属性。 控件关联似乎确实遵循,即面板中的按钮将不再在面板中,即使加载后该属性仍然是
1回复

在Winforms设计器中将AdornerGlyphs保持在选定控件的顶部

TLDR:我正在寻找正确的方法来为设计表面上的特定控件的并列图形的渲染计时,以便在选择该控件时图形始终绘制在装饰字形之前。 这个问题与 Winforms 的控件设计器有关:当用户在设计图面上放置控件时,我想在控件的客户区上方显示一个图形。 通过覆盖其 OnPaint 事件处理程序,然后使用可用于绘
2回复

ListViewItem文本未完全显示在C#Windows窗体的listview控件上

ListViewItem文本未完全显示在C#Windows窗体的listview控件上。 显示列表视图项的文本有限制吗?
1回复

在“设计”视图中显示以编程方式添加到WinForms应用程序中的控件?

使用 Visual Studio(任何版本都可以),是否可以在切换回设计视图时显示以编程方式(而不是通过设计视图)添加的控件? 我尝试了一些非常简单的事情,例如: ……但无济于事。
2回复

将控件拖到窗体上时发生NullReferenceException

这个问题昨天开始发生:我试图将按钮拖动到Windows Forms应用程序中的表单上,但是当我这样做时,我得到了NullReferenceException (请参见此处的屏幕快照),当我不使用拖放功能时,它可以正常工作。 我将Windows 10 1803与Visual Studio Co