我已经使用表单继承有一段时间了,但没有对以下方法进行太多研究。只需创建一个新类而不是表单,并从现有表单继承,并根据需要将所需的控件转换为 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/