2014-07-02 4 views
0

Je travaille dans un cadre compact 3.5, je travaille sur l'application Windows Mobile.Fermer formulaire existant sur l'ouverture d'un autre formulaire

form1.cs

internal void menuItem_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
    form2 obj = new form2(); 
    obj.ShowDialog(); 
    /////other code 
} 

Form2.cs

public void backbutton_Click(object sender, EventArgs e) 
{ 
    form1 obj = new form1(); 
    obj.ShowDialog(); 
    /////other code 
} 

Dans un premier temps je suis dans form1 et je suis à naviguais form2.In form2, un bouton retour est là et en cliquant backbutton i need pour montrer le from1.Now je peux montrer le form1 sur le clic de bouton de fond, mais je dois fermer le précédent formulaire1 ouvert.

J'ai essayé avec this.Close() et this.Dispose(). Cela me fait exister de mon application.

Comment faire cela dans un cadre compact.

+0

Votre demande est en cours de fermeture, car vous fermez votre formulaire principal. –

+0

@LeonNewswanger form1 n'est pas la forme principale, elle est à côté du formulaire principal. – Royal

+0

Je pense que le problème que vous devez résoudre en premier est un possible défaut de conception. Avez-vous une bonne raison de vouloir réellement fermer form1 et ensuite d'ouvrir une nouvelle instance, ou cela aurait-il plus de sens de simplement masquer puis reshow form1 lorsque form2 se ferme? –

Répondre

0

Je recommande au lieu de créer de nouvelles form1 de form2, tout près form2 et revenir à form1:

Form2.cs:

public void backbutton_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
} 

form1.cs:

internal void menuItem_Click(object sender, EventArgs e) 
{ 
    form2 obj = new form2(); 
    obj.ShowDialog(); 
    /////other code 
} 
+0

Je peux le faire, mais si l'utilisateur ouvre un dossier autre que mon application dans Form2 alors revenez de form2 va quitter l'application. Pour cette raison, je crée un nouvel objet à partir de form2 – Royal

1

La meilleure façon de travailler avec ce genre de choses est d'utiliser un singleton. Lorsque vous affichez votre premier formulaire, vous inscrivez le premier formulaire, puis vous montrez le second en créant l'instance et en cachant le premier (utilisez hide(), pas close(), alors votre instance sera toujours en mémoire). Au clic arrière, il suffit de masquer() la seconde et show() la première.

Questions connexes