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

VB.NET Discussion :

Mise à jour formulaire parent à la fermeture de l'enfant ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut Mise à jour formulaire parent à la fermeture de l'enfant ?
    Bonjour,

    Je cherche une commande qui permet de mettre à jour le formulaire parent quand on ferme l'enfant.

    J'explique :

    J'ouvre mon formulaire parent, ensuite via un bouton j'ouvre l'enfant de celui-ci. Dessus j'ai un DataGridView (qu'avec des valeurs numériques), je sélectionne la ligne que je souhaite. A la fermeture de celui-ci j'aimerais que le formulaire parent soit mis à jour avec les valeurs du formulaire enfant que j'ai sélectionné.

    Mes recherche ne m'ayant pas aidé sur ce coup, y-a-t'il une commande, code,... qui peut gérer cela sans fermer le parent et sans avoir besoin de bouton pour faire apparaître la valeur dans le "label" ? Ou un sujet traitant ce problème ?


    Logiciel utilisé : VB Express 2010
    Projet sous Application Windows Forms


    Cordialement,
    Bacube

  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    La seule solution que je connaisse consiste à passer le formulaire parent en paramètre du constructeur du formulaire enfant (ou alors déclarer tes variables en static ).

    Pour la première, à la fermeture du formulaire enfant (évènement FormClosing), tu appelles une méthode de rechargement (créée par tes soins) sur le formulaire parent qui va se charger de mettre à jour les données et l'affichage.

    Sinon si tu passes par du static, t'as juste l'affichage à recharger...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Merci de ton aide ! J'ai du oublier de signaler que ça fait que deux semaine que j'utilise VB Express 2010.

    Si j'ai bien compris, il va falloir que je fabrique un code permettant de passer le formulaire parent en enfant de son enfant le temps d'actualiser l'affichage ?

  4. #4
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Oula non,

    Si t'es débutant en Vb .net, jvais expliquer un poil plus.

    En gros, il faut que tu redéfinisse le constructeur de ton formulaire enfant de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Class FormEnfant
     
    Private formPar as FormParent
     
    Public Sub New(ByVal formParent As FormParent)
    formPar = formParent
    'Comme ça il sera accessible dans tout ton formulaire enfant
    End Sub
    .
    .
    .
    End Class
    Ensuite, à la fermeture de ton formulaire enfant (tu dois pouvoir définir l'évènement FormClosing depuis le designer de ton formulaire), tu appelles une méthode de ton formulaire parent passé en paramètre qui va se charger de rafraichir données et affichage.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub FormEnfant_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormEnfant
            formPar.RefreshData(tesDonnees)
    End Sub
    La variable tesDonnees sera sous la forme dont tu as besoin (string, DataGridViewRow...) et dans cette fonction RefreshData, tu fais le traitement des nouvelles données.


    Ou sinon, (j'avais pas pensé à ça tout à l'heure), tu peux passer un tableau en référence à ton formEnfant de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Class FormEnfant
     
    Private tabData as ArrayList
     
    Public Sub New(Byref tab as ArrayList)
    tabData = tab 
    'Comme ça il sera accessible dans tout ton formulaire enfant
    End Sub
    .
    .
    .
    End Class
    Le fait de passer une variable "ByRef" signifie que les deux objets que tu manipuleras pointeront en fait sur le même...ce qui fait que ce que tu modifieras d'un côté, le sera de l'autre...
    Cependant, tu devras toujours faire un rafraichissement de l'affichage dans ton formulaire parent.

    J'espère avoir été clair en cette fin de journée de fin de semaine

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Merci beaucoup pour ton aide car là je pense que j'aurai jamais trouvé.

    Je vais tester ça et je te tiens au courant.

    Encore Merci!

    Cordialement,
    Bacube

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Bonjour,

    J'ai testé le code de différentes façons, mais sans résultats...

    Voilà ce que j'ai écrit en plus dans mon formulaire enfant :

    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
    Public Class FormEnfant
     
    Private FormPar as FormParent 
     
    Public Sub New(byval FormPar as FormParent) 'New est souligné en vert
    'public sub new(FormPar as FormParent) dans le type généré par le concepteur 'WindowsApplication1.formEnfant' doit appeler la méthode InitializeComponent.
    FormPar = FormParent
    End Sub
     
    Private Sub FormEnfant(Byval Sender As System.object, Byval e as System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    RafraichissementFormParent()
    FormParent.LabelDeRécupération.refresh()
    End sub
     
    End Class

    Je n'ai pas de "RefreshData()", juste "Refresh()", j'espère que ça ne nuira pas à ce que je souhaite faire. De ce fait j'ai créé une fonction RafraichissementAlésage() et LignencoursAlésageSélection().

    La fonction LignencoursAlésageSélection() me permet d'isoler la valeur à utiliser. Je ne la mets pas car elle fonctionne, je l'ai testé avec des msgbox.
    Mais si vous pensez qu'elle vous sera utile, je peux vous la mettre.

    RafraichissementAlésage() étant liée à mon objectif, mettre à jour le formulaire parent, est décrite plus bas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Module Execution
     
    Function RafraichissementFormParent() as string
    FormParent.LabelDeRécupération.text = LignencoursDataGridViewFormEnfantSélection()
    Return FormParent.LabelDeRécupération.text 
    end Function
     
    End Module

    J'ai aussi plusieurs soucis, dans le formulaire Parent car maintenant quand j'appelle le formulaire enfant j'ai une erreur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class FormParent
     
    Private Sub BoutonFormEnfant_click(Byval Sender As System.object, Byval e as System.Windows.Forms.EventArgs) Handles BoutonFormEnfant.Click
    Dim f as New FormEnfant 'f est souligné en rouge
    'Argument non spécifié pour le paramètre 'FormPar' de 'Public Sub New(FormPar as FormParent)'
    F.ShowDialog()
     
    End Class

    Le fait d'utiliser une fonction pour effectuer le Rafraichissement est correct ou non ?


    Je continue de travailler le code en attendant votre aide.


    Cordialement,
    Bacube

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

Discussions similaires

  1. [AC-2007] Mise à jour de recordset sur fermeture formulaire
    Par syntax_error dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/02/2011, 14h52
  2. Message erreur sur Mise à jour formulaire
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 06/10/2006, 08h52
  3. Mise à jour formulaire
    Par zut94 dans le forum Access
    Réponses: 6
    Dernier message: 10/07/2006, 20h28
  4. Mise à jour formulaire
    Par Daniel MOREAU dans le forum Access
    Réponses: 3
    Dernier message: 11/05/2006, 15h43
  5. Mise à jour formulaire !
    Par scorpion1611 dans le forum Access
    Réponses: 7
    Dernier message: 13/01/2006, 09h40

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