【问题标题】:.Net Inherited Control Property Default.Net 继承的控件属性默认值
【发布时间】: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


    【解决方案1】:

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

    查看The Genghis Project 中的 ThemeManager 类,为您提供一个框架,以便在非常高级别或更细粒度的范围内执行此操作。但是,它确实提供了您所要求的内容。

    【讨论】:

    • 此外,这将允许您对许多其他控件(组合框等)执行此操作,而无需自己继承每个控件。非常方便!
    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2013-01-05
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多