2010-07-11 2 views
3

J'ai un formulaire qui lance formB. Je voudrais que forma soit caché jusqu'à ce que formb soit fermé. Il peut y avoir un changement formb est ouvert par formC et d'autres donc je ne peux simplement pas créer un nouveau formulaire. Y at-il un moyen de lancer formB, cacher et bloquer jusqu'à la fermeture?Bloquer jusqu'à la fermeture d'un formulaire? Winforms

+0

La technique que vous décrivez est l'affichage d'une boîte de dialogue de façon modale. Plus d'informations - http://msdn.microsoft.com/en-us/library/aa984358(VS.71).aspx –

Répondre

9

Cela devrait le faire.

this.Visible = false; 
using (formB as new FormB()) 
    formB.ShowDialog(this); 
this.Visible = true; 
+0

Ne fonctionne pas, la fenêtre principale sera cachée derrière la fenêtre d'une autre application. –

+1

Hmmm, essayez d'appeler ShowDialog() sans paramètre. –

0

Vous pouvez utiliser l'événement OnActivate pour cacher le propriétaire et l'événement Dispose pour montrer le propriétaire. Cette solution fonctionne même si form_b n'est pas appelé d'une autre forme:

code dans form_x:

FormB f = new FormB(); 
f.Show(this); 

code dans form_b

this.Activated += new System.EventHandler(this.HideOwner); 
private void HideOwner(object sender, EventArgs e) 
{ 
    if (this.Owner != null) this.Owner.Hide(); 
} 

protected override void Dispose(bool disposing) 
{ 
    if (this.Owner != null) this.Owner.Show(); 
    if (disposing && (components != null)) 
    { 
     components.Dispose(); 
    } 
    base.Dispose(disposing); 
} 
Questions connexes