【发布时间】:2010-10-12 20:39:21
【问题描述】:
我希望简化三项布尔表达式的处理。 “Select Case”似乎没有为三元值提供解决方案,并且 If 语句似乎有点多。它会按照我编码的方式工作,但是如果您对如何简化它有任何想法,我会很感激您的见解。如果没有,我希望这个 sn-p 可以为别人节省一点时间。
Public Sub SetThisFontStyle(ByRef theTextBox As RichTextBox, ByVal StyleToChange As String)
'Get Initial Values:'
Dim BoldState As Boolean = theTextBox.SelectionFont.Bold
Dim ItalicState As Boolean = theTextBox.SelectionFont.Italic
Dim UnderlineState As Boolean = theTextBox.SelectionFont.Underline
'Find out what we re trying to change:'
Select Case StyleToChange
Case "Bold" : If BoldState Then BoldState = False Else BoldState = True
Case "Italic" : If ItalicState Then ItalicState = False Else ItalicState = True
Case "Underline" : If UnderlineState Then UnderlineState = False Else UnderlineState = True
Case Else : Exit Sub
End Select
'Boolean Table just for reference:'
'0 - 0 - 0 None'
'1 - 0 - 0 Bold Only'
'0 - 1 - 0 Italic Only'
'0 - 0 - 1 Underline Only'
'1 - 1 - 0 Bold and Italic'
'0 - 1 - 1 Italic and Underline '
'1 - 0 - 1 Bold and Underline'
'1 - 1 - 1 Bold, Italic, and Underline'
If Not BoldState And Not ItalicState And Not UnderlineState Then
'Regular, without any styles'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Regular)
ElseIf BoldState And Not ItalicState And Not UnderlineState Then
'Bold Only'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Bold)
ElseIf Not BoldState And ItalicState And UnderlineState Then
'Italic Only'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Italic)
ElseIf Not BoldState And Not ItalicState And UnderlineState Then
'Underline Only'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Underline)
ElseIf BoldState And ItalicState And Not UnderlineState Then
'Bold and Italic'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Bold + Drawing.FontStyle.Italic)
ElseIf Not BoldState And ItalicState And UnderlineState Then
'Italic and Underline'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Italic + Drawing.FontStyle.Underline)
ElseIf BoldState And Not ItalicState And UnderlineState Then
'Bold and Underline'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Bold + Drawing.FontStyle.Underline)
ElseIf BoldState And ItalicState And UnderlineState Then
'Bold, Italic, and Underline'
theTextBox.SelectionFont = _
New Font(txtRichText.SelectionFont, Drawing.FontStyle.Bold + Drawing.FontStyle.Italic + Drawing.FontStyle.Underline)
Else
Exit Sub
End If
End Sub
【问题讨论】:
-
您可以尝试将这三个结果视为一个三位数字并使用 switch 语句(这可能看起来更丑陋并且比您已有的更难维护)。
标签: vb.net if-statement select fonts boolean