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 :

Utiliser le même code pour différents variables


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut Utiliser le même code pour différents variables
    Bonjour,

    Je souaiterais utiliser le même code pour différents noms de variables (sans avoir à le reécrire pour chaque cas !)

    Par exemple, à la place du code suivant :

    x = 2 * x;

    (qui s'applique à la variable x préalablement déclarée), je voudrais que mon programme remplace x par toute autre variable en spécifiant juste la chaine de caractères string correspondant à cette autre variable.

    Hum ... J'espère que c'est à peu près clair ...

    Merci

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu veux dire que tu cherches un code qui remplacerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = 2 * x;
    y = 2 * y;
    par un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    multiplierPardeux(x);
    multiplierPardeux(y);
    Hé bien ne cherches plus, ça existe déjà ! ça s'appelle une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void multiplierPardeux(ref int val){ val *= 2; }
    EDIT : typo
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    Ce n'est pas exactement ça ... Je vais l'exposer différemment :

    Par exemple je voudrais que lorsque l'utilisateur rentre dans un TextBox le texte "MaVariable" alors le programme effectue la fonction sur la variable du même nom, soit :

    MaVariable = 2 * MaVariable;


  4. #4
    Membre éclairé Avatar de Asiany
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Par défaut
    Bah une fonction qui passe en paramètre le texte écrit dans la TextBox..

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    Citation Envoyé par Asiany
    Bah une fonction qui passe en paramètre le texte écrit dans la TextBox..
    OK pour le début, mais ensuite ... ???

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Donc ça sous-entend que dans l'application, tu dois connaitre le nom des variables utilisées ? c'est quoi cette application ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    On va dire que l'utilisateur c'est moi, donc je connais le nom de mes variables et je souhaite agir sur ces variables de manière interactive ...

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Hmm c'est un peu tordu
    Si tes variables en question sont des attributs, je suis tenté de dire qu'en théorie, ça doit être faisable en utilisant la reflexion et en regardant dans les attributs/propriétés de la classe en question.
    Mais ce n'est pas garanti, plutot une piste
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    Citation Envoyé par SaumonAgile
    Hmm c'est un peu tordu
    Si tes variables en question sont des attributs, je suis tenté de dire qu'en théorie, ça doit être faisable en utilisant la reflexion et en regardant dans les attributs/propriétés de la classe en question.
    Mais ce n'est pas garanti, plutot une piste
    J'ai pas tout compris à ta réponse ... C'est quoi la reflexion ?

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Regarde dans le namespace System.Reflection. ça permet de faire de l'introspection, cad que tu peux obtenir des informations sur les types contenus dans un assembly, ça permet d'énumérer les propriétés et méthode, de trouver une méthode d'un objet, ou une propriété en recherchant par son nom, etc.
    Tu peux aussi créer des types d'objets ou des méthodes à la volée, mais c'est un peu plus difficile.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    Citation Envoyé par SaumonAgile
    Regarde dans le namespace System.Reflection. ça permet de faire de l'introspection, cad que tu peux obtenir des informations sur les types contenus dans un assembly, ça permet d'énumérer les propriétés et méthode, de trouver une méthode d'un objet, ou une propriété en recherchant par son nom, etc.
    Tu peux aussi créer des types d'objets ou des méthodes à la volée, mais c'est un peu plus difficile.
    OK merci beaucoup, je vais regarder ça de plus pres ...

  12. #12
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    Moi aussi j'ai été confronté au même problème voilà ce que je voulais faire :

    J'avais dans mon programme 16 picturebox avec pour nom :
    Picturebox1
    Picturebox2
    ...


    Je voulais changez les images des pictures box de façon dynamique et j'aurait aimer une fonction du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void changer (int num_picture)
    {
    Picturebox & num_picture.value = etc...
    }

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    Citation Envoyé par Luffy49
    Moi aussi j'ai été confronté au même problème voilà ce que je voulais faire :

    J'avais dans mon programme 16 picturebox avec pour nom :
    Picturebox1
    Picturebox2
    ...


    Je voulais changez les images des pictures box de façon dynamique et j'aurait aimer une fonction du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void changer (int num_picture)
    {
    Picturebox & num_picture.value = etc...
    }
    Tu as parfaitement compris mon problème !

    J'en déduis malheureusement que tu n'avais pas trouvé de solution

  14. #14
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    Je n'avais rien trouver de mieux que de faire un switch case du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    switch num_picturebox
    {
    case 1: picturebox1.value = ...
    break
    case 2: picturebox2.value....
     
    ....
     
    }

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Par défaut
    OK merci !

    Cela répond aussi à la question que je pose dans ce topic :

    http://www.developpez.net/forums/sho...d.php?t=354891

    Tu es obligé de déclarer au préalable tes 16 picturebox même si tu n'en utilise que 2 ou 3 ...

  16. #16
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Citation Envoyé par Luffy49
    Je n'avais rien trouver de mieux que de faire un switch case du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    switch num_picturebox
    {
    case 1: picturebox1.value = ...
    break
    case 2: picturebox2.value....
     
    ....
     
    }
    Pourquoi ne pas utiliser plutôt un tableau ou un conteneur générique plutôt qu'un switch ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //init
    List<PictureBox> listPicBox = new List<PictureBox>(...);
     
    try{
    listPicBox[index].value = ...
    }
    catch(ArgumentOutOfRangeException aoorEx){
     
    // ...
     
    }

  17. #17
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    C'est vrai que c'est beaucoup plus propre et pratique j'y avais pas penser merci ^_^

Discussions similaires

  1. [AC-2010] Utiliser le même formulaire pour différents affichages
    Par Monak dans le forum IHM
    Réponses: 1
    Dernier message: 10/01/2013, 06h03
  2. Même nom pour une variable membre et statique
    Par raoulchatigre dans le forum C++
    Réponses: 1
    Dernier message: 12/06/2008, 15h22
  3. Réponses: 4
    Dernier message: 20/11/2007, 16h13
  4. Même code pour plusieurs shapes
    Par El-Diablo- dans le forum C++Builder
    Réponses: 10
    Dernier message: 24/05/2007, 19h40
  5. Réponses: 4
    Dernier message: 07/03/2006, 15h54

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