将多种字体样式应用于标签 - vb.net
Applying more than one font style to a label - vb.net
我有一个程序可以将粗体、斜体和下划线应用于标签,每一个都需要单击按钮。但是我不能有 2 fontstyles
,就像一个同时是粗体和斜体的单词。我尝试的以下代码将用新样式覆盖以前应用的样式。
Dim con4 As Label
For Each con4 In Me.Controls
If con4.Font.Bold = False Then
con4.Font = New Font(con4.Font, FontStyle.Bold)
Else
con4.Font = New Font(con4.Font, FontStyle.Regular)
End If
我想做的是,当单击按钮并且标签正常时,将标签更改为粗体,如果已经是粗体,则将其恢复为正常。
我对斜体和下划线使用了相同的代码,但我使用了 con5
和 con6
例如,我很快发现这不允许我将标签设置为粗体和斜体。每个按钮的点击都会覆盖前一个。所以,如果你能告诉我具体该怎么做。
谢谢大家。
FontStyle
枚举应用了 Flags
属性,这意味着您可以使用 Or
运算符组合值。例如,要同时应用粗体和斜体,您可以使用:
FontStyle.Bold Or FontStyle.Italic
您的代码实际上是切换单一样式,最正确的方法是这样的:
myFont = New Font(myFont, myFont.Style Xor FontStyle.Bold)
如果不适用,将应用 Bold
,如果不影响任何其他样式,则将其删除,因此您可以有两个单独的按钮或菜单项,每个按钮或菜单项切换一种样式。
如果您希望能够有选择地应用多种样式,例如使用 CheckBoxes
然后我会建议这样的事情:
Dim style = FontStyle.Regular
If useBold Then
style = style Or FontStyle.Bold
End If
If useItalic Then
style = style Or FontStyle.Italic
End If
myFont = New Font(myFont, style)
编辑:
这是我刚刚放在一起的一个更完整的示例,它使用 Buttons
来切换样式:
Private Sub boldButton_Click(sender As Object, e As EventArgs) Handles boldButton.Click
ToggleStyle(FontStyle.Bold)
End Sub
Private Sub italicButton_Click(sender As Object, e As EventArgs) Handles italicButton.Click
ToggleStyle(FontStyle.Italic)
End Sub
Private Sub underlineButton_Click(sender As Object, e As EventArgs) Handles underlineButton.Click
ToggleStyle(FontStyle.Underline)
End Sub
Private Sub ToggleStyle(style As FontStyle)
Me.Label1.Font = New Font(Me.Label1.Font, Me.Label1.Font.Style Xor style)
End Sub
这是一个使用 CheckBoxes
到 select 样式的类似示例:
Private Sub boldCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles boldCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub italicCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles italicCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub underlineCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles underlineCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub SetStyle()
Dim style = FontStyle.Regular
If Me.boldCheckBox.Checked Then
style = style Or FontStyle.Bold
End If
If Me.italicCheckBox.Checked Then
style = style Or FontStyle.Italic
End If
If Me.underlineCheckBox.Checked Then
style = style Or FontStyle.Underline
End If
Me.Label1.Font = New Font(Me.Label1.Font, style)
End Sub
我有一个程序可以将粗体、斜体和下划线应用于标签,每一个都需要单击按钮。但是我不能有 2 fontstyles
,就像一个同时是粗体和斜体的单词。我尝试的以下代码将用新样式覆盖以前应用的样式。
Dim con4 As Label
For Each con4 In Me.Controls
If con4.Font.Bold = False Then
con4.Font = New Font(con4.Font, FontStyle.Bold)
Else
con4.Font = New Font(con4.Font, FontStyle.Regular)
End If
我想做的是,当单击按钮并且标签正常时,将标签更改为粗体,如果已经是粗体,则将其恢复为正常。
我对斜体和下划线使用了相同的代码,但我使用了 con5
和 con6
例如,我很快发现这不允许我将标签设置为粗体和斜体。每个按钮的点击都会覆盖前一个。所以,如果你能告诉我具体该怎么做。
谢谢大家。
FontStyle
枚举应用了 Flags
属性,这意味着您可以使用 Or
运算符组合值。例如,要同时应用粗体和斜体,您可以使用:
FontStyle.Bold Or FontStyle.Italic
您的代码实际上是切换单一样式,最正确的方法是这样的:
myFont = New Font(myFont, myFont.Style Xor FontStyle.Bold)
如果不适用,将应用 Bold
,如果不影响任何其他样式,则将其删除,因此您可以有两个单独的按钮或菜单项,每个按钮或菜单项切换一种样式。
如果您希望能够有选择地应用多种样式,例如使用 CheckBoxes
然后我会建议这样的事情:
Dim style = FontStyle.Regular
If useBold Then
style = style Or FontStyle.Bold
End If
If useItalic Then
style = style Or FontStyle.Italic
End If
myFont = New Font(myFont, style)
编辑:
这是我刚刚放在一起的一个更完整的示例,它使用 Buttons
来切换样式:
Private Sub boldButton_Click(sender As Object, e As EventArgs) Handles boldButton.Click
ToggleStyle(FontStyle.Bold)
End Sub
Private Sub italicButton_Click(sender As Object, e As EventArgs) Handles italicButton.Click
ToggleStyle(FontStyle.Italic)
End Sub
Private Sub underlineButton_Click(sender As Object, e As EventArgs) Handles underlineButton.Click
ToggleStyle(FontStyle.Underline)
End Sub
Private Sub ToggleStyle(style As FontStyle)
Me.Label1.Font = New Font(Me.Label1.Font, Me.Label1.Font.Style Xor style)
End Sub
这是一个使用 CheckBoxes
到 select 样式的类似示例:
Private Sub boldCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles boldCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub italicCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles italicCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub underlineCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles underlineCheckBox.CheckedChanged
SetStyle()
End Sub
Private Sub SetStyle()
Dim style = FontStyle.Regular
If Me.boldCheckBox.Checked Then
style = style Or FontStyle.Bold
End If
If Me.italicCheckBox.Checked Then
style = style Or FontStyle.Italic
End If
If Me.underlineCheckBox.Checked Then
style = style Or FontStyle.Underline
End If
Me.Label1.Font = New Font(Me.Label1.Font, style)
End Sub