我正在尋找簡化三項布爾表達式的處理。 「Select Case」似乎沒有提供三重值的解決方案,而If語句似乎有點多。它會以我編碼的方式工作,但如果您對如何簡化這一點有任何想法,我會很感激您的見解。如果沒有,我希望這個片段可以節省一些時間。VB.Net中的布爾表 - Select Case,If-Else或Something else?
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語句(可能看起來更醜並且比你已經擁有的更少)。 – 2010-10-12 20:51:58