2010-03-23 4 views
0

J'ai un Dialog A et je veux qu'il charge un second dialogue B qui est modélisé et reste tout le long du côté A. La boîte de dialogue A peut alors lancer un dialogue modal C. Mais lorsque C est présent, je veux que B soit utilisable. J'aurais corrigé ceci avec un message de prétraduction dans A dans une application C++ mais quelle est l'approche dans C#. Lorsque vous lancez Dialog C, lancez-le en utilisant yourFormVariable.Show() au lieu de yourFormVariable.ShowDialog().Formulaire utilisable même lorsqu'une boîte de dialogue modale est au dessus

Répondre

3

Form form1 = new Form(); 
Form form2 = new Form(); 
form1.Show(); 
form2.Show(); 

Cela permettra à ces deux formes d'être actifs et utilisable par l'utilisateur, alors que dans le code suivant:

Form form1 = new Form(); 
Form form2 = new Form(); 
form1.Show(); 
form2.ShowDialog(); 

l'utilisateur devra fermer form2 avant de pouvoir continuer à utiliser form1 à nouveau. Notez qu'il n'existe pas de boîte de dialogue modale qui permet aux formulaires précédents d'être utilisables - par exemple, une modal dialog est celle par laquelle l'utilisateur doit interagir et se fermer avant de continuer.

+0

Je suis conscient que le fait de C modeless fonctionnerait, mais je dois l'autre boîte de dialogue pour répondre, il peut avoir un texte qui aide l'utilisateur à utiliser dialogue C. En effet, si je voulais un système d'aide personnalisé c'est une fenêtre de jumelage, comment laisser l'utilisateur travailler avec. Je sais que Windows utilise un processus séparé pour lancer l'aide et ces assistants, mais je crois qu'il ne devrait pas y avoir de blocage technique pour rendre cela possible dans le même processus - peut-être en changeant la hiérarchie Window de propriété/parentage. – user253966

+0

Vous voulez donc que le Dialog A soit non-réactif lorsque l'utilisateur a ouvert Dialog C, mais que vous voulez quand même qu'il puisse interagir avec Dialog B? Comme je l'ai dit, un dialogue modal bloquera toute interaction avec l'application jusqu'à ce que ce dialogue modal soit fermé. La seule façon de le faire est d'ouvrir Dialog C avec Show(), puis de changer la propriété Enabled de Dialog A (de sorte qu'il désactive tous les contrôles) quand Dialog C est ouvert, puis le ramène à Enabled quand Dialog C est fermé. –

+0

ok, ça me semble une bonne idée. – user253966

Questions connexes