vb.net 将非 constans 字体样式添加到 richtextbox 选择

vb.net adding non constans font styles to richtextbox selection

有没有更好的方法来构建 FontStyle 与 "add/append" 方法而不是列出所有可能的组合?

'l is an instance of class that holds bold/italic/underline as booleans

Dim fStyle As New FontStyle
If l.fontBold And Not l.fontItalic And Not l.fontUnderline Then
    fStyle = FontStyle.Bold
ElseIf Not l.fontBold And l.fontItalic And Not l.fontUnderline Then
    fStyle = FontStyle.Italic
ElseIf Not l.fontBold And Not l.fontItalic And l.fontUnderline Then
    fStyle = FontStyle.Underline
ElseIf l.fontBold And l.fontItalic And Not l.fontUnderline Then
    fStyle = FontStyle.Bold Or FontStyle.Italic
ElseIf l.fontBold And Not l.fontItalic And l.fontUnderline Then
    fStyle = FontStyle.Bold Or FontStyle.Underline
ElseIf Not l.fontBold And l.fontItalic And l.fontUnderline Then
    fStyle = FontStyle.Italic Or FontStyle.Underline
ElseIf l.fontBold And l.fontItalic And l.fontUnderline Then
    fStyle = FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline
End If

是的。 FontStyle 枚举有一个 FlagsAttribute,这意味着您可以将枚举常量与 Or.

结合使用
<Flags>
Public Enum FontStyle

这样做

Dim fStyle As FontStyle = FontStyle.Regular

If l.fontBold
    fStyle = fStyle Or FontStyle.Bold
End If
If l.fontItalic
    fStyle = fStyle Or FontStyle.Italic
End If
If l.fontUnderline
    fStyle = fStyle Or FontStyle.Underline
End If

参见:Use Enumerated Values with Bit Flags to Handle Multiple Options