2009-03-23 6 views
3

En pensant à cela pour un dialogue A propos mais je suis sûr qu'il est applicable dans d'autres endroits (par exemple une boîte de découverte)Comment faire une boîte de dialogue supérieure non-modale qui est seulement la plus haute en ce qui concerne le formulaire parent dans WinForms?

Désolé si cela est dupe, mais je ne pouvais pas trouver ceci ou comment articuler la dernière partie à ce sujet seulement être au-dessus du parent. Comment faire un formulaire qui est toujours au-dessus du formulaire parent, mais qui n'est pas modal, mais ne couvre pas les autres applications?

Répondre

9

Essayez cette option pour ouvrir votre boîte de dialogue:

FindDialog fd = new FindDialog(); 
fd.Show(this); 

La clé est d'attribuer le propriétaire de boîte de dialogue.

+0

Savait que ça devait être quelque chose de simple, merci! – Davy8

0

Vous ne savez pas exactement ce que vous voulez dire; Form.ShowDialog est uniquement modal par rapport au parent, pas à l'application, sauf si l'application est à un seul thread.

Par exemple, je fait une application pour tester ce qui a été organisée comme suit:

Mainform: 2 boutons, dont chacun commence par un fil qui crée un frmDialog1 et appelle ShowDialog

frmDialog1: simple bouton qui crée un frmDialog2 et appelle ShowDialog dessus.

frmDialog2: (.-À-dire en blanc) ne fait rien

quand ils étaient tous en cours d'exécution, je pouvais accéder à/mainform de glisser. Je pourrais aussi faire la même chose avec frmDialog1 (les deux versions) seulement si je n'avais pas cliqué sur le bouton qui montre le dialogue 2.

+0

"Form.ShowDialog est uniquement modal par rapport au parent, pas à l'application, sauf si l'application est à un seul thread." Oui, mais je le veux non-modal par rapport au parent, mais je le voulais toujours au-dessus du parent. – Davy8

+0

Aussi, vous avez raison que je pourrais commencer un nouveau fil pour afficher la boîte de dialogue pour ne pas bloquer l'interface principale, mais j'essaye d'éviter le filetage manuel si je peux l'aider. Je n'ai pas besoin du résultat de la boîte de dialogue, c'est juste une boîte de dialogue À propos de tout, donc démarrer un thread semble trop rapide. – Davy8

+0

Comme c'est votre application, je m'en remettrai à votre sagesse; mais un 2 Thread Thread quelquechose = nouveau Thread (nom de la méthode); what.Start(); est à peine exagéré. –

Questions connexes