2012-04-29 1 views
3

J'ai créé ce contrôle de l'utilisateur:Quelle est la bonne façon d'accéder aux propriétés des contrôles des contrôles utilisateur dans Winform?

enter image description here

J'ai ajouté que le contrôle de l'utilisateur au formulaire principal et maintenant je veux le personnaliser. Donc, je vais devoir ajouter du texte à ces 3 boutons, texte dans Label, remplir ListBox et le réglage des événements Click pour les boutons.

Quelle est la bonne façon de faire cela? J'ai regardé autour du web et apparemment la manière de le faire est d'ajouter des propriétés publiques dans le contrôle de l'utilisateur qui exposerait les propriétés individuelles de contrôle dont j'ai besoin.

Quelque chose comme:

public string Button1Text 
    { 
     get 
     { 
      return btn1.Text; 
     } 
     set 
     { 
      btn1.Text = value; 
     } 
    } 

Si je vais dans cette voie, je dois ajouter un bon nombre de propriétés publiques à ce contrôle utilisateur simple.

Mais n'est-il pas plus facile d'exposer tout le contrôle dans le contrôle de l'utilisateur comme ça? De cette façon, le formulaire principal peut simplement accéder au contrôle et à ses propriétés au fur et à mesure de leurs besoins.

Répondre

3

La première méthode est meilleure du point de vue de l'encapsulation. La deuxième méthode fait que les utilisateurs (formulaires) de votre contrôle dépendent de la vue de votre contrôle, ce qui empêche les modifications de la vue à l'avenir.

+0

Mais que faire par exemple avec ListBox qui est plus compliqué que le simple TextBox? Il a beaucoup de propriétés que je voudrais avoir accès aussi comme DataSource, DisplayMember, Items, SelectedIndex, SelectedItem, SelectedItems, SelectedValue, ... Est-ce que j'expose chacune de cette propriété? Si oui, en quoi cela est-il différent de la seconde méthode? Dans les deux cas, le formulaire est lié à ListBox. Ou devrais-je encapsuler différemment? – user850010

+0

Je pense que plus vous exportez les propriétés de cette façon, plus vous créez des dépendances. Essayez d'abstraire. De plus, je vous suggère d'apprendre WPF et les directives MVVM suivantes. –

2

Le premier bit de code est la manière correcte de le faire. Vous devrez en créer beaucoup mais c'est la bonne façon de le faire.

1

Le premier est beaucoup mieux lorsque vous créez uniquement des propriétés pour chaque propriété individuelle du bouton auquel vous souhaitez pouvoir accéder depuis le contrôle Parent.

Si vous utilisez la seconde méthode, toute personne souhaitant utiliser votre contrôle pourra déplacer et redimensionner des contrôles individuels à l'intérieur de votre contrôle. Ensuite, ce n'est plus un contrôle personnalisé, mais plutôt un panneau plus difficile à utiliser qu'un panneau. Je ne vois aucune raison de permettre au parent de déplacer des éléments individuels dans un sous-contrôle.

+0

J'ai créé le contrôle utilisateur en question, puisque j'avais besoin de ce groupe de contrôles dans quelques endroits de l'application, donc il me semblait logique de créer un contrôle utilisateur vide et de rendre le formulaire principal accessible à ses sous-contrôles. – user850010

Questions connexes