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 :

[VB.net] Déclaration de variable.. Variable


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut [VB.net] Déclaration de variable.. Variable
    Bonjour à tous !

    Voila, j'ai une question un peu bizarre à poser mais ceci me serait fort utile :

    Peu-t-on déclarer une variable dont le nom est variable ?

    Je m'explique :
    Je crée une boucle dans laquelle, je déclare à chaque passage, une variable de type string (c'est pour l'exemple) que j'appelle chaine. J'ai aussi une autre variable qui s'incrémente à chaque fois que la boucle est exécutée (comme le i dans une boucle For... Next).
    En fonction de cela, je voudrai que, à la place de déclarer chaine à chaque fois (ce qui crée des disfonctionnements dans mon programme), pouvoir déclarer une variable qui se nomerai chaine-i, ce qui donnerai à chaque passage chaine1, chaine2, chaine3...

    Cela est-il possible en VB.net et si oui, comment faire ?

    Merci

    PS : si mon explication n'est pas claire, posez des questions

  2. #2
    Membre très actif Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Par défaut
    Je ne sais pas si cela est possible, mais ce serait simpa car moi aussi cela me simplifierait grandement la tâche pour certains de mes programmes

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je ne vois pas du tout ce qui empêche d'utiliser un tableau ou une liste pour cet usage.

  4. #4
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    Car dans ma boucle (dans mon exemple j'ai simplifié), je déclare un nouveau bouton, je le nomme, je lui donne un texte, un handler et je l'affiche sur ma form pour chaque ligne contenue dans un fichier. Sauf que le code que j'ai ne fonctionne pas : il n'affiche que ce qui se trouve à la première ligne de mon fichier. Voila mon code :

    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
     
    function listSites()
            Dim MonFichier As New IO.StreamReader("fichier.txt")
            Dim line As String
     
            While (Monfichier.EndOfStream = False)
                line = Monfichier.ReadLine()
                    Dim b As button
                    b.Text = line
                    b.Name = line
                    AddHandler b.Click, AddressOf sub_gestion_click
     
                    MainForm.SplitContainer1.Panel1.Controls.Add(b)
            End While
        End function
    Enfin, dans mon fichier fichier.txt, j'ai trois lignes, mais dans mon splitcontainer, seule letexte de la première ligne apparait...
    Et je ne peux pas faire une boucle for vu que le nombre de ligne peut varier. (enfin je ne pense pa pouvoir)

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    peut etre parceque tu ne créés que des références sans instanciations de la Class Button.


    En faisant,

    Dim b As button = new Button(line)
    b.name = line

    1 - tu as créé une référence par : Dim b As button, Opérateur de convertion de Type, et dim déclare et alloue un espace de stockage pour une ou plusieurs variabls

    2 - tu as établi une instanciation de la Class Button par : new Button(line)
    l'opérateur new créé une nouvelle instance d'objet, est apel le constructeur approprié.



    et je pense que tu devrais aussi incrémenté les positions en x de chaque bouton avant de faire : MainForm.SplitContainer1.Panel1.Controls.Add(b)
    sinon, ils seront les uns sur les autres ...

  6. #6
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    et je pense que tu devrais aussi incrémenté les positions en x de chaque bouton avant de faire : MainForm.SplitContainer1.Panel1.Controls.Add(b)
    sinon, ils seront les uns sur les autres ...
    J'ai simplifier le code dans mon dernier message en supprimant les éléments qui n'étaient pas primordial au fonctionnement, j'ai bien une valeur pour la propriété top qui s'incrémente à chaque fois pour que chaque controle soit sous le précédent.

    peut etre parceque tu ne créés que des références sans instanciations de la Class Button.


    En faisant,

    Dim b As button = new Button(line)
    b.name = line

    1 - tu as créé une référence par : Dim b As button, Opérateur de convertion de Type, et dim déclare et alloue un espace de stockage pour une ou plusieurs variabls

    2 - tu as établi une instanciation de la Class Button par : new Button(line)
    l'opérateur new créé une nouvelle instance d'objet, est apel le constructeur approprié.
    Je vais essayer cela, je vous tiens au courrant.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    Bonjour,

    J'ai simplifier le code dans mon dernier message en supprimant les éléments qui n'étaient pas primordial au fonctionnement, j'ai bien une valeur pour la propriété top qui s'incrémente à chaque fois pour que chaque controle soit sous le précédent.
    Ah d'accord, autant pour moi.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par magicbisous-nours Voir le message
    J'ai simplifier le code dans mon dernier message en supprimant les éléments qui n'étaient pas primordial au fonctionnement, j'ai bien une valeur pour la propriété top qui s'incrémente à chaque fois pour que chaque controle soit sous le précédent.
    Il y a plus simple : les FlowLayoutPanel et TableLayoutPanel permettent de s'abstraire de ces positionnements "à la mimine", tout en supportant bien plus facilement la variation de taille du contrôle container.

  9. #9
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    Il y a plus simple : les FlowLayoutPanel et TableLayoutPanel permettent de s'abstraire de ces positionnements "à la mimine", tout en supportant bien plus facilement la variation de taille du contrôle container.
    Ok, je n'y avais pas pensé, grand débutant que je suis

    Sinon j'ai trouvé une solution plus simple pour ce que je veux faire : j'ai créé une listbox et pour chaque ligne de mon fichier, je rajoute un item dans le listbox. J'ai modifier l'apparence pour que la couleur de fond soit la même que celui de la form et j'ai mis un borderstyle a none. Ce qui fait que la listbox n'est pas visible tout en surlignant l'élément qui a été cliqué.

    Pourquoi n'y avais-je pas pensé avant !!

  10. #10
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    Effectivement ça marche mieu, plus facilement et plus estétiquement avec une listbox.
    Problème résolu !

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

Discussions similaires

  1. [VB.Net]Déclaration et initialisation d'une variable
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/11/2006, 20h05
  2. [VB.NET] Utilisation d'une variable dans une autre form (!)
    Par neuropathie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/12/2005, 13h09
  3. déclaration d'une variable
    Par ouldfella dans le forum Composants VCL
    Réponses: 8
    Dernier message: 20/10/2005, 18h21
  4. [vb.net] utilisation d'une variable dans le code
    Par arnolem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/09/2005, 19h22
  5. [VB.NET] [Débutant] Probléme de variable dans les requettes
    Par Silvia12 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/03/2005, 13h13

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