Application MDI (VB.Net)

Résolu
NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005 - 1 sept. 2005 à 22:32
sktemoyala Messages postés 1 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 31 octobre 2011 - 31 oct. 2011 à 16:25
Je suis sur un projet avec un feuille MDI et feuilles Childs.
Sur ma feuille MDI, j'ai un statusbar avec 3 panels.
J'aimerais lorsque je ferme un formulaire enfant modifier le texte du panel 1 par exemple.
Comment dois-je faire ?

12 réponses

NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005
2 sept. 2005 à 21:16
J'ai enfin trouvé !!!! houra !!!
Merci beaucoup pour ton aide, ça m'a éclairé...
Détail de ma solution (ça peut être utile pour d'autre et ça vient en complément de tes explications):

Dans la feuille MDI :


Public
Class Form1

Inherits System.Windows.Forms.Form

Public MDIFilleActive
As Form2

Private
Sub mnuNew_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
handles mnuNew.Click
MDIFilleActive =
New Form2()
MDIFilleActive.MdiParent =
Me
MDIFilleActive.Show()

With
Me
.StatusBar1.Text = "NetJoao"

End
With
End
Sub

Dans la feuille ENFANT :


Public Class Form2

Inherits System.Windows.Forms.Form
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click

Dim f
As Form1

With
Me
f = .MdiParent
f.StatusBar1.Text = "NetJoao -- Réussi !!!"

End
With
End s
ub

Encore merci pour ton aide scortex84.
3
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
2 sept. 2005 à 10:38
Hello,

tu passes en parametre ta feuille MDI aux feuilles filles, ou alors tu déclares une variable public du type : monformMDI as new maformMDI

Sur le close des feuilles mdi, tu fais monformMDI.panel1.text = "Coucou" (je ne sais pas si panel a une propriete texte...)

Bon courage !

Seb.
0
NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005
2 sept. 2005 à 12:05
Salut,
Merci de t'intéresser à mon problème.
Mais ta réponse ne me convient pas car tu me dis de modifier le panel (il y a une propriété text) à l'évènement close de la feuille MDI. Je ne souhaite pas fermer ma feuille MDI !
J'ai ma feuille MDI et dans cette feuille MDI plusieur feuille enfant d'ouverte, je veux sur activation d'une feuille enfant, Modifier mon statusbar.
Comment faire ?
Merci de ton aide...
0
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
2 sept. 2005 à 14:14
Pardon, petit erreur. Pas sur le close de la MDI mais sur le close de ma feuille fille !!! Ou sur l'evenement que tu veux !!! Activate, ou autre.

Voilou en tout cas ça fonctionne !

Bon courage,

Seb.
0

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

Posez votre question
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
4 sept. 2005 à 21:15
Hello,

C'est ce que je t'expliquais, tu t par contre un peu compliqué la vie... Mais bon, l'essentiel est que cela marche et que tu sois content !

Seb.
0
NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005
5 sept. 2005 à 07:14
Salut,
Je suis ouvert à une solution plus simple, si tu veux bien ?
NetJoao.
0
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
6 sept. 2005 à 10:42
Salut, je note une mauvaise utilisation des with, voici un code plus simple (je ne rentrerai pas dans les détails plus techniques). Bonne prog !

Public
Class Form1

Inherits System.Windows.Forms.Form

Public MDIFilleActive
As Form2

Private
Sub mnuNew_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
handles mnuNew.Click
MDIFilleActive =
New Form2()
with MDIFilleActive

.MdiParent = Me
.Show()

end with

StatusBar1.Text = "NetJoao"

End
Sub

Dans la feuille ENFANT :


Public Class Form2

Inherits System.Windows.Forms.Form
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click

MdiParent.f.StatusBar1.Text = "NetJoao -- Réussi !!!"

End s
ub

L'homme était,est et sera un éternel apprenti
0
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
6 sept. 2005 à 10:46
oups ! petite erreur minime !

Dans la feuille ENFANT :


Public Class Form2

Inherits System.Windows.Forms.Form
Private
Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click

MdiParent.StatusBar1.Text = "NetJoao -- Réussi !!!" 'le ".f" était en trop
End
s
ub

L'homme était,est et sera un éternel apprenti
0
NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005
6 sept. 2005 à 11:31
Salut,
Je suis d'accord avec toi pour le with dans la feuille MDI.
Par contre ton code ne marchera pas dans la feuille enfant. Tu es obligé de déclarer une variable ("f") qui instancie le Form1, sans ça tu n'auras pas la main sur le "StatusBar1" !
J'ai testé ton code dans mon appli. il marche pas !
0
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
6 sept. 2005 à 17:22
J'avoue l'avoir fait à l'oeil, j'ai pas visual studio sous la main. Cependant ne serait pas un truc d'option explicite qui est configuré sur ON ? perso je l'enleve car je trouve ce mode trop contraignant sans aucune tolérance à l'inconnu et ... à l'erreur (pour certain cette tolérance à l'erreur est une calamité, personnelement je la trouve d'une utilité essentielle dans l'utilisation des HashTable pour stoker des objet de type différents indeterminé) . Cependant je comprends tout à fait que ce code génère une erreur car on travaille sur un System.Windows.forms.form (qui ne contient pas par défaut de StatusBar1, bien sur ...) . Je me dit donc qu'en le Ctypant ca donnerai ca:

CType(MdiParent,Form1).StatusBar1.Text = "NetJoao -- Réussi !!!"

ou si on en a une utilisation répété ca donnerai ca

With Ctype(MdiParent,Form1)

.StatusBar1.Text = "bla bla"
.AutreObjet.AutrePropriete = Valeur

End With

Enfin je dis ca sans tester, juste par intuition ... Dans l'histoire on économiserai une definition de pointeur (je sais, ca fait gros radin ... mais j'entrevois ca dans une utilisation massive)

Vali vala ... Bonne prog !

L'homme était,est et sera un éternel apprenti
0
NetJoao Messages postés 22 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 29 septembre 2005
6 sept. 2005 à 21:12
Merci pour ta participation et il est vrai que l'on apprends tout le temps et de tous....
Bonne prog. !
0
sktemoyala Messages postés 1 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 31 octobre 2011
31 oct. 2011 à 16:25
Bonjour

Je voudrais créer une application en vb 2008 en utilisant les mdi forms mais je n'y arrive pas. Votre contribution me sera très utile

Merci
0
Rejoignez-nous