Question

Si je regarde certaines classes du framework, en utilisant réflecteur, je peux voir que les formulaires et les contrôles utilisateur sont rendus privés et imbriqués dans une classe parent.

Par exemple, j'ai un contrôle qui utilise un formulaire contextuel spécifique à ce contrôle. Pour le moment, je rends le formulaire ami pop-up accessible. Si je voulais le faire à l'aide de la structure, je le rendrais privé et l'intégrerais à la classe de contrôle. Si je le fais, cependant, je ne peux plus utiliser l’ide pour concevoir le formulaire et j’obtiens des erreurs lors de la compilation. J'ai donc 2 questions:

(1) Microsoft fait-il quelque chose à la dernière minute pour imbriquer tout ce qui est privé?

(2) Leur chemin est-il préférable ou dois-je m'en tenir aux accesseurs de mon ami?

Était-ce utile?

La solution

La forme imbriquée est préférable, car elle impose une encapsulation correcte et signifie que le contrôle final se retrouvera dans un paquet sympa pour la distribution. Si aucune de ces préoccupations ne vous préoccupe, continuez comme vous le souhaitez. Mais si vous voulez au moins essayer d'imbriquer la classe, vous pouvez faire quelque chose comme ceci:

  1. Utilisez le concepteur pour créer votre formulaire imbriqué en dehors de la classe comme vous le feriez normalement.
  2. Ajoutez un deuxième formulaire vide en tant que formulaire privé imbriqué, comme dans les exemples CLR portant le même nom que le formulaire que vous avez créé à l'étape 1.
  3. Migrez le code de *. designer.vb ou *. designer.cs de votre premier formulaire vers le constructeur de votre deuxième formulaire. Ce sera principalement un gros copier / coller.
  4. Supprimez le formulaire de l'étape 1. Vous pouvez conserver le formulaire en le déplaçant vers un projet de bibliothèque de classes distinct afin que vous puissiez l'utiliser lorsque vous devez apporter des modifications.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top