Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fenetres MDI, comment tester la présence d'une MDIChild

4 réponses
Avatar
aitoz
Bonjour a tous,
voici le code que je fais pour ouvrir une fenetre a partir de ma feuille
MDI.

Dim Frm_ARTI As IGU_Articles

Frm_ARTI = New IGU_Articles()

Frm_ARTI.ShowDialog()

Ca fonctionne bien, mais le problème est que je ne sais pas comment faire
pour savoir si un formulaire est déjà ouvert !?

Exemple : J'ai un menu pour ouvrir la base article ! si je clique dessus 10
fois ça m'ouvre 10 fois la meme fenetre.

Si je pouvais faire un simple test sur l'existance d'une fenetre ca
m'éviterait de faire une très lourde gestion des enabled à TRUE et FALSE.

Merci de votre aide !

4 réponses

Avatar
Stephane TUET
Salut

Avec le code que tu nous donnes ici, tu ouvres une fenêtre en modal, tu ne
peux donc logiquement rien faire avant d'avoir fermé cette fenêtre, bizarre
donc que tu puisses en ouvrir 10. En général, on réalise plutôt quelque
chose du genre :

Dim Frm_ARTI As IGU_Articles
Frm_ARTI = New IGU_Articles()
Frm_ARTI.MDIParent = Me 'Si tu réalises bien ton appel depuis ta fenêtre
MDI
Frm_ARTI.Show()

Ensuite tu as la collection des MDIChildren disponibles depuis ta fenêtre
MDI qui contient la liste des toutes tes forms MDI enfant ouvertes. A toi de
tester si parmi elles la tienne n'est pas déjà présente.


@+
Steph


"aitoz" a écrit dans le message de news:
%23T8$
Bonjour a tous,
voici le code que je fais pour ouvrir une fenetre a partir de ma feuille
MDI.

Dim Frm_ARTI As IGU_Articles

Frm_ARTI = New IGU_Articles()

Frm_ARTI.ShowDialog()

Ca fonctionne bien, mais le problème est que je ne sais pas comment faire
pour savoir si un formulaire est déjà ouvert !?

Exemple : J'ai un menu pour ouvrir la base article ! si je clique dessus
10 fois ça m'ouvre 10 fois la meme fenetre.

Si je pouvais faire un simple test sur l'existance d'une fenetre ca
m'éviterait de faire une très lourde gestion des enabled à TRUE et FALSE.

Merci de votre aide !




Avatar
PePiCK
Simple réflexion...
Puisque la form semble devoir être appelé qu'une seul fois.

Dim Frm_ARTI As Form


Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem2.Click

If IsNothing(frm_ARTI) Then
Frm_ARTI = New IGU_Articles()
Frm_ARTI.Show()
Else
Frm_ARTI.BringToFront()
End If
End Sub

PePiCK


"aitoz" wrote in message
news:%23T8$
Bonjour a tous,
voici le code que je fais pour ouvrir une fenetre a partir de ma feuille
MDI.

Dim Frm_ARTI As IGU_Articles

Frm_ARTI = New IGU_Articles()

Frm_ARTI.ShowDialog()

Ca fonctionne bien, mais le problème est que je ne sais pas comment faire
pour savoir si un formulaire est déjà ouvert !?

Exemple : J'ai un menu pour ouvrir la base article ! si je clique dessus
10 fois ça m'ouvre 10 fois la meme fenetre.

Si je pouvais faire un simple test sur l'existance d'une fenetre ca
m'éviterait de faire une très lourde gestion des enabled à TRUE et FALSE.

Merci de votre aide !




Avatar
aitoz
Oui pardon ! je me suis planté dans l'exemple que je vous ai donné !
Effectivement je fais la même chose que toi !

Merci pour ton aide en tous cas ! je pense que je vais trouver.
Je ne sais pas trop ou je vais trouver la liste des MDIChild mais bon ! je
vais trouver !

Merci
Avatar
PANIS Jean-Philippe
aitoz a écrit :
Oui pardon ! je me suis planté dans l'exemple que je vous ai donné !
Effectivement je fais la même chose que toi !

Merci pour ton aide en tous cas ! je pense que je vais trouver.
Je ne sais pas trop ou je vais trouver la liste des MDIChild mais bon ! je
vais trouver !

Merci





<LaFenetreMdiParent>.MdiChildren est un tableau d'objets Form contenant
les feuilles MDI Childs...

exemple dans le code d'un formulaire MDI parent:
Me.MdiChildren.Length obtient le nombre de feuilles MDI Child qui sont
présentes...

voila