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 :

Est-il possible d'indexer des TextBox.text ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut Est-il possible d'indexer des TextBox.text ?
    Bonsoir,

    Si je pouvais en VB.net indexer TextBox je pourrais écrire une boucle test comme en VB6:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For n=1 to 50
    Lecture(n) = textboxCiteres(n).text
    next n
    Malheureusement je ne trouve pas de solution pour éviter d'attribuer à chaque saisine de textbox un 'change' comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      Private Sub TextBox11_TextChanged(sender As Object, e As EventArgs) Handles TextBox11.TextChanged
            Call LectureCitères()
        End Sub
     
        Private Sub TextBox12_TextChanged(sender As Object, e As EventArgs) Handles TextBox12.TextChanged
            Call LectureCitères()
        End Sub
     
        Private Sub TextBox13_TextChanged(sender As Object, e As EventArgs) Handles TextBox13.TextChanged
            Call LectureCitères()
        End Sub
     
    'etc.
    C'est long et fastidieux.

    Peut-on utiliser la propriété TAG de chaque textbox ?

    Si vous avez une idée ?

    En vous remerciant.

  2. #2
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    oui c'est possible :

    me.controls("TextBox" & i).text

    si pour chaque textbox, c'est la même méthode appelée dans le TextChanged event, il suffit d'affecter la méthode avec une boucle et addhandler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox_TextChanged(sender As Object, e As EventArgs)
            LectureCitères()
        End Sub
    
    for i = 1 to n
     addhandler me.controls("TextBox" & i).TextChanged, AddressOf TextBox_TextChanged
    next 
    
    Je n'ai pas testé le code aussi , il peut rester une coquille ou deux mais l'idée est là. Attention j'ai supposé les TB dans la form, si elles sont dans un conteneur, remplacer "me" par le nom du conteneur


    par ailleurs, si les controls ne sont pas nombreux ceci marche aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox_TextChanged(sender As Object, e As EventArgs) handles Texbox1.TextChanged, Texbox2.TextChanged, Texbox3.TextChanged
            LectureCitères()
        End Sub
    

  3. #3
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    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
    Class Form1
        Private DicoTxt As Dictionary(Of Integer, txt) = New Dictionary(Of Integer, txt)
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            For Each C As Object In Me.Controls
                If C.GetType.ToString = "System.Windows.Forms.TextBox" Then
                    DicoTxt.Add(DicoTxt.Count + 1, New txt(C))
                End If
            Next
            For i As Integer = 1 To DicoTxt.Count
                DicoTxt(i).TX.Text = "Bla bla"
            Next
        End Sub
    End Class
    Public Class txt
        Public WithEvents TX As TextBox
        Private Sub tx_TextChanged(sender As Object, e As EventArgs) Handles TX.TextChanged
            MessageBox.Show("toto")
        End Sub
        Public Sub New(ByRef T As TextBox)
            TX = T
        End Sub
    End Class

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/08/2008, 16h55
  2. Réponses: 1
    Dernier message: 27/03/2008, 12h24
  3. Réponses: 3
    Dernier message: 07/04/2005, 15h04
  4. Réponses: 7
    Dernier message: 08/03/2004, 15h30
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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