我在禁用标签时使用自定义标签启用前景色(使用下面的内容)
当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
答案 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)