如何在vb.net中对单选按钮选项文本使用不同的字体样式(粗体和常规)
我需要在单选按钮选项中加粗文本的一部分 我需要实现这个输出,其中“选项A:”字体样式为粗体,而“意大利面”只是常规字体样式 我试过这个代码,字符串是数据,它没有字体选项如何在vb.net中对单选按钮选项文本使用不同的字体样式(粗体和常规),vb.net,winforms,Vb.net,Winforms,我需要在单选按钮选项中加粗文本的一部分 我需要实现这个输出,其中“选项A:”字体样式为粗体,而“意大利面”只是常规字体样式 我试过这个代码,字符串是数据,它没有字体选项 Public Class _1_5_register_event_s2 Private Sub _1_5_register_event_s2_Load(sender As Object, e As EventArgs) Handles Me.Load Dim optionA As String = "Option A (
Public Class _1_5_register_event_s2
Private Sub _1_5_register_event_s2_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim optionA As String = "Option A ($0): "
Dim food As String = "Pasta"
optionA = FontStyle.Bold
food = FontStyle.Regular
rb_optionA.Text = optionA & food
End Sub
您可以重写radiobutton类 代码: 阶级 形式 结果:
假设这是WinForms,我认为您必须使用一个没有标题的选项按钮和两个标签控件(其中一个设置为粗体)来伪造它。您必须自己绘制它。订阅控件的
Paint
事件RadioButtonRenderer.GetGlyphSize(…)
提供单选按钮的大小(以偏移文本),RadioButtonRenderer.DrawParentBackground(…)
绘制透明背景(如果控件或其父控件具有纯色背景,则不需要,但最好还是使用它)TextRenderer.DrawText(…)
(带有标志TextFormatFlags.VerticalCenter或TextFormatFlags.Left或TextFormatFlags.NopAdd
)绘制文本。使用具有不同FontStyle
)的控件字体构建粗体字体。最好创建从RadioButton派生的自定义控件(假设您引用的是WinForms,如Load
事件所示)。通过这种方式,您可以更好地处理文本(必须在绘制之前清除文本),并且不必为不同的标准控件多次编写相同的代码。
Public Class XRadioButton
Inherits RadioButton
Public Sub New()
UseVisualStyleBackColor = False
TextImageRelation = TextImageRelation.ImageAboveText
End Sub
Public Overrides Property Text As String
Get
Return ""
End Get
Set(ByVal value As String)
MyBase.Text = value
End Set
End Property
Public Property LeftText As String
Public Property RightText As String
Protected Overrides Sub OnPaint(ByVal pevent As PaintEventArgs)
MyBase.OnPaint(pevent)
Dim rect As Rectangle = ClientRectangle
rect.Inflate(-5, -5)
Using sf As StringFormat = New StringFormat() With {
.Alignment = StringAlignment.Center,
.LineAlignment = StringAlignment.Far
}
Using brush As Brush = New SolidBrush(ForeColor)
Dim font As Font = New Font(Me.Font, FontStyle.Bold)
pevent.Graphics.DrawString(LeftText, font, brush, rect, sf)
sf.Alignment = StringAlignment.Far
pevent.Graphics.DrawString(RightText, Me.Font, brush, rect, sf)
End Using
End Using
End Sub
End Class
Public Class Form1
Private Sub Form1_Load_1(sender As Object, e As EventArgs) Handles MyBase.Load
Dim button As XRadioButton = New XRadioButton()
button.LeftText = "Hello"
button.RightText = "test"
Me.Controls.Add(button)
End Sub
End Class