居中自定义标签文字

时间:2012-09-24 12:44:11

标签: vb.net

我在禁用标签时使用自定义标签启用前景色(使用下面的内容)

当autosize关闭且文本对齐设置为TopCenter时,如何将文本居中作为标准lablel?我已尝试使用对齐选项的StringFormat,但这不符合中心。

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim LabelBrush As New SolidBrush(Me.ForeColor)

        Dim SF As New StringFormat

        SF.FormatFlags = StringFormatFlags.NoWrap
        SF.Alignment = StringAlignment.Center
        SF.LineAlignment = StringAlignment.Center

        LabelBrush.Color = DisabledColor_Dark

        e.Graphics.DrawString(Me.Text, Me.Font, LabelBrush, Padding.Left, Padding.Right, SF)

        LabelBrush.Dispose()
        LabelBrush = Nothing
    End Sub

1 个答案:

答案 0 :(得分:1)

使用这些填充变量,DrawString调用看起来不正确。

请改为尝试:

e.Graphics.DrawString(Me.Text, Me.Font, LabelBrush, Me.ClientRectangle, SF)

就匹配TopCenter的ContentAlignment等而言,您必须根据希望文本的显示方式更改Alignment和LineAlignment属性。

另外,请考虑使用TextRenderer代替e.Graphics.DrawString()。更好的输出。

TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, Me.ClientRectangle, _
                      DisabledColor_Dark, Color.Empty, _
                      TextFormatFlags.HorizontalCenter Or _
                      TextFormatFlags.VerticalCenter)