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 :

Retour de données dans la Form appelante


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut Retour de données dans la Form appelante
    Bonjour,

    J'ai besoin d'aide sur un problème de retour de valeurs entre 2 Forms.
    Une Form1 appelle une Form2 en mode Modal. A la fermeture de la Form2, je voudrais que des valeurs contenues dans des TextBox de la form2 puissent être récupérées et affichées dans des TextBox de la Form1.

    J'ai pensé à des variables globales mais je pense qu'il y a plus "propre".
    Comment puis-je faire ?

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Pubic Sub form1_button1_click(sender As System.Object, e As System.EventArgs) Handes Button1.Click
        Dim frm as Form2
        frm.ShowDialog()
        Me.Textbox1.Text = frm.TextboxA.Text
        Me.Textbox2.Text = frm.TextboxB.Text
        frm.Dispose()
    End Sub
    Quelque chose dans le genre devrait faire l'affaire.
    Kropernic

  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
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Tu crés ta propre inputBox : Nom : inpubox.jpg
Affichages : 280
Taille : 11,4 Ko

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ' controles utilisé =>  un libellé : lblLibelle ; un TextBox : TxtTexteSaisie ; un bouton : btnOk ; un bouton : btnAnnule
    Public Class frmInputBox
     
        Protected mSAisieVideValide As Boolean = True ' pour définir le comportement du bouton ok
        Protected mTexteARenvoyer As String = ""
     
        ''' <summary>InputBox personnalisé</summary>
        ''' <param name="Titre">Le titre de la fenêtre</param>
        ''' <param name="TexteLibelle">Le libellé à affiché</param>
        ''' <param name="TexteParDefaut">Le texte par défaut affiché dans la TextBox de saisie.</param>
        ''' <param name="TexteSaisie">Le texte saisie. (en byref pour modification)</param>
        ''' <param name="SAisieVideValide">Place des conditions d'acceptation de validation (chaine vide acceptée)</param>
        ''' <returns>Un DialogResult "OK" ou "Cancel"</returns>
        ''' <remarks>La "TexteSaisie" variable est passée en byRef</remarks>
        Public Overloads Function ShowDialog(ByVal Titre As String, _
                                             ByVal TexteLibelle As String, _
                                             ByVal TexteParDefaut As String, _
                                             ByRef TexteSaisie As String, _
                                             ByVal SAisieVideValide As Boolean) As System.Windows.Forms.DialogResult
     
            mSAisieVideValide = SAisieVideValide
            Me.Text = Titre
            Me.LblLibelle.Text = TexteLibelle
            Me.TxtTexteSaisie.Text = TexteParDefaut
            Me.ShowDialog() ' affichage et saisie utilisateur
            TexteSaisie = mTexteARenvoyer
            Return Me.DialogResult
        End Function
     
        ' Autorise la validation d'une chaîne vide si "SAisieVideValide" est vrai
        Private Sub TxtTexteSaisie_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtTexteSaisie.TextChanged
            If Me.TxtTexteSaisie.Text = "" Then Me.BtnOk.Enabled = mSAisieVideValide Else Me.BtnOk.Enabled = True
        End Sub
     
        ' indique la validation et note la valeur
        Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
            Me.DialogResult = System.Windows.Forms.DialogResult.OK
            mTexteARenvoyer = Me.TxtTexteSaisie.Text
            Me.Close()
        End Sub
     
        ' indique l'annulation
        Private Sub btnAnnuler_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnuler.Click
            Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
            mTexteARenvoyer = ""
            Me.Close()
        End Sub
    Appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim TexteRetourne As String = ""
            Dim ib As New frmInputBox
            If ib.ShowDialog("Le titre", "Le libellé :", "texte par défaut.", TexteRetourne, False) = Windows.Forms.DialogResult.Cancel Then
                MsgBox("Annulé")
            Else
                MsgBox(TexteRetourne)
            End If
    Tu peux mettre plusieurs paramètres en byref selon tes besoins.


    S'il y en a beaucoup tu crés une classe et tu la passes en byref. Ou tu utilises des propriétés dans l'inputBox.

    L'exemple avec la classe : Nom : inpuboxMultipleSaisie.jpg
