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

C# Discussion :

Modifier dynamiquement un paramètre d'un élément


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Points : 64
    Points
    64
    Par défaut Modifier dynamiquement un paramètre d'un élément
    Bonjour.

    Je débute en C# (10h pas +) mais j'ai plusieurs années de dev PHP à mon actif.
    J'ai créer un menu contenant 5 sous-menu. Lorsque l'on clique sur l'un de ces sous-menu, je souhaiterai que ce dernier soit coché et les autres décochés.
    Y'a t-il moyen d'accéder dynamiquement aux sous-menu via une boucle ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     private void change_niveau(short num_niveau)
    {
        for (i = 1; i <= 5; i++)
        {
            "sous_menu_niveau"+i.Checked = false;
        }
        "sous_menu_niveau"+num_niveau.Checked = true;
    }
    au lieu d'avoir à faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    sous_menu_niveau1.Checked = false;
    sous_menu_niveau2.Checked = false;
    sous_menu_niveau3.Checked = false;
    sous_menu_niveau4.Checked = false;
    sous_menu_niveau5.Checked = false;
    switch (num_niveau)
    {
        case 1:
            sous_menu_niveau1.Checked = true;
            break;
        case 2:
    ....
    J'ai lu que ce n'était pas possible (pouvez-vous m'expliquer pourquoi si possible) et surtout comment contourner cela. J'ai lu qu'il fallait passer par des dictionnaires mais je ne vois pas trop comment.
    Je ne me vois pas faire ca pour 2000 éléments si je dois en gérer autant un jour.

    Merci à vous.
    http://www.iso-country-code.com Liste des pays traduits dans pleins de langues

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Si tu veux garder la même logique tout le temps , c'est a dire qu'il n'y ai que un seul qui soit coché , pourquoi ne pas utiliser des radios boutons a la place ? Ils gèrent ça automatiquement , sinon des CheckBox (enfin je crois que c'est ce que tu apelles "menu" , dis moi si je me trompes) dans ce cas la ne servent pas a grand chose. Leur but étant d'offrir un choix multiple.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Points : 64
    Points
    64
    Par défaut
    Merci pour ta réponse.
    SI cela en effet corrige mon problème, il ne répond pas à ma question à savoir comment accéder dynamiquement à des éléments.
    Si demain j'ai 50 checkbox avec une case "tout décocher", je compte faire comme en js à savoir une boucle sur le nom et passer 1 par 1 ces checkox en checked="false".
    Or je ne vois pas comment faire ca en C#.
    Egalement, j'ai peut-être loupé un truc mais je ne vois pas comment stocker une valeur dans ce checkbox, je n'ai aucun champs "value" dans Visual Studio Express quand je le sélectionne dans les propriétés, ni même quand j'édite le code. C'est contragnant car j'ai actuellement une méthode différente par chaque action click sur ces checkbox (change_niveau1, change_niveau2 etc ...). Je pense qu'il est possible d'appeler une unique méthode change_niveau() et y passer le value de la checkbox. Je me trompe ?

    Merci en tout cas. J'ai peut-être encore trop ma vision ActionScript qui prend le dessus sur le dev C#.
    http://www.iso-country-code.com Liste des pays traduits dans pleins de langues

  4. #4
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    En winform ? WPF? ASP ?
    En winform on peut faire quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     foreach (CheckBox uneCheckbox in this.Controls.OfType<CheckBox>())
    {
          uneCheckbox .Checked = false;
     }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Points : 64
    Points
    64
    Par défaut
    Je bosse en WPF (je découvre donc comme je l'indique, je pars surement dans de mauvaises direction).
    Tout d'abord, ce que j'avais n'était pas des checkbox mais des "ToolStripMenuItem".

    J'ai trouvé une solution à mon problème, j'ai renseigné le champs Tag de chaque ToolStripMenuItem pour leur donner la valeur que je souhaite. J'ai modifié chaque ToolStripMenuItem pour appeler la méthode change_niveau (et pas change_niveau1, change_niveau2 etc ...)
    Ensuite je récupère cette info Tag comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     private void change_niveau(object sender, EventArgs e)
    {
            short num_niveau = Convert.ToInt16(((ToolStripMenuItem)sender).Tag);
            ...
    }
    Est-ce la meilleure solution ?

    Je pense que ta boucle fonctionnera mais comment remonter au Conteneur Parent dans ma méthode change_niveau ?

    Quelque chose comme cela devrait fonctionner mais ma syntaxe est incorrecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach (ToolStripMenuItem uneCheckbox in ((ToolStripMenuItem)sender).Parent)
    {
    ....
    }
    http://www.iso-country-code.com Liste des pays traduits dans pleins de langues

Discussions similaires

  1. modifier dynamiquement des paramètres
    Par carouch dans le forum LabVIEW
    Réponses: 4
    Dernier message: 26/03/2010, 15h51
  2. Modifier dynamiquement le style d'un textarea
    Par AlLutun dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2004, 15h18
  3. Réponses: 7
    Dernier message: 25/10/2004, 10h59
  4. [Applet] Modifier dynamiquement la mise en page
    Par Amnesiak dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/09/2004, 11h49
  5. VertexBuffer d'un Mesh modifiable dynamiquement ?
    Par Imhotep dans le forum DirectX
    Réponses: 7
    Dernier message: 10/07/2004, 15h23

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