2017-01-22 2 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

모든 조건을 한 번에 하나씩 검사하고 설정하기 때문에 다음 테스트에서 글꼴 스타일을 무시합니다.

다음 오른쪽 글꼴 선택, 한 번 각 레이블에 대한 테스트를 결합 :

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

@ T 게이머 : 흠 .... 어떤 부분을 이해하지 못합니까? – usr2564301

+0

잘 스텝 1 파트를 얻습니다.이 파트는 저에게 완료되어야합니다. Step2에서는 프로그램에서 '열거 형이고 표현식으로 변환 할 수 없습니다'라고 알려주기 때문에'fontstyle '이 무엇인지 알지 못합니다. 답을 편집하고 주어진 코드를 어디에 쓸 것인지 말해 줄 수 있습니까? 각 If 문은 다른 버튼 클릭 이벤트 아래에 있어야합니다. 명확히하고 감사하십시오. – TGamer

관련 문제