【发布时间】:2011-01-28 05:23:41
【问题描述】:
我正在尝试制作一个简单的“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
结束类
非常感谢您花时间查看并回答 万事如意
【问题讨论】:
标签: .net inheritance properties default