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 :

Transfert d'un objet Dico de form à form [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut Transfert d'un objet Dico de form à form
    Bonjour,
    j'ai 2 form 1 et 2.
    dans ma form1 je crée un Dictionnaire :
    Dim dico As New Dictionary(Of Integer, String)
    Ensuite j'ouvre la form2 par :
    Form2.ShowDialog(Me)
    Dans cette form2, j'aimerai remplir le dico (genre dico.add(1,"bouh!!").
    Quitter la form2 et revenir à ma form1 et pouvoir utiliser le contenu de mon dico.
    Si je résume, juste besoin de savoir comment transférer mon dico d'une form à l'autre, puis le récupérer dans la form1...
    Merci
    Patrick

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Un méthode parmi d'autres :

    Tu peux créer ta variable dico comme public dans ta form1 et passer une référence sur ta form1 lors de l'initialisation et l'appel de ta form2. Cela donne un truc du genre :

    Pour la form1 :

    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
     
    Public Class Form1
        Public variable As Integer
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            variable = 1
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim dial As New Form2(Me)
     
            dial.ShowDialog()
     
            MessageBox.Show(variable.ToString())
        End Sub
    End Class
    Pour la form2 :

    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
     
    Public Class Form2
        Private frm As Form1
     
        Public Sub New()
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        End Sub
     
        Public Sub New(ByRef pfrm As Form1)
            InitializeComponent()
     
            frm = pfrm
     
     
            frm.variable = 2
        End Sub
    End Class
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,
    D'autre solutions,

    Si tu dois garder ton paramètre fenetre dans le new (pas mis pour ne pas surcharger l'exemple en code)
    Tu utilises une propriété
    Dans Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private LeDico As Dictionary(Of Integer, String)
        Public Property Dico() As Dictionary(Of Integer, String)
            Get
                Return LeDico
            End Get
            Set(ByVal value As Dictionary(Of Integer, String))
                LeDico = value
            End Set
        End Property
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            LeDico.Add(2, "coucou")
        End Sub
    Utilisation dans Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Dim f As Form2 = New Form2()
            Dim dico As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
            f.Dico = dico
            f.ShowDialog()
            ' Visu
            For Each el As KeyValuePair(Of Integer, String) In dico
                MsgBox(el.Key.ToString & " " & el.Value)
            Next

    Si tu peux faire sans ton paramètre fenetre dans le new (sinon tu peux aussi faire avec 2 paramètres : la fenêtre et le dico)
    Tu passes directement le dico en paramètre de la form
    Dans Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Sub New()
            InitializeComponent()
        End Sub
     
        Private LeDico As Dictionary(Of Integer, String)
        Sub New(ByRef UnDico As Dictionary(Of Integer, String))
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            LeDico = UnDico
            LeDico.Add(1, "by new")
        End Sub
    Utilisation dans Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim dico As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
            Dim f As Form2  = New Form2(dico)
            f.ShowDialog()
            ' Visu
            For Each el As KeyValuePair(Of Integer, String) In dico
                MsgBox(el.Key.ToString & " " & el.Value)
            Next
    Ou


    Avec ses 2 méthodes form2 n'est pas lié à form1 tu peux donc réutiliser ta form2 avec d'autres fenêtres.
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Tout à fait d'accord avec rv26t, il y a plusieurs solutions pour ce soucis, à toi de choisir celle qui te convient le mieux
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Bonjour,
    et merci à vous 2 pour ce choix de solutions.
    Je pense prendre la dernière qui me parait être la plus courte et simple.
    Comme je vais surement avoir à traiter un "certain" volumes de données, il me faut du code simple et efficace, à moins que vous ayez une idée encore plus courte
    Merci encore et bon dimanche.
    Patrick

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Par défaut
    Re-bonjour,
    Pour ceux que cela intéresse, j'ai trouvé une autre solution qui n'est surement pas aussi Pro que celles proposées, mais il semble qu'elle fonctionne aussi...
    Dans ma Form2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Imports...
    Public Class form2
        Dim UrlEncode As New CL_WebRequest
        Public mdico As New Dictionary(Of Integer, String)
        Private Sub Request1_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Request1.LostFocus
            mdico.Add(1, UrlEncode.SearchEncode(Request1.Text))
        End Sub
    etc... End Class
    Dans Form1, lecture du dico :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub RechercheToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RechercheToolStripMenuItem.Click
            form2.ShowDialog(Me)
            If form2.DialogResult = DialogResult.OK Then
                MsgBox("  --  mondico : " & form2.mdico.Item(1))
            End If
        End Sub
    Voila, j'espère que cela servira aussi à d'autre qui tâtonnent comme moi...
    En revanche si vous voyez qlq chose qui cloche dans mon code et ma façon, merci de m'en faire part
    Patrick

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

Discussions similaires

  1. Objet Balle dans un form
    Par intheair dans le forum Débuter
    Réponses: 17
    Dernier message: 13/12/2009, 10h45
  2. Remplir l'objets listview d'une form avec une dll
    Par Jap dans le forum Windows Forms
    Réponses: 11
    Dernier message: 28/09/2009, 20h54
  3. copie d'un objet shape sur une form
    Par JockdiL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/09/2008, 19h33
  4. déplacer un objet TLabel sur une Form
    Par darkangel37 dans le forum C++Builder
    Réponses: 14
    Dernier message: 14/06/2006, 10h36
  5. Pb pour changer la taille d'un Objet TImage dans une Form
    Par Gouyon dans le forum C++Builder
    Réponses: 10
    Dernier message: 06/06/2006, 18h01

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