В перечислении 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)
EDIT:
Вот более полный пример я просто положить вместе, что использует 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
для выбора стилей:
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
Я думаю, этот вопрос поможет вам: https://stackoverflow.com/questions/35224826/multiple-font-style-combinations-in-vb-net – muffi
@muffi - Извините, но не слишком ясно. – TGamer