9
votes

Disposer des contrôles sur Winforms

Pourquoi Visual Studio a-t-il ajouté ce code à la classe partielle de classe.designer.cs. Quelqu'un peut-il me dire quand cette variable de composants va avoir une certaine valeur? Quel est le modèle à suivre ici? xxx


0 commentaires

4 Réponses :


5
votes

Le champ privé composants est utilisé pour suivre les composants jetables sur votre formulaire. Essayez de faire glisser dans un composant composant , et vous devez voir quelque chose comme celui-ci dans le code généré par concepteur: xxx

le motif affiché dans le Dispose (BOOL) La méthode est généralement appelée Le Jetable motif . Fondamentalement, le motif garantit que tous les composants suivis seront disposés, même si vous n'appelez jamais la méthode Disposer explicitement, auquel cas la classe de base de votre formulaire appellera le Dispose méthode dans son finaliseur (pendant la collecte des ordures).


0 commentaires

2
votes

composants est attribué lorsque vous ajoutez des composants non visuels, qui doivent également être disposés sous une manière déterminisite (pour plus d'informations, reportez-vous au motif Idisposable).


0 commentaires

0
votes

Tous les composants ne l'utilisent pas bien, par exemple une aideProvider et EventLog. Vous pouvez même le commenter dans ces cas. Cela ressemble à un bodge MS pour moi.


1 commentaires

Heh, sous une forme sans composants jetables, Resharper suggère de rendre le champ Readonly :)



5
votes

Il s'agit du code produit par le modèle d'élément de formulaire (Common7 \ Ide \ ItemTemplates \ csharp \ Windows Forms \ 1033 \ form.zip \ form.designer.cs). Il possède en fait un bogue, la méthode initializececomonent () qu'il contient inindice inutilement la variable "Ceci.cavants". Vous pouvez supprimer en toute sécurité l'instruction du code si votre formulaire n'a pas de composants. Le concepteur le remettra automatiquement si vous ajoutez un composant plus tard.

Une autre chose qui n'est pas si agréable est que la méthode Dispose () est mise dans le fichier de concepteur.cs. Il appartient vraiment au fichier de form.cs afin que vous puissiez ajouter des appels () appels pour des champs de votre formulaire à dispositionner. N'hésitez pas à déplacer le code vous-même, modifiant le fichier de concepteur de cette manière n'a aucun effet secondaire désagréable. Restez à l'écart du code qui est entre crochets avec la région «Code généré».

Comme mentionné dans la plupart des autres réponses, ce code est nécessaire pour appeler la méthode Disposer () de tout composant que vous avez déposé sur le formulaire lorsque le formulaire est fermé. Les commandes sur le formulaire doivent également être disposées mais c'est automatique. La classe de formulaire les retrouve en itérant la collection de contrôles.


1 commentaires

«Déplacez-vous vers le code (du designer)» est utile pour moi. Merci!