Utilisation attributs user controls

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Bonjour,

Je galère pas mal avec l'édition de user contrôls. Je n'arrive pas à voir où et quand les variables initialisées dans le panneau de propriété de l'objet dans Visual Studio sont véritablement affectées et réutilisable.

Voici un truc qui ressemble à mon code :

public class MyClass : System.Windows.Forms.UserControl
{
    private String Attr;

    [Category("Comportement")]
    [Browsable(true)]
    [DefaultValue("myString")]
    public String MyAttr
    {
        get{return this.Attr;}
        set{this.Attr=value;}
    }
    public MyClass ()
    {
            // Cet appel est requis par le Concepteur de formulaires Windows.Forms.
            InitializeComponent();  => BreakPoint
    }
}

Ce que je comprend pas c'est qu'au breakpoint , la variable this.Attr n'a pas été initialisée et vaut "null", il ne prend jamais la valeur par défaut, et modifier la valeur dans l'editeur intellisens "ou truc comme ça" ne change rien, elle vaut toujours "null" lors de l'execution dans la fonction InitializeComponent. Je n'arrive donc pas à utilisé les propriétés de mon user control, si quelqu'un peut me dire ce que je ne fait pas bien ???

Merci

Hervé

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

4 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
L'attribut DefaultValue ne sert pas à mettre une valeur par défaut dans ta variable... mais a éviter au designer de sérialiser ta propriété si sa valeur = DefaultValue.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
58
Salut,
Oui, et j'ajouterais que si tu veux une valeur par défaut, il faut la spécifiée directement sur la variable de classe:

private string attr = "myAttr";

<hr />
-My Blog-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
j'avais oublié de le préciser... merci Bidou ;)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Merci,

Faut que je reteste ça mais j'avais déjà essayé d'initialiser ma variable à sa déclaration, et elle gardait toujours cette valeur, elle ne semblait pas prendre celle que j'avais modifier dans le panneau de propriétés après l'ajout de mon user control dans le designer. En fait, lorsque je modifie mon attribut, je modifie la couleur de mon user control, et ça fonctionne très bien dans le designer, mais lorsque j'exécute, mon attribut reprend automatiquement la valeur jsutement mise par défaut lors de la création de la variable, ce qui fait que dans le designer ça smeble fonctionner mais lors de l'exécution, il garde la couleur par défaut ... :o(

Je vais essayer de mettre mon code demain, mais il ressemble grosso modo à celui-là, en initialisant Att biensur.

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"