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 :

Lire et écrire la valeur d'un contrôle.


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Lire et écrire la valeur d'un contrôle.
    Bonjour,

    Sous VB2008Ex, je souhaiterais créer, par exemple, une centaine de textbox (nommées de Textbox100 à Textbox199 et vides) qui puissent être utilisées (lues et écrites) par la suite.
    J'ai donc essayé en ajoutant les contrôles dans la partie form1_Load :
    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
     
    Dim txtb As TextBox() = New TextBox(100) {}
            Dim cmpt As Integer = 0
            Dim xpos As Integer = 100
            Dim ypos As Integer = 300
            For cmpt = 0 To 100
                txtb(cmpt) = New TextBox
                txtb(cmpt).Location = New System.Drawing.Point(xpos, ypos)
                txtb(cmpt).Size = New System.Drawing.Size(120, 20)
                txtb(cmpt).MaxLength = 20
                txtb(cmpt).Name = "Textbox" & cmpt + 100
                txtb(cmpt).Text = ""
                Me.Controls.Add(txtb(cmpt))
                ypos = ypos + 40
            Next
    Mon problème est le suivant, je n'arrive ensuite pas à récupérer ou écrire le contenu de ces textbox.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim lalala As String = "test"
            Textbox100.Text = lalala
    1 erreur :
    Le nom Textbox100 n'est pas déclaré.
    Ne devrait-il pas l'être lors de la 1ère boucle avec "txtb(cmpt).Name = "Textbox" & cmpt + 100". ?

  2. #2
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Hum, et cela ne marche pour aucune textbox ? ou spécifiquement pour la 100ème ?

    Autre suggestion, n'essaierais-tu pas de donner une valeur à ta textbox, avant d'avoir appeler form1_Load (c'est à dire avant d'avoir affiché ta form1) ?
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  3. #3
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Et sinon pourquoi commencer ta première textbox à 100 et pas à 0 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                txtb(cmpt).Name = "Textbox" & cmpt + 100
    Enfin mets une parenthèse comme je l'ai mis, cela devrait mieux marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                txtb(cmpt).Name = "Textbox" & (cmpt + 100)
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    methylene tu me décois ^^
    on ne peut pas appeler une variable n'existant pas, et le name d'un control n'est pas forcément utile


    avoir 100 textbox sur une interface graphique c'est du n'importe quoi, mais bon je vais quand meme te donner la solution
    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
     
    private _Textboxes as new system.collections.generic.list(of textbox)
     
     
    sub machin
     
      for i as integer = 100 to 199
        dim t as new textbox
        _textboxes.add(t)
        me.controls.add(t)
      next
     
    end sub
     
     
    sub autre
     
       _textboxes(150).text = "le textbox numéro 150"
     
    end sub


    ou encore en moins propre en gardant ta sub de création de textbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub autre
     
      me.controls("textbox150").text = "le textbox numéro 150"
     
    end sub
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    Citation Envoyé par methylene Voir le message
    Enfin mets une parenthèse comme je l'ai mis, cela devrait mieux marcher :
    !?



    essaye de prendre un peu de niveau (langage des rpg) avant de répondre sur ce forum peut etre ... parce que c'est souvent que tu dis des "conneries" je trouve
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    En même temps je suis avant tout là pour apprendre, après je n'ai jamais déclaré être "expert", et je me suis même appelé il n'y a pas longtemps encore comme "débutant", et je le resterais bien longtemps.

    Des conneries ça peut arriver d'en dire, et c'est oujours un moyen d emontrer ce qu'il ne faut pas faire !

    Et en effet si je dois créer plusieurs Textbox à la volée par du code, j'ai toujours utuilisé la propriété Name pour les renommer, je vois donc aujourd'hui que ceci n'est pas nécessaire, et comme notifié au-dessus j'apprend davantage.

    A bon entendeur,

    Salut .
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    en fait t'as surement raison, vaut mieux que tu postes comme ca on peut te corriger
    c'est un forum d'entraide, donc même si tu aides pas les autres ca peux t'aider au final ^^

    <mode joke>
    sinon tu préviens quand tu postes qu'il ne faut pas t'écouter
    </mode joke>
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bien, merci Pol, tout fonctionne correctement. (avec _textboxes(50).text pour ta 1ère proposition)
    Merci encore.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    j'ai mis un conneries dans mon code en fait, le list(of ) est indexé à partir de 0 donc de 0 à 99 pour les textbox 100 à 199

    si tu veux spécifier la clé, il faut un dictionary( of integer, textbox)
    et faire mestextbox.Add(i,t) pour un i allant de 100 à 199


    en complément d'information un list of est un peu comme un tableau (array) sauf qu'on peut l'utiliser sans connaitre le nombre d'éléments à l'avance, et puis c'est un peu plus performant qu'un tableau
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Lire et écrire une valeur binaire dans la base de registre
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 20h46
  2. Réponses: 15
    Dernier message: 06/05/2011, 12h20
  3. Réponses: 2
    Dernier message: 04/02/2005, 11h03
  4. Réponses: 3
    Dernier message: 29/12/2004, 17h10
  5. [OS] Lire et écrire sur disquette
    Par trax44 dans le forum Programmation d'OS
    Réponses: 17
    Dernier message: 22/02/2004, 20h45

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