J'ai un formulaire mdicontainer qui invoque des formulaires. Mon problème est quand l'utilisateur clique de nouveau sur le menu pour ce formulaire, il en fait aussi une autre instance. Ce que j'ai fait est de déclarer une classe publique avec une variable publique ex: Boolean isFormOneOpen = false. Puis, à chaque fois que formOne s'ouvre, il vérifie d'abord la variable globale que j'ai déclarée il y a un certain temps si elle est fausse, si c'est le cas, instancie un objet d'un formOne et ensuite l'affiche. Sinon, ne faites rien. Très statique, imaginez si j'ai plusieurs formulaires, je dois déclarer une variable pour chaque formulaire afin de vérifier si elle est déjà ouverte. Pouvez-vous me fournir une solution pour cela? Peut-être une méthode qui accepte un formulaire? Ou une façon plus intelligente de le faire.Comment créer un formulaire d'instance unique
Répondre
Vous n'avez pas besoin d'une variable, vous pouvez itérer la collection MdiChildren pour voir si le formulaire est déjà ouvert. Par exemple:
Private Sub btnViewChild_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnViewChild.Click
For Each child In Me.MdiChildren
If TypeOf child Is Form2 Then
child.WindowState = FormWindowState.Normal
child.Focus()
Exit sub
End If
Next
Dim frm As New Form2
frm.MdiParent = Me
frm.Show()
End Sub
La solution VB.NET centrée sur:
Private Sub btnViewChild_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnViewChild.Click
Form2.MdiParent = Me
Form2.WindowState = FormWindowState.Normal
Form2.Show
End Sub
Plutôt qu'un booléen, déclarez une variable du type de la forme. Ensuite, assurez-vous que la variable n'est pas Nothing et appelez la méthode .Open(). Cela a le bon effet secondaire de mettre également votre instance de formulaire existante à l'avant si elle est déjà ouverte.
Encore mieux, dans VB.Net 2.0 et versions ultérieures, tous les formulaires ont une instance par défaut avec le même nom que leur type, vous pouvez donc simplement dire FormName.Open()
et en avoir terminé avec. Cependant, je n'ai pas essayé cela dans une situation de MDI avant.
OK. Merci, je vais essayer ce que vous dites. – yonan2236
- 1. PHP: Comment créer un unique #
- 2. Comment créer un numéro de commande unique
- 3. Comment créer un formulaire dynamique?
- 4. comment créer une variable unique
- 5. créer un formulaire utilisateur
- 6. Comment créer une instance de System.Web.UI.WebControls.Table dans un formulaire (question unique)
- 7. Créer un formulaire dynamiquement
- 8. Comment créer un formulaire d'alerte asp.net formulaires
- 9. Comment créer un formulaire "unfocusable" en C#?
- 10. Comment créer un formulaire d'inscription dans Drupal?
- 11. Comment créer un formulaire Ajax Popup et soumettre le formulaire
- 12. Mootools - Comment créer un formulaire et soumettre ce formulaire?
- 13. Créer un lien à usage unique
- 14. Comment créer un index non-unique dans sqlite?
- 15. symfony: comment créer un validateur pour une clé unique?
- 16. Comment créer un ID d'erreur unique global? C#
- 17. comment créer un mot-clé unique dans l'oracle db?
- 18. Comment créer un index sur une table non unique?
- 19. Comment obtenir un «uid» unique?
- 20. Comment créer un lien "cocher tout" pour un formulaire Web?
- 21. Comment créer un validateur datetime dans un formulaire Zend Framework?
- 22. Comment créer un bookmarklet qui soumet un formulaire de connexion
- 23. Limite maximale pour un champ de formulaire unique?
- 24. Créer un formulaire de recherche personnalisé drupal
- 25. mysql créer de l'aide table avec unique
- 26. Comment créer et soumettre un formulaire en utilisant Java Script
- 27. Comment créer un formulaire modal dans Windows Forms?
- 28. Comment créer un formulaire dynamiquement en utilisant JavaScript?
- 29. Comment puis-je créer un formulaire "Aller à la page"?
- 30. Comment créer manuellement un formulaire imbriqué correct avec accept_nested_attributes_for?
merci ... Je viens de faire quelques réglages dans votre code, et ça marche! Je vous remercie :) – yonan2236