2010-04-16 6 views
3

Supposons plusieurs Windows modaux affichés les uns au-dessus des autres. Tous ceux-ci ont ShowInTaskbar = false, ce qui signifie que dans le TaskBar vous ne voyez que le MainForm et toutes les fenêtres modales sont cachées.WinForms fenêtres modales alt + tab problème

Maintenant, vous appuyez sur ALT + TAB et la plupart des fenêtres modales supérieures disparaissent. Mais vous ne pouvez pas le récupérer en face.

Comment devrait-il être fait correctement selon vous?

Répondre

7

Si une fenêtre modale est bloquée derrière le formulaire principal, il semble que vous n'en définissez pas le propriétaire. Lorsque vous appelez showDialog(), vous devez passer sous la forme principale comme ceci:

modalWin.showDialog(mainForm); 

Chaque fois que vous appelez showDialog(), et votre programme a une autre forme qui devrait être en dessous, il est préférable de le transmettre en tant que propriétaire. Si vous affichez une fenêtre modale alors qu'il y a déjà une fenêtre modale, passez la première fenêtre modale en tant que propriétaire.

0

OK Juste pour le compléter:

Ceci est comment définir un propriétaire à un Winform pour une Winform:

form.ShowDialog(ownerInstance); 

Voici comment définir un propriétaire à un Winform pour WPF fenêtre:

MyWpfDialog dialog = new MyWpfDialog(); 
new System.Windows.Interop.WindowInteropHelper(dialog).Owner = ownerInstance.Handle; 
dialog.ShowDialog(); 

Voici comment définir un Ownder être une fenêtre WPF pour une fenêtre WPF:

.Owner = Window.GetWindow(ownerInstance) 
Questions connexes