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 :

[C#] Suppression d'un champ propriété dans un composant perso


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [C#] Suppression d'un champ propriété dans un composant perso
    Bonjour à tous !

    Voila, j'ai crée un bouton perso qui hérite de System.Windows.Forms.Button jusque là ça va .

    Je sais que lorsque on veut rajouter une propriété pour le designer visual studio on fait un truc du style :

    [System.ComponentModel.DefaultValueAttribute(typeof(System.Drawing.Color), "Window"), System.ComponentModel.CategoryAttribute("Appearance"), System.ComponentModel.DescriptionAttribute("The primary background color used to display text and graphics in the control.")]
    public new System.Drawing.Color BackColor
    {
    get
    {
    return this._BackColour;
    }
    set
    {
    this._BackColour = value;
    if (this.DesignMode == true)
    {
    this.Invalidate();
    }
    }
    }

    Et le champ "BackColor" est visible sous visual studio.
    Mais voila, mon bouton héritant de la classe System.Windows.Forms.Button, je me trimballe toutes les propriété hinérentes aux boutons normaux. Mais ayant ma propre méthode OnPaint qui n'appelle pas la méthode de base, et ne gérant pas les images par exemple, je voudrais supprimer le champ "BackgroundImage". Il y en a d'autres comme "FlatStyle" et j'en passe.

    Je précise car ça à peu être son importance que je n'utilise pas ce composant en tant que dll, mais que je crée un bouton "normal" et que je modifie le code généré par visual pour que ce bouton "normal" devienne perso.(car mon bouton n'apparait pas dans la toolbox)

    Voila je fais appel aux connaissances de la communauté en espérant qu' elle sauras répondre.

  2. #2
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Bonjour,

    Tu peux l'enlever de la fenêtre propriété de cette façon

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Public Class MonBoutonControlDesigner
              Inherits System.Windows.Forms.Design.ControlDesigner
     
        Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
            properties.Remove("BackgroundImage")
            MyBase.PreFilterProperties(properties)
        End Sub
    End Class
     
    <Designer(GetType(MonBoutonControlDesigner))> _
    Public Class MonBouton
        Inherits System.Windows.Forms.Button
     
    End Class

    Par contre pour l'enlever de la liste sensitive en saisie, je ne sais pas comment faire. Il faudrait ajouter un attribut suivant à la propriété. :

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    EditorBrowsable(EditorBrowsableState.Never)

    Peut-être que cela fonctionne en héritant de la propriété ou avec un shadows.... A tester

    Bonne prog


  3. #3
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Pour l'enlever du designer, c'est l'attribut :
    System.ComponentModel.Browsable(false)

    Mais sinon, conceptuellement, y'a un pb dans ton control.
    Ce que tu fais s'appelle de la bidouille (je pense que tu le sais déjà).
    Si il hérite de Button, alors il doit bel et bien avoir une BackgroundImage.
    Et si tu veux faire un control sans BackgroundImage, alors il ne doit pas hériter de Button.

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Pour la bidouille oui j'en suis conscient, mais alors sachant que je veux quand même les évenement (onClick et autres) mais que mon onPaint est totalement perso je dois le faire hériter de quoi ?

  5. #5
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Hello,

    je pense que tu devrais le faire hériter de Control

    Bye

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2015, 16h04
  2. Champ texte dans un composant personnalisé
    Par legentil dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 08/04/2015, 14h11
  3. [AJAX] ajout / suppression champs ( dynamiquement ) dans une page web
    Par anwar1987 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2009, 18h37
  4. Gestion du ShowAccelChar dans un composant perso ?
    Par Bruno13 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/06/2008, 15h18
  5. Suppression d'un champs dans un etat si le champs vide
    Par franck06 dans le forum Access
    Réponses: 6
    Dernier message: 10/04/2006, 15h24

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