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

Appli MDI et instanciation de Windows.Forms Child

6 réponses
Avatar
Gerald
Bonjour
je suis sous vb 2008

dans une form MDIParent, j'ouvre de nouveau forms

'--------------------------------------------------
Private Sub s_AfficheFrmBibliotheques() ' Appelé a partir d'un bouton
Dim F As New frmBibliotheques
F.MdiParent = Me
F.Show()
End Sub
'--------------------------------------------------

mais je peux ouvrir aussi le form Projet par exemple (avec son bouton)
comment puis-je savoir quel formulaire est chargé (instancié)

ce code (et pour cause) me charge un nombre indetermine de formulaire
frmBibliotheques

Merci

6 réponses

Avatar
Bonjour Gerald,

En utilisant 1 variable publique ? (Je vois pas comment faire autrement.)

Stéphane.


"Gerald" a écrit dans le message de news:

Bonjour
je suis sous vb 2008

dans une form MDIParent, j'ouvre de nouveau forms

'--------------------------------------------------
Private Sub s_AfficheFrmBibliotheques() ' Appelé a partir d'un bouton
Dim F As New frmBibliotheques
F.MdiParent = Me
F.Show()
End Sub
'--------------------------------------------------

mais je peux ouvrir aussi le form Projet par exemple (avec son bouton)
comment puis-je savoir quel formulaire est chargé (instancié)

ce code (et pour cause) me charge un nombre indetermine de formulaire
frmBibliotheques

Merci



Avatar
Gerald
Merci, c'est ce que je voulais eviter mais je vais utiliser cette solution
en attendant qqchose de mieux





<Stéphane> a écrit dans le message de news:

Bonjour Gerald,

En utilisant 1 variable publique ? (Je vois pas comment faire autrement.)

Stéphane.


"Gerald" a écrit dans le message de news:

Bonjour
je suis sous vb 2008

dans une form MDIParent, j'ouvre de nouveau forms

'--------------------------------------------------
Private Sub s_AfficheFrmBibliotheques() ' Appelé a partir d'un bouton
Dim F As New frmBibliotheques
F.MdiParent = Me
F.Show()
End Sub
'--------------------------------------------------

mais je peux ouvrir aussi le form Projet par exemple (avec son bouton)
comment puis-je savoir quel formulaire est chargé (instancié)

ce code (et pour cause) me charge un nombre indetermine de formulaire
frmBibliotheques

Merci







Avatar
Jérémy Jeanson
Vade retro variable publique...

Il existe une collection que fait exactement ce que tu cherches Gerald,
Application.OpenForms
(je crois que le nom de la collection est plutôt explicite :))

Avec cette collection tu devrais pouvoir faire exactement ce que tu veux.
--
Jérémy JEANSON
MCP
http://jeremy.blogdns.net
Avatar
Jacquouille14
Gerald a écrit :
Merci, c'est ce que je voulais eviter mais je vais utiliser cette solution
en attendant qqchose de mieux





<Stéphane> a écrit dans le message de news:

Bonjour Gerald,

En utilisant 1 variable publique ? (Je vois pas comment faire autrement.)

Stéphane.


"Gerald" a écrit dans le message de news:

Bonjour
je suis sous vb 2008

dans une form MDIParent, j'ouvre de nouveau forms

'--------------------------------------------------
Private Sub s_AfficheFrmBibliotheques() ' Appelé a partir d'un bouton
Dim F As New frmBibliotheques
F.MdiParent = Me
F.Show()
End Sub
'--------------------------------------------------

mais je peux ouvrir aussi le form Projet par exemple (avec son bouton)
comment puis-je savoir quel formulaire est chargé (instancié)

ce code (et pour cause) me charge un nombre indetermine de formulaire
frmBibliotheques

Merci










Bonjour,
Peut être en partant de :
if ctype(sender,form).name="le nomd e la form" then ...

--
Jacques dit Jacquouille
Avatar
Bonjour Jérémy,

Petite interrogation :
Et si les 2 forms succeptibles d'appeler l'autre form sont ouverts en même
temps ?

Stéphane.

PS : Ah non ! Mon rétro ! ^_^


"Jérémy Jeanson" a écrit dans le message de news:

Vade retro variable publique...

Il existe une collection que fait exactement ce que tu cherches Gerald,
Application.OpenForms
(je crois que le nom de la collection est plutôt explicite :))

Avec cette collection tu devrais pouvoir faire exactement ce que tu veux.
--
Jérémy JEANSON
MCP
http://jeremy.blogdns.net


Avatar
Jérémy Jeanson
Re,

Avec Vb .net il faut penser différemment de Vb6. Avant on avait de
"belles" variables publiques Form1, Form2 ...etc... que l'on ne
suspectait même pas des des variables publiques... cela nous semblait
tellement logique que Form1 était Form1 et non pas "une instance
publique" de Form1...

Donc maintenant on pense objet, tout objet:
-> Quand on créé une instance d'un objet, personne ne nous interdit d'en
créer une ou plusieurs autres.

Dans ton cas tu peux créer autant de Form1 que tu veux, car tout objet à
le droit de créer un Form1 et donc un Form1 peut créer un Form1. pas de
soucis et pas d'accrochage en perspective.

Par contre pour revenir à ton histoire de MDI, il faut noter deux
petites choses :
- Tu devras toujours déterminer les MdiParent d'un From, donc pour un
nouveau Form2 par exemple qui veut ouvrir un autre Form2 il faut
utiliser un code du genre:
Dim f As New Form2()
f.MdiParent = Me.MdiParent
f.Show()

- Ton conteneur MDI a lui aussi une liste des Forms qui sont instanciés
dans son conteneur : Me.MdiChildren()

En espérant t'avoir un peu plus éclairer sur les MDI et l'usage des
Forms Vb.net vis à vis de Vb6.
--
Jérémy JEANSON
MCP
http://jeremy.blogdns.net