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 :

Nom d'un Item en Variable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut Nom d'un Item en Variable
    Bonjour,
    J'ai une série d'objet nommé :
    Casier1 => Casier10

    Je voudrais savoir comment faire pour remplacer les chiffres par une variable?
    Pour que je puisse passer en revue mes objets avec une boucles For par exemple et modifier la propriété Visible de l'objet.

    J'ai essayer comme en VBA:

    [Casier" & i & "].Visible = True

    mais le compilateur me jette, connaissez vous la syntaxe en VB.net ou une autre solution?

    Merci d'avance

    PS: j'ai 8 autres séries de 10 objet dans le même cas dans ce formulaire

  2. #2
    Membre extrêmement actif
    Avatar de FailMan
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2010
    Messages
    1 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 602
    Par défaut
    Je ne crois pas qu'il soit possible de passer un paramètre directement dans un nom de variable, ou alors la solution m'intéresserait également.

    Je suis passé personnellement par un switch ... case en C# qui s'appelle Select Case en VB.NET

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Ca me parait aussi totalement impossible même avec la reflection.

    Mieux vaut gérer une liste d'objets "Casier" (Code en C#)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<Casier> Casiers=new List<Casier>() ; 
    Casier.Add(Casier1) ;
    Casier.Add(Casier2) ;
    ...

  4. #4
    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 shaka17 Voir le message
    Bonjour,
    J'ai une série d'objet nommé :
    Casier1 => Casier10

    Je voudrais savoir comment faire pour remplacer les chiffres par une variable?
    C'est impossible car ce que tu demandes est une vision spécifique aux langages de script et qui ne marche pas avec les langages compilés. (c'est le genre de syntaxe qui pue le php par exemple).

    Pourquoi ne pas utiliser un tableau tout simplement ?

    En effet, je n'arrive pas à imaginer un besoin fonctionnel dont la seule solution passerait par la création dynamique d'une variable.

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Une solution, inexacte mais a explorer

    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
    For each MonControl As Control in Me.Form_Main
     
        If MonControl.GetType = "Checkbox" Then
     
             Dim MonNumeroControl as String = MonControl.Name
     
             'Traitement sur la chaine pour avoir le numero ou je sais pas
     
             if test(MonNumeroControl ) Then
                     MonControl.visible=False
             Else
                     MonControl.visible=True
             End If
     
        End If
     
    Next

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Si jamais tu y tiens c'est tout de meme possible de la faire via codedom, mais tu va vraiment devoir utiliser l'artillerie lourde m(ais dans le genre très lourd).

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    par rapport à ce qui a été dit :
    le list est une bonne idée
    par reflexion c'est faisable
    codedom, faut vraiment être masochiste ^^

    et sinon si c'est pour des controles sur le form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i as integer = 1 to 10
      me.controls("Casier" & i).Visible = true
    next
    tu pourrais aussi mettre tous ces controles sur un panel et donc les retrouver facilement, surtout si tu as plusieurs séries à traiter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each c as control in panel.controls
      c.visible = true
    next
    si c'est des controles que tu créés pendant l'exécution, tu peux les ajouter dans un list(of) en plus de faire .Controls.add()


    NB : pour faire ce genre de choses avec des variables et non des controles, on peut utiliser un dictionary(of string, le type de tes objets)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dico.Add("variable 1",instance)
    dico("variable 1").propriété = value


    NB2 :
    poser plein de controles manuellement est rarement à conseiller, les créer par code est plus utile, au moins s'il faut en rajouter un un jour tu n'as qu'une ligne de code à modifier, alors que si tu le rajoutes à la main il faut modifier les bornes des For un peu partout dans le code
    utiliser du code générique est plus maintenable que des choses "en dur" tels des For i = 1 to 10
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Merci beaucoup pour toutes vos réponses et tous vos conseils. Je les apprécis vraiment beaucoup.
    Finalement j'ai fais comme Pol63 à dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i as integer = 1 to 10
      me.controls("Casier" & i).Visible = true
    next
    C'était exactement ce que je cherchais, cela marche trés bien pour mes controls : TextBox et PictureBox qui sont des controls System.Windows.Forms
    mais pas pour les dessins (rond, carré etc ...) qui sont des Microsoft.VisualBasic.powerPacks ne sont pas pris en compte avec Me.Controls

    avez vous une idée?

    grand merci en tout cas de votre aide.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    faudrait que tu jettes un oeil dans le fichier designer (fichier caché par défaut, 2eme bouton dans l'explorateur de solution pour les voirs)
    les shapes du powerpacks sont une bidouille (ce ne sont pas des controles)
    donc faudrait voir dans quelle collection ils sont ajoutés pour la parcourir
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2006, 17h21
  2. Réponses: 2
    Dernier message: 18/03/2006, 14h54
  3. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20
  4. Shell: récupérer le bon nom de fichier dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h45
  5. Réponses: 7
    Dernier message: 25/10/2005, 15h19

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