我试图做一个简单的“ButtonPlus”控件。主要思想是从按钮控件继承并添加一些默认属性值(如字体,颜色,填充...).Net继承控件属性默认值
无论我如何尝试,WinForm总是生成(或“序列化”)属性客户表单中的值
整个问题的关键在于拥有最少和干净的代码,而不是buttonPlus的每个实例都应该有5行init代码。
我希望表单设计人员不应该为这些属性生成任何代码,并且能够从ButtonPlus代码控制它们。换句话说,如果我将ForeColor从红色更改为蓝色,应用程序中只有一条单独的代码行应该更改。
继承人我的代码到目前为止。正如你所看到的,我尝试使用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
非常感谢您抽出宝贵的时间来看看这一点,并回答 所有最好的
此外,这将允许您为许多其他控件(组合框等)执行此操作,而无需自己继承每个控件。这非常方便! – Jaxidian 2010-03-16 17:11:51