2008-08-14 61 views
28

你应该能够创建一个通用的形式:你可以在C#中使用通用表单吗?

public partial class MyGenericForm<T> : 
    Form where T : class 
{ 
    /* form code */ 
    public List<T> TypedList { get; set; } 
} 

是有效的C#,并编译。但是,如果您有任何图像说明找不到资源,设计师将无法工作,并且表单将抛出运行时异常。

我认为这是因为Windows窗体设计器假定资源将存储在简单类型的名称下。

回答

18

是的,你可以!这里有一个博客帖子我做了一个前一阵子与招:

Designing Generic Forms

编辑:看起来你已经在做了这种方式。这种方法工作正常,所以我不认为它太hacky。

+1

如果你有3种形式,那么呢?我想要Form3:Form2。这包括Form2中的泛型类型参数+控件。任何想法? – mynkow 2010-09-23 21:07:37

0

我有一个黑客来解决此,它的作品,但并不理想:

添加一个新的类继承其简单的名称形式的项目。

internal class MyGenericForm: 
    MyGenericForm<object> { } 

这意味着,虽然设计者仍然是错误的预期的简单类型(即无<>)仍然发现。

相关问题