.Net继承的控件属性默认值

.Net继承的控件属性默认值,.net,inheritance,properties,default,.net,Inheritance,Properties,Default,我试着做一个简单的“ButtonPlus”控件。其主要思想是继承button控件并添加一些默认属性值(例如字体、颜色、填充…) 无论我如何尝试,WinForm总是在客户端表单中生成(或“序列化”)属性值 关键是要有最少且干净的代码,而不是buttonPlus的每个实例都应该有5行init代码 我希望表单设计者不应该为这些属性生成任何代码,并且能够从ButtonPlus代码控制它们。换句话说,如果我将前景色从红色更改为蓝色,应用程序中只有一行代码应该更改 这是到目前为止我的密码。如你所见,我尝试过

我试着做一个简单的“ButtonPlus”控件。其主要思想是继承button控件并添加一些默认属性值(例如字体、颜色、填充…)

无论我如何尝试,WinForm总是在客户端表单中生成(或“序列化”)属性值

关键是要有最少且干净的代码,而不是buttonPlus的每个实例都应该有5行init代码

我希望表单设计者不应该为这些属性生成任何代码,并且能够从ButtonPlus代码控制它们。换句话说,如果我将前景色从红色更改为蓝色,应用程序中只有一行代码应该更改

这是到目前为止我的密码。如你所见,我尝试过使用defaultvalue、reset、shouldserialize。。。。我能在网上找到的任何东西


公共类按钮

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
继承按钮
次新
AutoSizeMode=Windows.Forms.AutoSizeMode.GrowthandShrink
Font=New System.Drawing.Font(“Arial”,11.0!,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,CType(177,字节))
Padding=New System.Windows.Forms.Padding(3)
锚=主播风格。左+主播风格。右+主播风格。顶部
前景色=颜色。浅绿色
端接头
_
公共重写属性AutoSize()为布尔值
得到
返回MyBase.AutoSize
结束
设置(ByVal值为布尔值)
MyBase.AutoSize=值
端集
端属性
公共函数应将AutoSize()序列化为布尔值
返回False“不自动调整大小=True”
端函数
公共函数应将Forecolor()序列化为布尔值
返回False“Not ForeColor=Color.Aqua
端函数
公共覆盖子重置Forecolor()
前景色=颜色。浅绿色
端接头
末级

非常感谢您花时间仔细阅读并回答此问题
最好的

听起来你想要WinForms主题化,不幸的是,WinForms主题化现在不是一个内置的东西。但是,也有一些第三方实现


查看中的ThemeManager类,为您提供一个在非常高级别或更细粒度的范围内执行此操作的框架。但是,它确实提供了您需要的功能。

此外,这将允许您对许多其他控件(组合框等)执行此操作,而无需自己继承每个控件。它很方便!