J'ai une fenêtre que j'ai parfois ouverte à l'aide de Bien sûr, je sais que je peux attraper et ignorer l'exception, mais je n'aime pas cette solution. P> show () code> et parfois en utilisant
showdialog () code>. Dans le second cas, le résultat de la boîte de dialogue renvoyé est important pour moi. Mais si je définis le
dialogresult code> après avoir appelé
show () code> i reçoit un
invalidOperationException code>. Existe-t-il un moyen de savoir quelle méthode a été utilisée pour ouvrir la fenêtre et définir ou non la boîte à dialogrutes code> code> en conséquence? Ou y a-t-il un autre moyen? P>
4 Réponses :
Que diriez-vous de définir cela.dialogresult = dialogresult.bla dans l'événement de fermeture de formulaire? P>
Comment cela aiderait-t-il? Cela le fixerait toujours même après le spectacle () et provoquerait l'exception. BTW J'utilise WPF (je n'ai pas précisé cela clairement) pour que le dialogresult est bool ?.
avant que je fasse ça.Close (); Dans la fenêtre modale, je définis cela.dialogresult = dialogresult.ok; Et dans la forme principale, c'est exactement ce que je reçois. Merci sgrassie :)
Utilisez System.windows.interop.componentDisPatcher .Isthreadmodal à l'intérieur de la fenêtre pour déterminer s'il s'exécute sur un fil modal ou non. P>
Ne fonctionne pas toujours, dans notre cas, nous avons dû envelopper le dialogue = x; Appelez dans un essai / capture pour un comportement approprié.
Si vous regardez SET_DIALOGRESUTION dans le réflecteur, il vérifie _ShoWowAsdialog pour déterminer si la boîte de dialogue est modale. Malheureusement, c'est un domaine privé. P>
Construisez-vous toujours une nouvelle instance de la fenêtre avant d'appeler Afficher () / showdialog (). Si tel est le cas, vous pouvez transmettre un argument au constructeur indiquant comment il faut montrer. p>
Vous pouvez utiliser la propriété dans le cas de l'utilisation de est là une raison d'utiliser les deux manières de montrer le formulaire? P> formul.modal code> pour vérifier le type d'utilisation. P>
formul.show () code> Vous devez utiliser une autre façon de laisser connaître l'appelant de tout résultat du formulaire. P>
Cette propriété n'existe pas dans WPF