2017-01-22 36 views
0

私のプログラムでは、クリックされたボタンに応じて、ラベルを太字、イタリック、または下線にしています。しかし、私が一度に両方の効果を持たせようとすると、最初は消えてしまいます。太字、イタリック、下線-vb.net

Private Sub bold_Click(sender As Object, e As EventArgs) Handles bold.Click 

    Dim con4 As Control 
    For Each con4 In Me.Controls 
     Select Case con4.Name 
      Case "Label1" 
       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 
      Case "Label2" 
       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 

...

  End Select 
    Next 
End Sub 

このコードはLabel24に上がります。

私は3つの異なるボタンに同じ手順を使用し、彼らは私の結果を得る。しかし、2つの効果を一緒にしようとすると、前の効果が上書きされます。


ありがとうございます。

答えて

3

すべての条件を一度に1つだけ検査して設定するため、次のテストでフォントスタイルを上書きします。

右フォント選択、一度各ラベルのテストを組み合わせる:あなたが見ることができるように

If con4.Font.Bold = False Then 
    If con4.Font.Italic = False Then 
     con4.Font = New Font(con4.Font, FontStyle.Bold Or FontSryle.Italic) 
    Else ' not italic 
     con4.Font = New Font(con4.Font, FontStyle.Bold) 
    End If 
Else ' not bold 
    If con4.Font.Italic = False Then 
     con4.Font = New Font(con4.Font, FontStyle.Italic) 
    Else ' not italic 
     con4.Font = New Font(con4.Font, FontStyle.Regular) 
    End If 
End If 

を、これは扱いにくい非常に速くなります。特に24個のラベルに対して同じコードを繰り返している場合は特にそうです。したがって、ステップ1はこのシーケンスを関数にすることです。

ステップ#2では、すべての比較を取り除くことができます。アンダーラインを追加すると、個別のケースすべてでさらに別のレベルのif..else..end ifが追加されます。あなたが最終値を形成し、だけにして、それを設定するOrFontStyleビットを組み合わせることができます(これは完全に正しい構文ではないかもしれないが、一般的な考え方を明確にする必要があり)

fontstyle = FontStyle.Regular 
If cond4.Font.Bold = False Then 
    fontstyle = fontStyle.Bold 
End If 
If cond4.Font.Italic = False Then 
    fontstyle = fontstyle Or fontStyle.Italic 
End If 
If cond4.Font.Underline = False Then 
    fontstyle = fontstyle Or fontStyle.Underline 
End If 
target.Font = New Font(con4.Font, fontstyle) 

+0

を一時停止。物事をより明確にするためにコードを編集します。私はあなたのコードを理解できません。 – TGamer

+0

@TGamer:hm ....あなたは何を分からないのですか? – usr2564301

+0

私はステップ1のパートを手に入れました。これは私によって完成される必要があります。ステップ2では、私のプログラムが 'Enum型であり、式に変換できない 'ということを伝えるので、' fontstyle'は何か分かりません。あなたはあなたの答えを編集し、与えられたコードをどこに書くのか教えてください。それぞれのIf文は異なるボタンクリックイベントの下にあるはずです。明確化していただきありがとうございます。 – TGamer

関連する問題