WinForms继承

标签 winforms generics inheritance designer

我已经使用表单继承有一段时间了,但没有对以下方法进行太多研究。只需创建一个新类而不是表单,并从现有表单继承,并根据需要将所需的控件转换为 protected 控件。 Visual Studio 2010 设计器的工作方式非常有魅力。如果需要更多控制,您始终可以重写基本方法。

我现在正在创建通用表单,如下所示:
partial class EntityCollectionEditor < T > : Form where T : ISomeInterface < T >

当由简单的非设计器类继承时,此类表单会出现以下错误:
无法显示此文件的设计器,因为无法设计其中的任何类。设计者检查了文件中的以下类:XYZ。无法加载基类 EntityCollectionEditor。确保已引用程序集并且已构建所有项目。

如果有一个快速的解决方案就好了,但我也在寻找一个好的资源/文章来 self 教育。

最佳答案

目前,winforms 设计器不支持通用表单/控件。

我使用的唯一解决方法是创建特定的表单类型:

class GenericBaseForm<T> : Form
{ }

class IntForm : GenericBaseForm<Int>
{ }

class StringForm : GenericBaseForm<String>
{ }

现在可以在设计器中使用特定的表单。不幸的是,如果您有很多特定的表单,它可能不是一个理想的解决方案。

关于WinForms继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794196/

相关文章:

c# - 在设计时将换行符添加到标签的文本

c# - 更改 ListView 的背景选择颜色?

java - 如何创建继承泛型类的对象

c# - 添加或删除带有子窗体的 MDI 窗体检测

c# - 通知模态表单的父级它需要采取一些行动

java - Scala 的 2.9.1 编译器会丢弃类型参数信息吗?

c# - 如何重载泛型类的运算符?

generics - 为什么编译器会将两个具有不同名称的等效签名的泛型类型变量识别为不同类型?

Scala 构造函数继承

python - 如何在discord.py中创建自定义的Exception/Error Handler类,该类将处理命令特定的错误?