vb.net将非常量字体样式添加到richtextbox选择中

时间:2018-02-17 19:02:08

标签: vb.net richtextbox

使用"添加/附加"是否有更好的方法来构建FontStyle方法而不是列出所有可能的组合?

'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

1 个答案:

答案 0 :(得分:1)

是。 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