2010-07-22 4 views
1

Dans mes projets (WPF), j'utilise System.Windows.MessageBox pour afficher à l'utilisateur une boîte de dialogue de confirmation pour les opérations critiques, telles qu'une opération de suppression.MessageBox-confirmation pour les opérations critiques

Mon problème est que si je spécifie comme valeur de bouton MessageBoxButton.YesNo, l'utilisateur ne peut pas utiliser la touche d'échappement pour annuler l'opération. IMO c'est l'une des choses les plus ennuyantes, un programme peut faire, montrant un dialogue sans possibilité d'annuler/fermer le dialogue à travers la touche d'échappement.

D'autres possibilités sont MessageBoxButton.YesNoCancel, mais IMO cela est déroutant car il montre trois boutons pour seulement deux opérations. Ou on peut utiliser MessageBox.OKCancel, mais c'est IMO pas assez clair. Dans mes boîtes de dialogue, je veux demander à l'utilisateur si elle veut vraiment exécuter l'opération. Et pour cela, un simple ok n'est pas approprié. Un oui (je veux) est beaucoup mieux qu'un ok (continuer).

Comment gérez-vous cela? Est-ce un non-sujet ou pensez-vous que je le fais et avoir une propre implémentation de MessageBox ou connaissez-vous la possibilité d'étendre la classe System.Windows.MessageBox?

+1

Serait-il possible d'appuyer sur la touche d'échappement «Oui» ou «Non»? :-) J'utiliserais Oui/Non/Annuler, où Non et Annuler sont la même chose. "Non ne pas supprimer" et "Annuler la suppression" (également acheminé via la touche d'échappement). –

Répondre

3

Créer une boîte de message personnalisée (héritant de Window) comportant des espaces réservés pour le texte de l'en-tête/du message et du bouton de confirmation. Ensuite, vous pouvez concevoir une boîte de dialogue attrayante et attrayante qui se distinguera des centaines de boîtes de message OK/Annuler standard qu'un utilisateur voit généralement. Par exemple, vous pouvez utiliser une police d'en-tête plus grande similaire aux boîtes de dialogue Windows Vista ou inclure une image personnalisée.

Ensuite, vous pouvez évidemment manipuler la touche Echap vous-même, et définir le comportement d'échappement par défaut pour chaque boîte de dialogue.