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 Presentation Foundation Discussion :

WPF - Transfert d'un Objet entre fenteres [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut WPF - Transfert d'un Objet entre fenteres
    Salut tout le monde,

    je débute WPF pour développer une application bureau, et je sais déjà coder en vb.net. Voici donc mon problème.

    Je dispose de deux fenêtres (Frm_R et Frm_A) en ( XAML ), une pour représenter un objet R et une pour un objet A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    R a Trois propriétés ID, VALUE et ArrayList of<A>
    A a Deux propriétés ID, VALUE
    Depuis la fenêtre Frm_R j'initialise un objet R contenant ses informations avec une liste d'objets A qui au départ vide. Quand Je veux remplir la liste d'objets A, j'ouvre une une nouvelle fenêtre Frm_A afin de pouvoir ajouter de nouveaux objets de type A. Lors de l'ouverture de Frm_A je passe un objet de type R afin de remplir directement sa liste d'objets de type A ( R.List_Of_A). Je ferme la Frm_A, je reTransmets l'objet R vers Frm_R. Tout ce passe bien.

    Quand je veux modifier la liste des objets A contenu dans R, j'ouvre la Frm_A afin de pouvoir modifier. Quand j'applique les modifications je perds toute la liste comme si l'objet R est créé pour la premiere fois ( vide ).

    Quelqu'un peut me dire comment je peux partager l'Objet R entre Frm_R et Frm_A : C'est à dire transmettre R depuis Frm_R vers Frm_A et de Frm_A vers Frm_R autant de fois que necessaire et en gardant son etat apres modifications ?

    NB 1 : Frm_A peut être appelée hors de Frm_R seule ou par d'autres fenêtres.



    Merci.

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Si tu passes l'objet, tu le partage. A mon avis, c'est un problème de logique quand tu retournes à la form Frm_R

    Il faudrait que tu montre ton code pour qu'on puisse y jeter un oeil
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Si tu passes l'objet, tu le partage. A mon avis, c'est un problème de logique quand tu retournes à la form Frm_R

    Il faudrait que tu montre ton code pour qu'on puisse y jeter un oeil
    Merci d'avoir repondu
    Le code contient beaucoup de ligne, et mes objets contiennent aussi beaucoup d'informations.. j'ai essayé de simplifier l'idée afin d'éviter de mettre du code ( d'ailleurs je ne dispose pas le droit de le publier, navré !)
    Si vous pourriez me donner un exemple simple ça sera cool de votre part !

    Merci pour votre aide precieuse

  4. #4
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Pas sûr qu'un exemple simple serait utile, car probablement trop simple.

    Une façon un peu fastidieuse, mais qui devrait te donner une piste, serait de mettre un debug sur les lignes qui instancient ta liste ou qui font un clear/delete des items. Comme ça tu peux voir si, quand tu quittes la from, si tu passes par un endroit qui remets la lsite à zéro.
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Pas sûr qu'un exemple simple serait utile, car probablement trop simple.

    Une façon un peu fastidieuse, mais qui devrait te donner une piste, serait de mettre un debug sur les lignes qui instancient ta liste ou qui font un clear/delete des items. Comme ça tu peux voir si, quand tu quittes la from, si tu passes par un endroit qui remets la lsite à zéro.
    je comprends pas bien, je vais essayais comme meme d'appliquer votre consigne.

    Aussi, faudra -t-il que je mette une partie du code pour voir comment remédier le problème

  6. #6
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Non pas donner de code, je veux dire que si ta liste se vide, c'est qu'il y a quelque part une instruction qui en est responsable. Donc si tu mets un debug sur toutes les lignes où soit tu assignes (avec un new) soit tu vide la liste, tu devrais tomber sur un de ces lignes quand tu fermes ta form, ça t'aideras à comprendre pourquoi il passe sur cette ligne
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Non pas donner de code, je veux dire que si ta liste se vide, c'est qu'il y a quelque part une instruction qui en est responsable. Donc si tu mets un debug sur toutes les lignes où soit tu assignes (avec un new) soit tu vide la liste, tu devrais tomber sur un de ces lignes quand tu fermes ta form, ça t'aideras à comprendre pourquoi il passe sur cette ligne
    D'accord, je vais essayer d'appliquer ce que vous proposez... et même je metterai une partie du code afin que vous puissiez analyser si la methode que je suis est bonne ou bien, je deverai changer de logique

    Merci

  8. #8
    Membre habitué Avatar de linke
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    bonsoir
    c'est des cas qu on rencontre beaucoup , quand on utilise des langage de haut niveau.
    les langes évolués masque beaucoup d'information bas niveau que je trouve dommage
    pour ton problème de liste, je te conseil aussi le débogage pas a pas en plus de rajouter des espions
    au pire, si ton projet est énorme ,dans ce cas une méthode radicale est de passer par des set property de tes objets est d'imprimer une de leurs property a chaque changement, comme ça même si ton objet est transféré ailleurs , normalement il doit rester pareil

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par linke Voir le message
    bonsoir
    c'est des cas qu on rencontre beaucoup , quand on utilise des langage de haut niveau.
    les langes évolués masque beaucoup d'information bas niveau que je trouve dommage
    pour ton problème de liste, je te conseil aussi le débogage pas a pas en plus de rajouter des espions
    au pire, si ton projet est énorme ,dans ce cas une méthode radicale est de passer par des set property de tes objets est d'imprimer une de leurs property a chaque changement, comme ça même si ton objet est transféré ailleurs , normalement il doit rester pareil
    Merci d'avoir pris du temps a repondre, je suis encore novice en programmation, j'ai pas bien sais ce que vous avez dit, pouvez vous m'indiquer comment faire ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    J'ai pas trouvé comment modifier la discussion

    alors je mets le code dans cette reponse :

    Code de Frm_R, Evenement click du bouton ajouter A :

    Code vb.net : 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
    24
    25
    Private Sub Add_A()
            Dim aw As New Frm_A
     
            'Initialisation des valeurs dans l'objet R à passer en parametre
            Me.Get_R.Id = txt_id_R.Text
            Me.Get_R.Value = txt_val_R.Text
     
            'Ajouter/modifier liste des articles
     
            'transferer R dans un combobox existant sur la Frm_A
            aw.cmb_id_R.ItemsSource = {Me.get_R}    
     
            aw.ShowDialog()
     
            'aw.Get_R est une property de Frm_A afin de pouvoir manipuler le contenu de R
            If aw.IsLoaded = True Then
                Me.Get_R = aw.Get_R
     
                Refrech_A_List(Me.Get_R.Alist)
                'MessageBox.Show("AW unloaded")
            End If
     
            MessageBox.Show(" Articles IN " & aw.Get_R.AlistCount)
     
        End Sub


    code Frm_A :

    Code d'ajout nouveau A :

    Code vb.net : 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
    Private Sub Add_New()
     
                    'Je recupere l'objet R envoyé depuis Frm_R
                    Dim r As New R(cmb_rec.SelectedItem)
     
                    'Je crée un nouveau A
                    Dim a As New A(txt_Id_A.Text, txt_Value_A.Text )
     
                    If adao.Exist(txt_Id_A.Text) Then
                        MessageBox.Show("ID existant ! ")
                    Else
                            r.Alist.add(a)
                            'Affichage d'article dans listbox
                            RefrechList()
                   End If
     
     End Sub

    Merci de corriger mon code ou de proposer une logique plus approprié a mon cas Merci encore.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Merci a tout le monde, j'ai pu réglé le problème.

    La solution consiste a déclarer l'objet R comme " Shared " afin de pouvoir le manipuler dans l'autre fenêtre qui s'ouvre. Comme ça j'aurai un partage de l'objet R entre les deux fenêtres, et je peux le modifier directement depuis la deuxième fenêtre.

    Merci

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

Discussions similaires

  1. [N-Tier] Problème transfert d'objets entre les couches
    Par Hajer.B dans le forum Autres
    Réponses: 1
    Dernier message: 30/08/2008, 10h48
  2. Réponses: 5
    Dernier message: 17/08/2005, 12h40
  3. [langage] Passage d objet entre deux fichiers
    Par Slippers dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2005, 14h45
  4. Réponses: 4
    Dernier message: 02/01/2005, 23h24
  5. Transfert d'un objet d'une JSP vers une Servlet
    Par biohazard dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 21/06/2004, 16h51

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