2017-01-27 15 views
0

У меня есть программа, которая будет применять полужирный, курсив и подчеркивание, каждый с нажатием кнопки, на метку. Но у меня не может быть 2 fontstyles, как слово, выделенное жирным и курсивным одновременно. Следующий код, который я пробовал, переопределит предыдущий применяемый стиль с новым.Применяя более одного стиля шрифта к ярлыку - vb.net

Dim con4 As Label 
For Each con4 In Me.Controls 
    If con4.Font.Bold = False Then 
     con4.Font = New Font(con4.Font, FontStyle.Bold) 
    Else 
     con4.Font = New Font(con4.Font, FontStyle.Regular) 
    End If 

То, что я хочу сделать, это изменить метку полужирным шрифтом при нажатии на кнопку, и метка является нормальным, и вернуть его в нормальное состояние, если он уже был смелым.

Я использовал тот же код для наклонного и подчеркивания, но вместо этого я использовал con5 и con6

вскоре я увидел, что это не позволяет мне сделать этикетки Жирными и курсив, например. Каждый щелчок на кнопке переопределяет предыдущий. Поэтому, если вы скажете мне, что делать.


Спасибо, ребята.

+0

Я думаю, этот вопрос поможет вам: https://stackoverflow.com/questions/35224826/multiple-font-style-combinations-in-vb-net – muffi

+0

@muffi - Извините, но не слишком ясно. – TGamer

ответ

3

В перечислении 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 
+0

Я только что добавил примеры кода. – jmcilhinney

+0

Это более чем достаточно thnx – TGamer