IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Formulaire MDI, Dialogue entre-formulaire, Problème Me.Owner ?


Sujet :

Windows Forms

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut Formulaire MDI, Dialogue entre-formulaire, Problème Me.Owner ?
    Salut,

    Voilà j'ai un formulaire FormA qui ouvre un formulaire FormB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim frmAjout As New FormB()
    frmAjout.ShowDialog(Me)
    A la fermeture du formulaire FormB je voudrais avoir accès à une procédure (que j'ai placé en Public)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim frmOuvrant As FormA
    frmOuvrant = CType(Me.Owner, FormA)
    ' Accès à la procédure
    frmOuvrant.RemplirCboMarque()
    Ces codes fonctionnent bien... mais hors d'un formulaire mdi...

    En effet le formulaire FormA est ouvert ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim frmAjoMod As New FormA()
    frmAjoMod.MdiParent = frmMDI
    frmAjoMod.Show()
    Et donc, Me.Owner contient frmIndex

    Comment pallier à ce problème ?

    Merci

    Gwendal

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut
    re,

    Bon OK en deux jours, c'est la deuxième fois que je me réponds... C'est pourtant pas fautes de chercher !

    Bon la réponse:
    A la fermeture du formulaire FormB je voudrais avoir accès à une procédure (que j'ai placé en Public)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim frmOuvrant As FormA frmOuvrant = CType(Me.Owner.ActiveMdiChild, FormA)
     ' Accès à la procédure 
    frmOuvrant.RemplirCboMarque()
    Me.Owner.ActiveMdiChild à la place de Me.Owner



    Gwendal

    PS: Je ne mets pas ce sujet en Délestage parce que je pense qu'il peut être utile à d'autres... Modérateur (The_badger_man) si tu ne penses pas comme moi, place ce post en DELESTAGE

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut
    re,

    Je me permets de revenir sur mon post car j'ai toujours un problème du même ordre.

    Je replace le contexte avec un peu plus.

    J'ai un formulaire principal MDI, FormMDI, qui ouvre un autre formulaire enfant FormA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ChildFrmA As New FormA()
    ChildFrmA.MdiParent = Me
    ChildFrmA.Show()
    Dans le formulaire FormA, j'ai un bouton qui ouvre un autre formulaire FormB, qui est enfant du formulaire MDI.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ChildFrmB As New FormB
    ChildFrmB.MdiParent = FormMDI
    ChildFrmB.Show()
    Jusque là je n'ai pas de problème. Par contre ce que je souhaiterais faire c'est pouvoir avoir accès à une procédure Public du formulaire FormA.
    Je connais l'instruction Owner, que j'ai utilisé plus haut. Mais je ne peux pas utiliser ChildFrmB.Showdialog(Me)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ChildFrmB As New FormB
    ChildFrmB.MdiParent = FormMDI
    ChildFrmB.Showdialog(Me)
    Autrement j'obtiens une erreur sur le niveau des formulaires...

    Comment faire pour utiliser owner ? Ou pour avoir accès à la procédure public du formulaire FormA ?

    Merci

    Gwendal

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Si c'est toujours FormA qui ouvre FormB, pourquoi ne pas créer un property MaFormAParente dans FormB que tu initialises avant le show ?

    Cdt.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut
    Salut,

    Désolé pour le délais...

    En 3 bouts de code sa donnerait quoi ?

    Merci

    Gwendal
    Vu le nombre de réponse, après je clôture.....

  6. #6
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    T'es drolement exigeant là ! Mais bon c'est presque noël (à 8 mois prés) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim f As New Form2
            f.MaForm1Parente = Me
            f.Show()
        End Sub
        Friend Sub test()
            MsgBox("Yop man !")
        End Sub
    End Class
     
    Public Class Form2
        Private frmMaForm1Parente As Form1
        WriteOnly Property MaForm1Parente() As Form1
            Set(ByVal value As Form1)
                frmMaForm1Parente = value
            End Set
        End Property
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            frmMaForm1Parente.test()
        End Sub
    End Class
    Cdt.

  7. #7
    Membre actif
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Points : 283
    Points
    283
    Par défaut
    Citation Envoyé par olsimare
    Bonjour.

    T'es drolement exigeant là ! Mais bon c'est presque noël (à 8 mois prés) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim f As New Form2
            f.MaForm1Parente = Me
            f.Show()
        End Sub
        Friend Sub test()
            MsgBox("Yop man !")
        End Sub
    End Class
     
    Public Class Form2
        Private frmMaForm1Parente As Form1
        WriteOnly Property MaForm1Parente() As Form1
            Set(ByVal value As Form1)
                frmMaForm1Parente = value
            End Set
        End Property
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            frmMaForm1Parente.test()
        End Sub
    End Class
    Cdt.
    Sa ne fonctionne pas il me génère 2 erreurs:
    1)_ il me dit que f.MaForm1Parente = Me est en private donc non utilisable dans ce contexte, alors je l'ai déclaré en public.
    2)_ sur le l'appel de la fonction depuis la form 2 sa plante j'ai le message suivant:
    System.NullReferenceExeption: La référence d'objet n'est pas définie à une instance.

  8. #8
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Tout cela marche chez moi (je ne poste jamais de code sans tester).

    Le code que tu utilises est strictement le même ?

    Question subsidiaire et stupide : tu as bien créés les 2 forms (avec un boutton) et inséré le bon code dans chaque form ?

    Cdt.

  9. #9
    Membre actif
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Points : 283
    Points
    283
    Par défaut
    Citation Envoyé par olsimare
    Bonjour.

    Tout cela marche chez moi (je ne poste jamais de code sans tester).

    Le code que tu utilises est strictement le même ?

    Cdt.
    Bah oui j'ai fait un copier coller de ton code sur form1 et un autre sur form2

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut
    Salut,

    Sa fonctionne nickel pour moi....

    Je classe en resolu.... Mais dit nous quand même si tu as réussi

    J'ai rajouté Public devant (par habitude)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public WriteOnly Property MaForm1Parente() As Form1
            Set(ByVal value As Form1)
                frmMaForm1Parente = value
            End Set
        End Property
    Merci beaucoup

    Gwendal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Navigation entre formulaire principal et sous formulaire
    Par neiluj26 dans le forum IHM
    Réponses: 6
    Dernier message: 27/08/2010, 15h33
  2. Erreur de dialogue entre formulaire père et fils
    Par talrashha dans le forum IHM
    Réponses: 3
    Dernier message: 22/08/2008, 14h38
  3. Réponses: 0
    Dernier message: 12/05/2008, 19h40
  4. Réponses: 23
    Dernier message: 25/04/2007, 16h36
  5. problème déplacement entre formulaire
    Par estancha dans le forum IHM
    Réponses: 6
    Dernier message: 07/10/2004, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo