Quand ajouter une Classe de Composant vs de Contrôle de l'Utilisateur?
J'ai une idée générale, et il y a quelques cas évidents, mais il y a aussi quelques zones d'ombre pour moi - quand est-il préférable d'utiliser pour étendre à partir d'un composant et quand est-il préférable de créer un contrôle utilisateur? Cela se rapporte à un travail spécifique de problème, je suis en train de les résoudre, mais les détails de ce ne sont pas important - d'une manière générale, la réponse à cette question est assez pour moi.
Vous devez vous connecter pour publier un commentaire.
En WPF et Windows Forms, à la fois, la principale différence est qu'un UserControl qui est censé être une collection de contrôles - réutilisables, objet unique "composé" à partir de plusieurs contrôles eux-mêmes.
Vous avais impelemnt un Composant/CustomControl/Contrôle au lieu d'un UserControl si vous faites une unique primitive de contrôle avec un nouveau comportement, au lieu de faire un "contrôle" qui est composé de petits contrôles. Composant est généralement un non-comportement visuel, où un CustomControl/Contrôle est généralement pour un contrôle visuel.
Il y a une différence significative entre un Composant et un Contrôle: Contrôles de l'interface utilisateur. Tous les contrôles sont également des composants, mais pas tous les composants sont des contrôles. Si vous avez besoin d'afficher une interface utilisateur, dérivant d'une sorte de base de Contrôle (Contrôle UserControl, Forme, etc.) serait normalement nécessaire. Si vous avez juste comportement, comme avec le composant BackgroundWorker, alors vous n'aurez qu'à tirer de Composant directement.
Une autre note...à la fois les Composants et les Contrôles peuvent être déposés sur une surface de dessin. Les composants par une icône et une étiquette dans une zone spéciale, les contrôles s'affichent directement sur l'aire de conception. Cependant, il y a une troisième chose que vous pouvez utiliser: une simple Classe. Si vous n'avez pas besoin de la conception à la surface, je vous conseille d'utiliser une classe simple plutôt que Composant ou de Contrôle. Ils sont plus légers en poids et moins de ballonnement lorsque tous vous avez besoin est 100% pure comportement à aucun moment de la conception de soutien.
En général, je voudrais utiliser
Component
lorsque le contrôle ne dispose pas d'une interface utilisateur (ou au moins pas celui qui est présent sur le formulaire). Si c'est un contrôle d'INTERFACE utilisateur je voudrais créer unUser Control
à la place.En général, je étendre le Contrôle, ou plus souvent UserControl, seulement quand je veux package d'une INTERFACE utilisateur de la fonctionnalité. Pour les Composants, je pense à l'exemple classique de la Minuterie. Il peut être tombé sur le concepteur, configurés par le biais du volet Propriétés, et ensuite accessibles par programmation via le code derrière. En bref, j'étends Composant lorsque je veux être en mesure de manipuler certains groupés en place de l'état et du comportement d'un objet sans l'INTERFACE utilisateur, par le biais de la designer.