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 :

Edition d'une propriété de type Enum dans une PropertyGrid


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 163
    Points : 77
    Points
    77
    Par défaut Edition d'une propriété de type Enum dans une PropertyGrid
    Bonjour,

    J'ai une propriété de type Enum que j'aimerais pouvoir éditer dans une PropertyGrid (celle de Visual Studio par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Enum MyProperty { get; set; }
    Je créé le type de l'Enum de manière dynamique via EnumBuilder:
    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
    18
    19
    20
    21
    AppDomain currentDomain = AppDomain.CurrentDomain;
    AssemblyName assemblyName = new AssemblyName("TemporaryAssembly");
    AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
     
    moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll");
     
    EnumBuilder enumBuilder = moduleBuilder .DefineEnum("MyEnumerationType", TypeAttributes.Public, typeof(int));                
     
    // Je définit mon enumération à partir d'une source de données.
    int enumCurrentValue = 1;
    foreach (var data in this.DataSource)
    {
         enumBuilder.DefineLiteral(data , enumCurrentValue);
         enumCurrentValue++;
    }
     
    // Je créé le nouveau type.
    enumType = enumBuilder.CreateType();
     
    // J'initialise la propriété.
    this.MyProperty = (Enum)Activator.CreateInstance(enumType);
    Mais, quand je veux éditer cette propriété dans la PropertyGrid, celle-ci propose une ComboBox vide
    Est-ce que j'ai oublié une étape pour définir correctement mon Enum ?

    Merci d'avance.
    AL2000

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Bonjour,

    J'aurais tendance à dire que vous que vous créer votre énumération de manière dynamique, celle-ci n'est pas remplie lorsque vous êtes en mode design dans Visual Studio (si j'ai bien compris que c'est dans le panel des propriétés d'objets que vous voudriez la voir). Maintenant je me trompe peut être aussi.

    Est ce que cela fonctionne quand vous êtes en debug, voyez vous le contenu de votre enum d'une manière ou d'une autre (dans une combobox dans l'interface, en debug , ...)
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/10/2009, 18h58
  2. Réponses: 7
    Dernier message: 15/09/2009, 15h54
  3. Type enum dans une classe
    Par arthurembo dans le forum Langage
    Réponses: 2
    Dernier message: 21/05/2009, 12h38
  4. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  5. insérer une valeur de type float dans une abse de données
    Par Stephane_br dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2005, 10h47

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