Сделайте пользовательский элемент управления размером этикетки - PullRequest
0 голосов
/ 21 марта 2012

У меня есть пользовательская метка элемента управления, которой я пытаюсь присвоить все те же свойства и функции, что и обычной метке. Я могу изменить текст, шрифт и назначить свойство автоматического размера. Однако я не могу придумать, как правильно изменить размер элемента управления. Есть ли у кого-нибудь какие-либо предложения или примеры кода для измененного размера пользовательского элемента управления, чтобы заполнить весь элемент управления? Любая помощь или указатели в правильном направлении будет принята с благодарностью.

1 Ответ

1 голос
/ 21 марта 2012

Вот быстрый пользовательский компонент, который наследует 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.Затем, когда размер метки будет изменен, шрифт будет соответствующим образом масштабирован.Это очень быстрая реализация.Очевидно, есть много мест, где можно расширить это, чтобы сделать его более умным, но, надеюсь, это должно дать вам начало и некоторые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...