2008-08-14 7 views
28

Vous devriez être en mesure de créer une forme générique:Pouvez-vous utiliser des formulaires génériques en C#?

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

est valide C# et compile. Cependant le concepteur ne fonctionnera pas et le formulaire lancera une exception d'exécution si vous avez des images indiquant qu'il ne peut pas trouver la ressource.

Je pense que c'est parce que le concepteur de formulaires Windows suppose que les ressources seront stockées sous le nom du type simple.

Répondre

18

Oui, vous pouvez! Voici un blog que j'ai fait un certain temps il y a avec l'astuce:

Designing Generic Forms

Edit: On dirait que vous êtes déjà faire de cette façon. Cette méthode fonctionne très bien, donc je ne le considérerais pas trop hacky.

+1

Que se passe-t-il si vous avez 3 formulaires? Je veux Form3: Form2. Cela inclut le paramètre de type générique + les contrôles dans Form2. Une idée? – mynkow

0

J'ai un hack pour contourner ce qui fonctionne mais n'est pas idéal:

Ajouter une nouvelle classe au projet qui hérite de la forme avec son simple nom.

internal class MyGenericForm: 
    MyGenericForm<object> { } 

Cela signifie que même si le concepteur est encore mal le type simple attendu (i.e. sans <>) se trouve encore.

Questions connexes