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 :

Récupérer valeur d'une textbox ou combobox créé dynamiquement.


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Récupérer valeur d'une textbox ou combobox créé dynamiquement.
    Bonjour à tous !

    J'ai un problème pour créer un algorithme qui me permette de récupérer les valeurs d'un item actif (sélectionné donc par l'utilisateur), sur une combobox ou d'un texte entré dans une textbox que je créé dynamiquement à partir d'un fichier XML.

    Je m'explique :

    J'ai un fichier donc XML qui contiens des lignes de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Exercice>
      <Ligne LigneLabel1="Texte dans un label" Réponse="Texte à écrire dans la textbox" Lignelabel2="Fin de mon texte" Type="TextBox"/>
    <Exercice/>
    En gros je créé une fenêtre dynamiquement donc avec un 1er label ou je rentre le texte de mon LigneLabel1, ensuite si Type="TextBox" alors je lui ajoute une textbox à coté sinon si c'est une combobox alors une combobox s'ajoute, et enfin à coté de la textbox ou de la combobox j'ajoute un autre label qui contiens le texte dans Lignelabel2.

    Ce fichier ce modifie comme bon semble à l'utilisateur donc on ne sais jamais si a telle ou telle ligne j'ai une combobox ou une textbox.

    A savoir, dans ce logiciel, il y à différentes sessions : une session administrateur, et des sessions utilisateur.
    L'administrateur à le pouvoir de modifier le fichier XML à sa guise.
    L'utilisateur lui n'en verra que le résultat avec les labels et textbox ou combobox.
    Enfin, une foi que l'utilisateur à remplis ce qu'il pense etre les bonnes valeurs (dans les textbox et combobox), c'est à dire, les valeurs entrées préalablement par l’administrateur, l'utilisateur à un bouton Valider.

    Lors d'un clic sur ce bouton, je veux vérifier si ce qu'il à entré dans les textbox ou sélectionné dans les combobox correspond au résultat attendu (la valeur entrée par l'administrateur donc).


    Mais voila : Je ne sais pas comment savoir ce qui doit etre dans la textbox(x) car la premiere textbox peut etre dans la premiere ligne ou la seconde ou la 100ème :/

    Donc en gros je cherche une solution simple qui permette de dire la 1ere textbox c'est la ligne 5 et la reponse est "Reponse ligne 5" pour pouvoir traiter l'information derrière :
    Si TextBox1 = Reponse ligne 5 alors
    msgbox("Reponse correcte.")

    Voila voila merci par avance.

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    peux-tu nous montrer un peu de ton code (notamment la génération des contrôles) ?
    Tu m'as perdu à partir du "mais voilà", et un bout de code vaut mieux qu'un long discours
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    oui biensur ^^

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
        Dim TB_Sélect As TextBox 'Créé un objet TextBox de nom "TB_Sélect".'
        Dim Taille_Label As New Size 'Créé un objet Taille (X,Y) de nom "Taille_Label".'
        Dim TB_Reponse As New List(Of TextBox) 'Créé une liste d'objet TextBox de nom "TB_Reponse".'
        Dim LBL_Exercice As New List(Of Label) 'Créé une liste d'objet Label de nom "LBL_Exercice".'
        Dim CB_Reponse As New List(Of ComboBox) 'Créé une liste d'objet ComboBox de nom "CB_Reponse".'
     
        '=============================Programme============================='
     
        Private Sub Page_Exercices_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'S'exécute lors du chargement de la fenêtre Page Exercices.'
     
            Me.Text = "Exercice " & Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Titre
            LBLnom.Text = Données.Classes(Num_Classe_Données).Eleves(Num_Eleve).Nom_El
            LBLprenom.Text = Données.Classes(Num_Classe_Données).Eleves(Num_Eleve).Prenom_El
            LBLclasse.Text = Données.Classes(Num_Classe_Données).Classe
     
            LBLtestexo.Text = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Titre
            LBLregledegrammaire.Text = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Règles
     
            For i As Integer = 0 To Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice.Count - 1
                LBL_Exercice.Add(New Label)
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = True
                LBL_Exercice(LBL_Exercice.Count - 1).Text = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Phrase_1
                FlowLayoutPanel1.Controls.Add(LBL_Exercice(LBL_Exercice.Count - 1))
                LBL_Exercice(LBL_Exercice.Count - 1).Height = 20
                Taille_Label = LBL_Exercice(LBL_Exercice.Count - 1).Size
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = False
                Taille_Label.Height = 20
                LBL_Exercice(LBL_Exercice.Count - 1).Size = Taille_Label
                LBL_Exercice(LBL_Exercice.Count - 1).TextAlign = ContentAlignment.BottomLeft
     
                If Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Type_Réponse = "Texte a trous" Then
                    TB_Reponse.Add(New TextBox)
                    TB_Reponse(TB_Reponse.Count - 1).Size = New Size(120, 20)
                    FlowLayoutPanel1.Controls.Add(TB_Reponse(TB_Reponse.Count - 1))
                ElseIf Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Type_Réponse = "Mot a sélectionner" Then
                    CB_Reponse.Add(New ComboBox)
                    For i2 As Integer = 0 To Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Choix_Mots.Count - 1
                        CB_Reponse(CB_Reponse.Count - 1).Items.Add(Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Choix_Mots(i2).Mots)
                    Next
                    CB_Reponse(CB_Reponse.Count - 1).Size = New Size(120, 20)
                    CB_Reponse(CB_Reponse.Count - 1).DropDownStyle = ComboBoxStyle.DropDownList
                    FlowLayoutPanel1.Controls.Add(CB_Reponse(CB_Reponse.Count - 1))
                End If 'Fin de condition.'
     
                LBL_Exercice.Add(New Label)
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = True
                LBL_Exercice(LBL_Exercice.Count - 1).Text = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Phrase_2
                FlowLayoutPanel1.Controls.Add(LBL_Exercice(LBL_Exercice.Count - 1))
                LBL_Exercice(LBL_Exercice.Count - 1).Height = 20
                Taille_Label = LBL_Exercice(LBL_Exercice.Count - 1).Size
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = False
                Taille_Label.Height = 20
                LBL_Exercice(LBL_Exercice.Count - 1).Size = Taille_Label
                LBL_Exercice(LBL_Exercice.Count - 1).TextAlign = ContentAlignment.BottomLeft
                FlowLayoutPanel1.SetFlowBreak(LBL_Exercice(LBL_Exercice.Count - 1), True)
     
            Next
     
            For i As Integer = 0 To TB_Reponse.Count - 1
                AddHandler TB_Reponse(i).GotFocus, AddressOf TB_Précédente
            Next
     
    End Sub 'Fin de procédure.'
    et le TB_Précédente est tout simplement une image de la textbox où je me situe pour cliquer sur des boutons avec des caractères spéciaux et les afficher dans la texbox ou j'étais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TB_Précédente(sender As Object, e As EventArgs)
            TB_Sélect = sender
    End Sub 'Fin de procédure.'
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub BT_ñ_Click(sender As Object, e As EventArgs) Handles BT_ñ.Click
            TB_Sélect.Text += BT_ñ.Text
            TB_Sélect.Focus()
            TB_Sélect.Select(TB_Sélect.TextLength, 0)
    End Sub 'Fin de procédure.'
    Voila

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Pauvre toi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Ici, il y a des docteurs en orthodoxie qui passent et qui engueulent ceux qui osent utiliser des accents dans les noms de variables.

    Mais, moi, je te félicite.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Ce code marche à la perfection sur plus de 3 Pc donc je vais pas dégager toutes mes variables avec accent si ça fonctionne ! Si des retours me sont donné comme quoi ils foutent la merde alors oui je changerais mais sinon j'en vois pas l'intérêt ^^

    Cela étant dit ça résout pas mon problème xD.

  6. #6
    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,

    J'ai regardé en diagonale, la première idée simple est :
    Quand tu crés le textbox, tu places le numéro de ligne dans la propriété "Tag" (attention au -1 de parcours de For)
    Citation Envoyé par Jeano81 Voir le message
    Mais voila : Je ne sais pas comment savoir ce qui doit etre dans la textbox(x) car la premiere textbox peut etre dans la premiere ligne ou la seconde ou la 100ème :/

    Donc en gros je cherche une solution simple qui permette de dire la 1ere textbox c'est la ligne 5 ...
    Quand tu le traites (ton textbox) tu connais le numéro de ligne par le tag, tu peux ainsi comparer le texte saisi avec tes données (zone "Réponse") classées par lignes.
    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Merci RV

    J'ai en fait fait comme ceci :

    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
     For i As Integer = 0 To Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice.Count - 1
     
                If Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Type_Réponse = "Texte a trous" Then
                    TB_Reponse.Add(New TextBox)
                    TB_Reponse(TB_Reponse.Count - 1).Size = New Size(120, 20)
                    TB_Reponse(TB_Reponse.Count - 1).Tag = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Réponse
                    FlowLayoutPanel1.Controls.Add(TB_Reponse(TB_Reponse.Count - 1))
                ElseIf Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Type_Réponse = "Mot a sélectionner" Then
                    CB_Reponse.Add(New ComboBox)
                    For i2 As Integer = 0 To Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Choix_Mots.Count - 1
                        CB_Reponse(CB_Reponse.Count - 1).Items.Add(Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Choix_Mots(i2).Mots)
                    Next
                    CB_Reponse(CB_Reponse.Count - 1).Size = New Size(120, 20)
                    CB_Reponse(CB_Reponse.Count - 1).DropDownStyle = ComboBoxStyle.DropDownList
                    CB_Reponse(CB_Reponse.Count - 1).Tag = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Réponse
                    FlowLayoutPanel1.Controls.Add(CB_Reponse(CB_Reponse.Count - 1))
                End If 'Fin de condition.'
     
                LBL_Exercice.Add(New Label)
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = True
                LBL_Exercice(LBL_Exercice.Count - 1).Text = Parametres.Classe(Num_Classe_Param).Exercice(Num_Exercice).Ligne_Exercice(i).Phrase_2
                FlowLayoutPanel1.Controls.Add(LBL_Exercice(LBL_Exercice.Count - 1))
                LBL_Exercice(LBL_Exercice.Count - 1).Height = 20
                Taille_Label = LBL_Exercice(LBL_Exercice.Count - 1).Size
                LBL_Exercice(LBL_Exercice.Count - 1).AutoSize = False
                Taille_Label.Height = 20
                LBL_Exercice(LBL_Exercice.Count - 1).Size = Taille_Label
                LBL_Exercice(LBL_Exercice.Count - 1).TextAlign = ContentAlignment.BottomLeft
                FlowLayoutPanel1.SetFlowBreak(LBL_Exercice(LBL_Exercice.Count - 1), True)
     
     Next
    et après lors d'un clic sur valider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     For i As Integer = 0 To TB_Reponse.Count - 1
                If TB_Reponse(i).Text = TB_Reponse(i).Tag Then
                    Note_Exercice += 1
                End If
     Next
     
     For i As Integer = 0 To CB_Reponse.Count - 1
                If CB_Reponse(i).SelectedItem = CB_Reponse(i).Tag Then
                    Note_Exercice += 1
                End If
     Next
    Ca a l'air de fonctionner ! Merci beaucoup

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

Discussions similaires

  1. Récupérer valeur d'une textbox côté .Net
    Par titmael dans le forum jQuery
    Réponses: 0
    Dernier message: 12/12/2011, 13h11
  2. Récupérer la valeur d'une textBox générée dynamiquement
    Par Baptiste_87 dans le forum Débuter
    Réponses: 1
    Dernier message: 12/07/2009, 23h21
  3. Réponses: 8
    Dernier message: 17/06/2009, 16h40
  4. Réponses: 5
    Dernier message: 27/04/2009, 16h15
  5. récupérer des valeur dans une textbox..
    Par mohe27 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 15/12/2007, 19h37

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