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 :

enumerate en C# / Passage de valeurs prédéterminées


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut enumerate en C# / Passage de valeurs prédéterminées
    Bonjour
    Ca a l'air pourtant bien élémentaire ...
    Dans une première classe, j'ai déclaré un ensemble (= type) Enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public enum WizPagType
            {   wpSelModConfig, wpFrames, wpOptions, wpFeatures, wpIOConfig, wpIOOrdering,
                wpPortConfig, wpLogicVar, wpProtDataMap, wpRevSavWritConfig
            };
    Dans cette même classe, j'emploie ces 'enum's comme paramètre dans plusieurs appels d'une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                this.splitCont_SelModConfig = new ConfigWizard.AllWizIntPag(WizPagType.wpSelModConfig);
    Dans une autre classe (du même nom d'espace), je déclare et implémente la fonction appelée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            public AllWizIntPag(enum WizPageType wizPagTyp)
    mais j'obtiens une mention d'erreur : 'enum' et 'wizPagTyp' sont soulignés en rouge ondulé.
    "Type expected", "{ expected" ...
    Si je supprime 'enum', le compilateur life ne reconnaît plus 'WizPagType' (plus en bleu clair, dans Visual Studio)
    Comment formuler correctement cet argument de fonction ?
    C'est pourtant très basique ...
    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Comment formuler correctement cet argument de fonction ?
    Comme un type normal, donc sans le enum devant.

    Si le compilateur ne le voit pas, c'est qu'il n'est pas dans la même portée. Est-ce que ton enum est déclaré dans le même namespace ? Dans le même classe ?

    Essaie comme ça :
    public AllWizIntPag(NomDeNamespace.NomDeClasse.WizPageType wizPagTyp)

  3. #3
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Il faut aussi que la classe qui contient la déclaration de l'enum soit accessible...

    (Normalement, je n'aime pas enfoncer les portes ouvertes, mais juste au cas où)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut
    Gastiflex,
    Même "nom d'espace" (= portée = "ConfigWizard"), mais différente classe.
    Je n'avais pas voulu essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public AllWizIntPag(ConfigWizard.SMConfigWizForm.WizPageType wizPagTyp)
    du fait que 'SMConfigWizForm' est un nom de (la première) classe et non un nom d'objet de cette classe. Suite à ton invitation, j'ai quand même essayé ... et obtenu l'erreur
    The type name 'WizPageType' does not exist in the type 'ConfigWizard.SMConfigWizForm'
    Merci quand même !

    Kheironn,
    Oui, je cherche aussi comment transmettre l'objet de la (première) classe dont l''enum' fait partie, à la (deuxième) classe où la fonction est déclarée et définie. Pour cela, j'ai même essayé en ajoutant l'argument 'this' :
    Première classe : 'SMConfigWizForm' et contenant les appels de la fonction et la définition de l'enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.SelModConfig = new ConfigWizard.AllWizIntPag(this, WizPagType.wpSelModConfig);
    Deuxième classe : 'AllWizIntPag' et contenant la fonction dont l'argument en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public AllWizIntPag(SMConfigWizForm usingClass, usingClass.WizPageType wizPagTyp)
    Mais j'obtiens l'erreur
    The type or namespace name 'usingClass' could not be found (are you missing a using directive or an assembly reference?)
    Merci d'avance.

  5. #5
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Déclare ton enum à l'extérieur de ta class donc directement dans le namespace...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut
    Gagné, Ppphil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public AllWizIntPag(WizPagType wizPagTyp)
    a réussi !

    J'ai du même coup appris que des '{' '}' de namespace peuvent contenir, en plus de plusieurs classes, également une définition d'énumération, telle que la mienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public enum WizPagType
        {   wpSelModConfig, wpFrames, wpOptions, wpFeatures, wpIOConfig, wpIOOrdering,
            wpPortConfig, wpLogicVar, wpProtDataMap, wpRevSavWritConfig
        };
    Merci vivement à tous ceux qui ont essayé de m'aider ... et à www.developpez.com où je n'ai que deux autres question non répondues :
    - http://www.developpez.net/forums/d93...p/#post5276970
    - http://www.developpez.net/forums/d93...e/#post5266808

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

Discussions similaires

  1. Passage par valeur / passage par adresse
    Par jeje99 dans le forum C++
    Réponses: 13
    Dernier message: 16/02/2006, 10h29
  2. Réponses: 3
    Dernier message: 09/01/2006, 09h44
  3. Réponses: 7
    Dernier message: 18/05/2005, 15h09
  4. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10
  5. [C#] Passage de valeur d'une fenêtre à une autre
    Par groum999 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/09/2004, 14h12

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