2008-08-14 12 views
28

Usted debe ser capaz de crear una forma genérica:¿Se pueden usar formularios genéricos en C#?

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

es válido C#, y compila. Sin embargo, el diseñador no funcionará y el formulario lanzará una excepción de tiempo de ejecución si tiene alguna imagen que indique que no puede encontrar el recurso.

Creo que esto se debe a que el diseñador de formularios de Windows supone que los recursos se almacenarán con el nombre del tipo simple.

Respuesta

18

¡Sí, puedes! Aquí hay un post que hice hace un tiempo con el truco:

Designing Generic Forms

Editar: Parece que ya está haciendo de esta manera. Este método funciona bien, así que no lo consideraría demasiado hacky.

+1

¿Qué tal si tienes 3 formularios? Quiero Form3: Form2. Esto incluye el parámetro de tipo genérico + controles en Form2. ¿Alguna idea? – mynkow

0

Tengo un truco para solucionar este, que funciona, pero no es lo ideal:

Agregar una nueva clase al proyecto que hereda el formulario con su nombre simple.

internal class MyGenericForm: 
    MyGenericForm<object> { } 

Esto significa que aunque el diseñador sigue siendo incorrecto del tipo simple esperado (es decir, sin <>) todavía se encuentra.

Cuestiones relacionadas