2010-03-16 11 views
0

Je tente de créer un contrôle "ButtonPlus" simple. l'idée principale est d'hériter du bouton de contrôle et d'ajouter des valeurs de propriétés par défaut (telles que police, couleur, remplissage ...)Propriété de contrôle héritée .Net Par défaut

Peu importe comment j'essaie, le WinForm génère toujours (ou "série") la propriété valeur dans les formulaires client

le point entier est d'avoir un code minimal et propre, pas que chaque instance de buttonPlus devrait avoir 5 lignes de code init.

Je souhaite que le concepteur de formulaire ne génère aucun code pour ces propriétés et puisse les contrôler à partir du code ButtonPlus. En d'autres termes, si je change le ForeColor du rouge au bleu seulement 1 seule ligne de code de bingle dans l'application devrait changer.

hérite mon code jusqu'ici. Comme vous pouvez le voir, j'ai essayé d'utiliser defaultvalue, reset, shouldserialize .... tout ce que j'ai pu trouver sur le web!

Public Class ButtonPlus

Inherits Button 

Sub New()   
    AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink 
    Font = New System.Drawing.Font("Arial", 11.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(177, Byte)) 
    Padding = New System.Windows.Forms.Padding(3) 
    Anchor = AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Top 
    ForeColor = Color.Aqua 
End Sub 

<DefaultValue(True)> _ 
Public Overrides Property AutoSize() As Boolean 
    Get 
     Return MyBase.AutoSize 
    End Get 
    Set(ByVal value As Boolean) 
     MyBase.AutoSize = value 
    End Set 
End Property 

Public Function ShouldSerializeAutoSize() As Boolean 
    Return False ' Not AutoSize = True 
End Function 

Public Function ShouldSerializeForeColor() As Boolean 
    Return False 'Not ForeColor = Color.Aqua 
End Function 

Public Overrides Sub ResetForeColor() 
    ForeColor = Color.Aqua 
End Sub 

End Class

Merci beaucoup d'avoir pris le temps de regarder encore et répondre à le meilleur

Répondre

0

On dirait que vous voulez WinForms thématisation, ce qui est une chose intégrée en ce moment, malheureusement. Cependant, il existe des implémentations tierces.

Consultez la classe ThemeManager dans The Genghis Project pour vous donner un cadre pour le faire sur une échelle de très haut niveau ou plus granulaire. Il fournit cependant ce que vous demandez.

+0

De plus, cela vous permettra de faire cela pour beaucoup d'autres contrôles (comboboxes, etc.) sans avoir à hériter vous-même de chaque contrôle. C'est TRES pratique! – Jaxidian