Fenetre MDI parent / fille

spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021 - Modifié par spifspaf le 14/06/2014 à 19:56
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 - 17 juin 2014 à 22:53
Bonjour à tous
Je ne sais pas si je suis sur la bonne section mais ma question concerne visual studio express 2013
Je débute dessus .....
j'essaie de créé une appli MDI ( donc fenêtre parent et une fenêtre fille ) jusque la pas de soucis.
j'arrive à lancer ma fenêtre à partit d'un bouton.
Ce que j'aimerai pouvoir faire ( et je ne trouve pas ma réponse )
- éviter de pouvoir ouvrir une 2eme fenêtre ( quand je clique sur le même bouton )
et de plus que si l'on clique sur le même bouton et que la fenêtre fille soir déjà ouverte et réduite dans la fenêtre parent, elle vienne se repositionner en premier plan ( éventuellement avec une alerte genre MsgBox("La fenêtre Blabla est déjà ouverte")
Merci par avance à ceux qui vont pouvoir m'aider
A voir également:

7 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
15 juin 2014 à 10:05
Bonjour, déplacé dans la catégorie VB.Net
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
15 juin 2014 à 16:13
Bonjour spifspaf,

Le plus simple serait de désactiver le bouton après avoir "lancé" votre fenêtre.

Cordialement.
0
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021
Modifié par spifspaf le 15/06/2014 à 19:51
Bonjour

j'ai cela comme code : ( et apparemment ça lance pas d'autre fenêtre si l'on clique dessus une fois la Form1 lancée )
Dim ChildForm = Form1
If ChildForm Is Nothing Then ChildForm = New Form1()
ChildForm.MdiParent = Me
ChildForm.TopMost = True
ChildForm.Show()

Le but étant de la rappeler si l'on "re-clique" sur le bouton ( si elle est déjà active et réduite dans la fenêtre parent
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
15 juin 2014 à 20:43
Bonsoir,

Les cinq lignes de code que vous avez donnez sont-elles bien dans la procédure d'évènement du bouton que vous citez par ailleurs ?

Bonne nuit et à demain.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
16 juin 2014 à 09:43
Bonjour spifspaf,

Je vous propose le programme suivant, construit sous vb 2010 Express. Le formulaire principal, nommé
Accueil
, contient un bouton de commande
bDém As Button
, avec
bDém.Text = "Démarrage"
.

Public Class Accueil
    Private Ok As Boolean = True

    Private Sub Accueil_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.IsMdiContainer = True
    End Sub

    Private Sub bDém_Click(sender As Object, e As System.EventArgs) Handles bDém.Click
        Dim frm As New Enfant
        If Ok Then
            frm.MdiParent = Me
            frm.Visible = True
            Ok = False
        Else
            ActiveMdiChild.WindowState = FormWindowState.Normal
        End If
    End Sub

End Class


Cordialement.
0
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021
16 juin 2014 à 12:41
Bonjour Zermelo ,
Merci avant tout pour votre aide.
Je viens de voir votre réponse que cette fin de matinée et je vous en remercie.
Je testerai cela ce soir car je suis actuellement au travail donc impossible de faire quoi que soit
Je vous informe du résultat dans la soirée
Merci à vous
0
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021
16 juin 2014 à 20:34
Bonsoir Zermelo
je viens de tester votre script il représente bien en effet ce que je désire réaliser.
Il fonctionne bien sauf que quand je ferme la Form que je la relance ( à partir du même bouton ) Visual me balance une erreur :

Une exception non gérée du type 'System.NullReferenceException' s'est produite dans TestFenetremdifilleparent.exe
Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.

ça bug apparemment sur cette ligne
ActiveMdiChild.WindowState = FormWindowState.Normal 
quand on le relance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
16 juin 2014 à 23:02
Bonsoir spifspaf,

Dans votre cahier des charges, vous n'avez pas dit que vous vouliez pouvoir détruire le formulaire enfant. Il ne faut donc pas vous étonner de l'erreur constatée. En effet la fermeture n'a pas changé le booléen Ok, de sorte qu'il conserve la valeur False. La frappe sur le bouton Démarrer ne crée donc pas un nouveau formulaire enfant, mais appelle un ancien formulaire qui n'existe plus. Si donc vous voulez pouvoir détruire le formulaire enfant puis en recréer un autre, vous devrez faire en sorte de remettre Ok à la valeur True lors de la destruction.

Je vous laisse chercher.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
16 juin 2014 à 23:39
Re,
Nouvelle version.

Public Class Accueil

    Private Sub Accueil_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.IsMdiContainer = True
    End Sub

    Private Sub bDém_Click(sender As Object, e As System.EventArgs) Handles bDém.Click
        Dim frm As New Enfant, Ok As Boolean
        Ok = Me.MdiChildren.Count = 0
        If Ok Then
            frm.MdiParent = Me
            frm.Visible = True
            Ok = False
        Else
            ActiveMdiChild.WindowState = FormWindowState.Normal
        End If
    End Sub

End Class


De grâce, ne me demandez pas une nouvelle extension à votre cahier des charges.
0
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021
17 juin 2014 à 20:35
Bonjour et merci beaucoup .....bon je ne vais plus oser poser de question donc :o)
Ce script est parfait ...du moins pour un commencement :)
Je débute donc ça m'aide à comprendre.( dans le but de réaliser un petit utilitaire pour mon travail ) .
Me reste plus qu'a trouver comment gérer la même chose mais avec plusieurs boutons et Form.
Merci pour votre aide précieuse
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
17 juin 2014 à 22:53
Bonsoir spifspaf,

Vous pouvez poser autant de questions que vous voudrez sur ce site. Mais vous devez prendre conscience qu'il s'agit d'un forum d'entraide. Vous n'aurez pas un bénévole attitré. Ce n'est pas nécessairement moi qui vous répondra. Mais ce n'est pas exclu.
Une règle du forum indique que vous ne pouvez poser qu'une question par discussion. Mais rien ne vous empêche d'entamer une autre discussion juste après une autre.
Une autre règle : si vous êtes satisfait du résultat, déclarez la discussion résolue.
Cordialement .
0
Rejoignez-nous