我试图制作一个简单的“ButtonPlus”控件。主要思想是从按钮控件继承并添加一些默认属性值(如字体,颜色,填充......)
无论我如何尝试,WinForm总是在客户端表单中生成(或“序列化”)属性值
重点是拥有最小且干净的代码,而不是buttonPlus的每个实例都应该有5行初始化代码。
我希望表单设计者不应为这些属性生成任何代码,并且能够从ButtonPlus代码控制它们。换句话说,如果我将ForeColor从红色更改为蓝色,应用程序中只有1个单一的代码行应该更改。
到目前为止,这是我的代码。正如你所看到的,香港专业教育学院尝试使用defaultvalue,reset,shouldserialize ....我能在网上找到的任何东西!
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
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
非常感谢您花时间仔细研究并回答 一切顺利
答案 0 :(得分:0)
听起来你想要WinForms主题,不幸的是,它现在不是内置的东西。但是,有一些第三方实现。
查看The Genghis Project中的ThemeManager类,为您提供一个非常高级或更细粒度的框架。但它确实提供了你所要求的东西。