Je suis nouveau dans le cadre compact .NET (et à peu près à nouveau C# aussi) et j'ai un problème avec des formes de commutation dans mon application mobile. À un niveau élevé, mon application utilise plusieurs formulaires, avec une classe principale "gestionnaire d'application" qui effectue la navigation/commutation entre les formulaires. Mon plan était de créer des formulaires à la demande, de les mettre en cache et d'utiliser une stratégie simple de cacher/montrer.formes de commutation dans compact framework .NET (Windows mobile 6)
Au début, je voulais faire quelque chose comme ce qui suit dans ma classe d'application principale:
public void switchForm(Form newForm)
{
currentForm.Hide(); // instance member
newForm.Show();
currentForm = newForm;
}
Cependant, cela ne fonctionne pas comme prévu. La nouvelle forme que je tentais de montrer, est apparu très temporairement, puis disparut derrière la principale forme de ma demande - des idées pour expliquer pourquoi cela se produit? J'ai beaucoup lu sur le changement de forme, et la plupart des endroits semblaient mentionner que la méthode ci-dessus était la façon de le faire.
J'ai ensuite essayé les opérations suivantes:
public void switchForm(Form newForm)
{
currentForm.Hide(); // instance member
currentForm = newForm;
newForm.ShowDialog();
}
et cela semble faire l'affaire. Je me demande, cependant, est-ce la bonne façon de s'y prendre? L'utilisation de la méthode ShowDialog() pose cependant un autre problème. Disons que je veux disposer de l'ancienne forme, comme ceci:
public void switchForm(Form newForm)
{
Form oldForm = currentForm;
currentForm = newForm;
newForm.ShowDialog();
oldForm.Dispose();
}
J'ai alors découvert que le oldForm.Dispose() le code ne s'exécute pas jusqu'à ce que le newForm.ShowDialog() se termine (le formulaire est fermé). Par conséquent, ce qui précède peut conduire à des fuites avec les formes ne sont pas correctement disposées comme la méthode est appelée encore et encore tout en se déplaçant à de nouvelles formes. Une autre façon est de disposer l'ancienne forme avant de montrer la nouvelle, cependant, alors ma demande rend temporairement quelque chose d'autre (ce qui était derrière les formes) entre l'ancienne forme étant disposé et le nouveau étant rendu:/Comment doit-on s'y prendre faire quelque chose comme ça?
Merci beaucoup.
Bienvenue sur Stack Overflow! J'ai apporté quelques modifications à votre message pour améliorer la clarté. Merci pour votre premier message. –