Je travaille sur une application dans laquelle il existe une forme principale et plusieurs autres formes pouvant être utilisées simultanément. Lorsqu'un utilisateur clique sur Ouvrir un autre formulaire, je voudrais le faire pour que le formulaire ne puisse plus ouvrir le formulaire s'il est déjà ouvert.
showdialog ne fonctionnera pas car l'utilisateur doit toujours avoir accès aux commandes sur la forme principale. p>
Voici mon code pour la fenêtre d'aide, tous les autres formulaires ouvrent de la même manière. P >
private void heToolStripMenuItem_Click(object sender, EventArgs e) { Form help = new help(); help.Show(); }
8 Réponses :
Selon la façon dont vous voulez gérer cela, vous pouvez faire quelques choses: p>
Essayez de faire votre aide Global.
Utilisez un singleton:
Faire la variable _Instance null lors de la fermeture du formulaire sera parfaite avec ceci :)
@mletterle Votre code semble avoir une erreur en tant que variable non statique ne peut pas être utilisée à l'intérieur d'une méthode statique.
Vous pouvez également utiliser les formulaires ouverts de l'application pour voir s'il est ouvert éditer: Pour être plus clair, cela permet à l'utilisateur de fermer l'aide à tout moment et facilite la tâche de gérer que d'économiser une référence à la fenêtre d'aide. Rien à nettoyer, rien à maintenir. P> p>
Avez-vous envisagé de faire une forme MDI? Cela garantit que votre formulaire parent est toujours visible et que vos formulaires enfants sont contenus au sein du parent. Ensuite, vous n'avez besoin que de marcher votre liste de formulaires et d'appelez-les. Aucun singletons n'a besoin (dont beaucoup considèrent comme une mauvaise pratique de programmation de toute façon). P>
Peut-être que cela vous aidera.
private Form help; private void heToolStripMenuItem_Click(object sender, EventArgs e) { if (help == null || (help != null && help.IsDisposed)) { help = new Form(); } if (!help.Visible) { help.Show(); } else { help.BringToFront(); } }
Vous pouvez procéder comme ceci, déclarez que les variables de Theee onze en haut: et après p> mettre dans l'événement form1_formiqué P> Form1.GetFormInstance.Show();
Eh bien, cela peut l'aider à travailler pour moi pour une meilleure documentation Voir ci-dessous
http://projectpeeker.com/2018/07 / 04 / Ouverture de Windows-Application-Multiple-fois / P> P>