使自定义标签控件调整大小

时间:2012-03-20 23:22:42

标签: vb.net visual-studio custom-controls label

我有一个自定义控件标签,我试图提供与常规标签相同的所有属性和功能。我可以更改文本,字体,并指定自动大小属性。但是,我无法找到一种方法来使控件重新正确调整大小。有没有人有任何建议或代码示例的自定义控件被重新调整大小以填充整个控件?任何有关正确方向的帮助或指示都会非常感激。

1 个答案:

答案 0 :(得分:1)

这是一个继承Label的快速自定义组件,它将执行此操作:

Partial Class MyLabel
    Inherits System.Windows.Forms.Label

    Private _fWidth As Integer
    Private _fHeight As Integer
    Private _fSize As Single
    Private _fFix As Boolean = False

    Public Property Fix() As Boolean
        Get
            Return _fFix
        End Get
        Set(ByVal value As Boolean)
            _fFix = value
            If _fFix Then
                _fWidth = Me.Width
                _fHeight = Me.Height
                _fSize = Me.Font.Size
            End If
        End Set
    End Property

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
        MyBase.OnResize(e)
        If _fFix Then
            Dim nStyle As FontStyle = FontStyle.Regular _
                                 + CInt(Me.Font.Bold) * FontStyle.Bold _
                                 + CInt(Me.Font.Italic) * FontStyle.Italic _
                                 + CInt(Me.Font.Underline) * FontStyle.Underline _
                                 + CInt(Me.Font.Strikeout) * FontStyle.Strikeout
            Dim nFont As New Font(Me.Font.FontFamily, _
                          _fSize * Me.Width / _fWidth, _
                           nStyle, GraphicsUnit.Point)
            Me.Font = nFont
            Me.Height = _fHeight * (Me.Width / _fWidth)
        End If
    End Sub

End Class

要完成这项工作,您必须设置AutoSize = False和新属性Fix = true。然后,当调整标签大小时,它将适当地缩放字体。这是一个非常快速的实现。有很多地方可以扩展它以使其更加智能,但希望这应该给你一个开始和一些想法。