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

Windows Forms Discussion :

[Vb.net] Indexé un objet crée dans une boucle [FAQ]


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Vb.net] Indexé un objet crée dans une boucle
    Bonjour a tous,

    J'ai un petit probleme en vb.net.

    Je crée un objet (monNoeud) dans une boucle, c'est à dire que mon programme crée un nouvel objet à chaque boucle. Je souhaiterais pouvoir réutiliser ces objets, mais en les differenciant les uns des autres. Voici un extrait de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    While sR.Peek > -1
    Dim monNoeud As Form1
    monNoeud = New Form1(sM, coord_x, coord_y, 200, 50, Me)
    sR.Peek()
    End While
    est il possible d'indexer mon objet pour pouvoir differencier chacun de mes objets créés?
    J'ai essayé d'indexer mon objet en utilisant un compteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim monNoeud(n) As Form1
    monNoeud(n) = New Form1(sM, coord_x, coord_y, 200, 50, Me)
    n est déclaré comme un integer, incrementé à chaque boucle
    mais ça plante à la compilation....

    merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut Re: [Vb.net] Indexé un objet crée dans une boucle
    Citation Envoyé par picpic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim monNoeud(n) As Form1
    monNoeud(n) = New Form1(sM, coord_x, coord_y, 200, 50, Me)
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monNoeud As Form1() = new Form1( n )
    (si ça suit plus ou moins la syntaxe du C#, à savoir Form1[] monNoeud = new Form1[ n ] :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  3. #3
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Salut,
    Pour déclarer des tableaux de taille connue avant la compilation, il faut utiliser des constantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim noeud(10) as Form1
    Sinon tu peux construire dynamiquement ton tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim noeud() as Form1
     
    while ...
        if isnothing(noeud) then
            redim noeud(0)    
        else
            redim preserve noeud(noeud.GetUpperBound(0) + 1)
        endif
        noeud(noeud.GetUpperBound(0)) = new Form1( ...)
    wend

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut Re: [Vb.net] Indexé un objet crée dans une boucle
    Citation Envoyé par Maniak
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monNoeud As Form1() = new Form1( n )
    (si ça suit plus ou moins la syntaxe du C#, à savoir Form1[] monNoeud = new Form1[ n ]
    Ca ne suit pas la syntaxe du C#

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut Re: [Vb.net] Indexé un objet crée dans une boucle
    Citation Envoyé par abelman
    Citation Envoyé par Maniak
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monNoeud As Form1() = new Form1( n )
    (si ça suit plus ou moins la syntaxe du C#, à savoir Form1[] monNoeud = new Form1[ n ] :)
    Ca ne suit pas la syntaxe du C# :D
    Je ne peux pas croire k'on soit obligé de se taper des redim preserve lentissime et pas du tout viable dès ke les boucles sont un tant soit peu importantes :)


    Après petite recherche dans Google, il semble k'il faille faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monNoeud As Form1() = new Form1( n-1 ) {}
    Et avec ça, le compilo est sûr k'on veut indiker la dimension du tableau plutôt k'un paramètre passé au constructeur.

    Forcément, kand on utilise la même syntaxe pour les paramètres et les indexations de tableaux... :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Maniak :
    Bien joué !!! Je viens de tester et ça marche. Je savais pas que ça existait !! Ca va simplifier pas mal de code chez moi ça ...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par abelman
    Maniak :
    Bien joué !!! Je viens de tester et ça marche. Je savais pas que ça existait !! Ca va simplifier pas mal de code chez moi ça ...
    Si j'étais mauvaise langue, je dirais ke pour simplifier le code, le plus simple est encore de passer au C# :)
    Mais je ne le suis pas. Enfin si, mais j'ai bu, je peux me retenir :)

    .
    .
    .

    (et zut)

    .
    .

    mais le plus simple serait encore de passer au C# :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    lol ... Le vilain trolleur

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour toutes vos explications,


    par contre y'a qqche que j'ai mal compris

    Citation Envoyé par Maniak
    Dim monNoeud As Form1() = new Form1( n-1 ) {}
    Que fait t-on dans ce cas la? A quoi correspond le (n-1) et "{}'


    Merci pour votre aide

    Picpic

  10. #10
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Re,

    Le n correspond à au nombre de forms que tu pourras mettre dans ton tableau. i.e la variable monNoeud déclarée comme ça est un tableau de n Form1

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    OK Merci pour tous vos conseils

    Picpic

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

Discussions similaires

  1. Création objet dynamique dans une boucle. [Correction de code]
    Par Rifton007 dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 04/04/2011, 23h48
  2. [CS3] Supprimer un objet crée dans une classe parent
    Par renaud26 dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 28/10/2010, 00h15
  3. Différentiation de liens crées dans une boucle
    Par EIN-LESER dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2009, 10h17
  4. Objet paramétré dans une boucle
    Par CedricMoi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2009, 10h21
  5. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19

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