投稿者 ちゃちゃ  (その他) 投稿日時 2010/2/14 01:48:05
VB2008を使ってます。
チェックボックスを使ってIF文でbold,italic,underlineの書体を変更するコードを作りたいのですが、何度やってもうまくいきません。

各チェックボックスをチェックしたら、1つだけにチェックしたら1つ、2つチェックしたら2つの書体にといった感じで書体が変わるようにしたいのですが、以下のコードだと組み合わせのうち半分がきちんと動きません。

周りに詳しい方もおらず、こちらに相談させて頂きました。

アドバイスよろしくお願いします。


if chkBold.checked then
lbl.font=new font(lbl.font,fontstyle.Bold)

  if chkItalic.checked then
  lbl.font=new font(lbl.font,fontstyle.Italic)
  
   if chkUnderline.checked then
   lbl.font=new font(lbl.font,fontstyle.Underline)
   
     if chkBold.checked and chkItalic.checked then
     lbl.font=new font(lbl.font,fontstyle.Bold or fontstyle.Italic)

      if chkBold.cheked and chkUnderline.checked then
      lbl.font=new font(lbl.font,fontstyle.Bold or fontstyle.Underline)
        
        if chkBold.checked and chkItalic.checked and chkUnderline.checked then
        lbl.font=new font(lbl.font,fontstyle.Bold or fontstyle.Italic or 
                                                              fontstlye.Underline)
       endif
      endif
    endif
   endif
  endif
else
    lbl.font=new font(lbl.font,fontstyle.regular)

      if chkItalic.checked then
      lbl.font=new font(lbl.font,fontstyle.Italic)

         if chkUnderline.checked then
         lbl.font=new font(lbl.font,fontstyle.Underline)

           if chkItalic.checked and chkUnderline.checked then
           lbl.font=new font(lbl.font,fontstyle.Italic or fontstyle.Underline)
       
           endif
         endif
       endif
     endif

※このコードを組み合わせを変えて3種コーディングしました。
以下に表示の可・不可を書いておきます。

1⇒Bold、2⇒Italic、3⇒Underline

1,2,3単体のチェックはいずれもOK

1+2 OK
1+3 OK
2+3 2つ目でItalicが外れる
2+1 OK
3+1 2つ目でUnderlineが外れる
3+2 2つ目でUnderlineが外れる
1+2+3 OK
1+3+2 OK
2+1+3 OK
2+3+1 2つ目でBoldが外れるが、最後は完成
3+1+2 2つ目でUnderlineが外れ、3つ目でBoldが外れる
3+2+1 2つ目でUnderlineが外れるが最後は完成

うまくいく方法をご存知の方、アドバイスどうぞよろしくお願いします。