将多种字体样式应用于标签 - 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

我想做的是,当单击按钮并且标签正常时,将标签更改为粗体,如果已经是粗体,则将其恢复为正常。

我对斜体和下划线使用了相同的代码,但我使用了 con5con6

例如,我很快发现这不允许我将标签设置为粗体和斜体。每个按钮的点击都会覆盖前一个。所以,如果你能告诉我具体该怎么做。


谢谢大家。

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