我有一个自定义控件标签,我试图提供与常规标签相同的所有属性和功能。我可以更改文本,字体,并指定自动大小属性。但是,我无法找到一种方法来使控件重新正确调整大小。有没有人有任何建议或代码示例的自定义控件被重新调整大小以填充整个控件?任何有关正确方向的帮助或指示都会非常感激。
答案 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
。然后,当调整标签大小时,它将适当地缩放字体。这是一个非常快速的实现。有很多地方可以扩展它以使其更加智能,但希望这应该给你一个开始和一些想法。