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 :

Problème d'initialisation d'un booléen dans un UserControl


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Problème d'initialisation d'un booléen dans un UserControl
    Je réalise actuellement un UserControl, c'est à dire un composant qu'il est ensuite possible d'ajouter en mode design à une form par simple glissé-déposé.

    Mon composant dispose de la variable suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private bool mode_regle;
    elle même associée à la propriété suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DefaultValue(true)]
    public bool Mode_regle { get { return mode_regle; } set { mode_regle = value; } }

    Lorsque j'ajoute ce composant en mode design, la propriété Mode_regle est par défaut mise à true grace à l'attribut DefaultValue. Le problème est que lorsque je lance le code, mon composant est généré et la variable de classe mode_regle est initialisée à false (comme tout les booléens).

    Je n'ai evidemment pas le droit de faire un truc de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private bool mode_regle = Mode_regle;

    D'où ma question : comment bien exploité les valeurs par défaut des propriétés ?


    Merci d'avance !

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par -Jolan-
    Lorsque j'ajoute ce composant en mode design, la propriété Mode_regle est par défaut mise à true grace à l'attribut DefaultValue. Le problème est que lorsque je lance le code, mon composant est généré et la variable de classe mode_regle est initialisée à false (comme tout les booléens).
    Je pense que tu fais une erreur fréquemment rencontrée sur l'utilisation des class Attributes en général.

    Ces classes ne sont disponibles que pour être exploitées par du code (ce que fait le Designer qui introspecte les attributs de ta propriété avec les méthodes de Reflection) mais n'ont aucune influence sur l'exécution.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


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

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre émérite

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Points : 2 624
    Points
    2 624
    Par défaut
    Je pense que tu n'as pas compris l'intérêt du DefaultValue. Le DefaultValue ne sert pas à initialiser la valeur. Il sert juste à définir une valeur par défaut pour le designer. En fait, quand tu mets [DefaultValue(true)] sur ta propriété, cela signifie que dans le code généré par le designer (le .designer.cs), tu ne trouveras pas de ligne renseignant la valeur de ta propriété si celle-ci est à true dans la PropretyGrid. Par contre, si elle est à false, ce sera marqué. Imaginons que tu ais une propriété int avec DefaultValue(0). Si demain tu décides que la DefaultValue c'est 1, tu ne modifie que l'initialisation du champ encapsulé par ta propriété et tous tes UserControl qui avaient la valeur par défaut sur cette propriété continueront à avoir la valeur par défaut sur cette propriété. J'espère que j'ai été clair. Par contre ce que tu peux faire, c'est :
    private const bool MODE_REGLE_DEFAULT = true;
    private _modeRegle = MODE_REGLE_DEFAULT;
    [DefaultValue(MODE_REGLE_DEFAULT)]
    public ModeRegle {...}. Comme ça, tu n'as mis la valeur par défaut qu'à un seul endroit.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci à vous pour ces précisions !

  5. #5
    Membre émérite

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Points : 2 624
    Points
    2 624
    Par défaut
    De rien. Je pense que tu peux passer ton message en Résolu :-)

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/09/2011, 14h50
  2. Problème de booléen dans "if", et graphique
    Par hebus357 dans le forum R
    Réponses: 1
    Dernier message: 17/01/2011, 09h58
  3. Problème d'initialisation d'une DependencyProperty dans un UserControl
    Par seiryujay dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 30/10/2008, 14h46
  4. Réponses: 6
    Dernier message: 26/06/2006, 23h49
  5. [MySQL] Problème d'initialisation de la valeur dans une table
    Par priazu dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/02/2006, 02h00

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