2012-11-09 1 views
3

Je construis une application en utilisant le .NET CF Framework et j'ai eu une situation où je voulais présenter à l'utilisateur une boîte de dialogue personnalisée.Est-ce une mauvaise pratique d'instancier un formulaire à partir d'un UserControl?

Ma solution était de créer un formulaire simple avec des boutons radio pour les choix et un bouton. Lorsque vous cliquez dessus, le bouton enregistre la valeur du bouton radio sélectionné dans une propriété publique et ferme le formulaire. Le contrôle UserControl, après avoir appelé ShowDialog sur le formulaire, inspecte la propriété publique pour connaître l'option sélectionnée par l'utilisateur.

Cela a fonctionné parfaitement. Je me demande simplement si c'est une mauvaise pratique et si je vais avoir des ennuis, d'une façon ou d'une autre en faisant cela. Il semble étrange qu'un UserControl devrait créer un formulaire.

Existe-t-il une meilleure façon de créer une boîte de dialogue personnalisée à partir d'un UserControl?

Répondre

1

Absolument rien de mal à cela. Cela revient à appeler le MessageBox.Show() à partir d'un UserControl.

Et oui, l'accès au résultat en tant que propriété publique est la façon de le faire.

Je suppose que ce sera un dialogue? Vous devriez envisager d'utiliser le DialogResult si vous avez plusieurs options de 'sortie' - OK, Annuler, etc.

+1

Merci pour l'idée. J'ai expérimenté avec l'utilisation de DialogResult pour retourner des résultats différents. Pas nécessaire dans ce que je fais. J'ai juste le bouton unique pour fermer() le formulaire après qu'une sélection a été faite. Mais il est bon de savoir que si je voulais, je pourrais avoir plusieurs boutons et renvoyer un DialogResult différent si j'en avais besoin. – nitewulf50

1

Réponse courte: Non, cela ne devrait pas vous poser de problème. Réponse longue: Au fur et à mesure que votre application se développe, ouvrir un formulaire directement à partir d'un UserControl peut vous donner un peu de code spaghetti. Si vous écrivez une application supérieure à quelques milliers de lignes de code, vos fichiers Form et UserControl derrière les fichiers doivent généralement être vides. Ils ne devraient pas contenir de logique métier, et de préférence pas de logique UI non plus. Regardez les modèles tels que Passive View comment y parvenir.

Questions connexes