前提・実現したいこと
ビット演算でのフラグ管理でチェックボックスのTRUE/FALSEを制御したい。
例)
☐1
☐2
☐4
☐8
☐16
☐32
☐64
というチェックボックスがあった場合、DBより取得した整数値が
「63」だったとしたら1~32までのチェックボックスにチェックをつけたい
該当のソースコード
VB.NET
1public Enum FLG 2 FLG1 = &H1 3 FLG2 = &H2 4 FLG4 = &H4 5 FLG8 = &H8 6 FLG16 = &H16 7 FLG32 = &H32 8 FLG64 = &H64 9END Enum 10 11public Sub SetCheck() 12 'DBより取得する整数値は10進数 13 Dim num As String = "&H" & Convert.toString([DBより取得した整数値], 16) 14 15 If (num And FLG.FLG1) = FLG.FLG1 Then 16 Me.chk1.Checked = True 17 End If 18 19 If (num And FLG.FLG2) = FLG.FLG2 Then 20 Me.chk2.Checked = True 21 End If 22 23 If (num And FLG.FLG4) = FLG.FLG4 Then 24 Me.chk4.Checked = True 25 End If 26 ~ 以下省略 ~ 27End Sub
DBより取得した整数値を16進変換して、Andでどこにフラグが立っているか判定しようと思っているのですが、ただしくチェックの判定ができていないようです。
※整数値が「99」の時、chk1/chk2/chk32/chk64を選択したのですが、chk1とchk2しか選択されない
どこに問題があるのかすいませんが助言お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 14:14