Affichages : 286
Taille : 234,4 Ko
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    ' controles utilisé =>  un libellé : lblLibelle ; deux TextBox : TxtTexteSaisie1, TxtTexteSaisie2 ; un bouton : btnOk ; un bouton : btnAnnule
    Public Class frmInputBoxCls
        Protected mSAisieVideValide As Boolean = True ' pour définir le comportement du bouton ok
     
        ''' <summary>InputBox personnalisé</summary>
        ''' <param name="Titre">Le titre de la fenêtre</param>
        ''' <param name="TexteLibelle">Le libellé à affiché</param>
        ''' <param name="clsTexte">La classe contenant les valeurs à traiter.</param>
        ''' <param name="SAisieVideValide">Place des conditions d'acceptation de validation</param>
        ''' <returns>Un DialogResult "OK" ou "Cancel"</returns>
        ''' <remarks>La classe est passée en byRef</remarks>
        Public Overloads Function ShowDialog(ByVal Titre As String, _
                                             ByVal TexteLibelle As String, _
                                             ByRef clsTexte As Textes, _
                                             ByVal SAisieVideValide As Boolean) As System.Windows.Forms.DialogResult
     
            mSAisieVideValide = SAisieVideValide
            Me.Text = Titre
            Me.LblLibelle.Text = TexteLibelle
            Me.TxtTexteSaisie1.Text = clsTexte.Texte1
            Me.TxtTexteSaisie2.Text = clsTexte.Texte2
            Me.ShowDialog() ' affichage et saisie utilisateur
            If Me.DialogResult = System.Windows.Forms.DialogResult.OK Then
                clsTexte.Texte1 = Me.TxtTexteSaisie1.Text
                clsTexte.Texte2 = Me.TxtTexteSaisie2.Text
            End If
            Me.Close()
            Return Me.DialogResult
        End Function
     
        ' Autorise la validation d'une chaîne vide si "SAisieVideValide" est vrai (traite les 2 boutons
        Private Sub TxtTexteSaisie_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtTexteSaisie1.TextChanged, TxtTexteSaisie2.TextChanged
            If Me.TxtTexteSaisie1.Text = "" Then Me.BtnOk.Enabled = mSAisieVideValide Else Me.BtnOk.Enabled = True
        End Sub
     
        ' indique la validation et note la valeur
        Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
            Me.DialogResult = System.Windows.Forms.DialogResult.OK
        End Sub
     
        ' indique l'annulation
        Private Sub btnAnnuler_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnuler.Click
            Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        End Sub
     
    End Class
    La classe
    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
    24
    25
    26
    27
    28
    29
    Public Class Textes
        Private mTexte1 As String
        Public Property Texte1() As String
            Get
                Return mTexte1
            End Get
            Set(ByVal value As String)
                mTexte1 = value
            End Set
        End Property
     
        Private mTexte2 As String
        Public Property Texte2() As String
            Get
                Return mTexte2
            End Get
            Set(ByVal value As String)
                mTexte2 = value
            End Set
        End Property
     
        Sub New()
        End Sub
     
        Sub New(ByVal t1 As String, ByVal t2 As String)
            Texte1 = t1
            Texte2 = t2
        End Sub
    End Class
    L'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim LesValeurs As Textes = New Textes("val1", "valeur2")
            Dim ibc As New frmInputBoxCls
            If ibc.ShowDialog("Le titre", "Le libellé :", LesValeurs, True) = Windows.Forms.DialogResult.Cancel Then
                MsgBox("Annulé")
            Else
                MsgBox(LesValeurs.Texte1 & " " & LesValeurs.Texte2)
            End If
    Voila des exemples à adapter suivant les besoins.
    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 habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    Merci.
    2 solutions qui conviennent parfaitement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/08/2014, 08h48
  2. [2.x] Pas de donnée dans mon Form
    Par jejeman dans le forum Symfony
    Réponses: 2
    Dernier message: 13/12/2013, 09h47
  3. Réinjecter des données dans un form. indépendant
    Par clickandgo dans le forum IHM
    Réponses: 2
    Dernier message: 30/01/2011, 13h35
  4. [1.x] Affichage de données dans un form embarqué
    Par erictomcat dans le forum Symfony
    Réponses: 23
    Dernier message: 24/01/2011, 12h17
  5. Réponses: 1
    Dernier message: 24/08/2007, 11h25

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