Microsoft によると、「Visual Basic 6.0 では、CheckBox の状態がプログラムによって変更されると、Click イベントが発生します。」これはまさに私が望んでいないことです。
状態が変更されたときではなく、チェックボックスをクリックしたときにのみクリックイベントが発生するようにします。
それを行う方法はありますか?
ありがとうございました
Microsoft によると、「Visual Basic 6.0 では、CheckBox の状態がプログラムによって変更されると、Click イベントが発生します。」これはまさに私が望んでいないことです。
状態が変更されたときではなく、チェックボックスをクリックしたときにのみクリックイベントが発生するようにします。
それを行う方法はありますか?
ありがとうございました
変更を無視するために、コードからフォームに入力するときにフラグを設定できます。コードがうまく構成されていない場合、これは面倒になる可能性があります。
フォーム レベル:
Public IgnoreChange As Boolean
フォーム ロード:
IgnoreChange = False
イベント:
If IgnoreChange Then Exit Sub
あなたのコード:
frmReference.IgnoreChange = True
frmReference.Checkbox1.Checked = True
frmReference.IgnoreChange = False
コードはユーザーのアクションにのみ応答する必要があります
それが最善の方法かどうかはわかりませんが、IgnoreEvents のような変数を呼び出して、プログラムで状態を変更する直前にそれを true に設定するのが 1 つの方法です。次に、イベント ハンドラーでその変数が true の場合、何もせずにイベント ハンドラーを終了します。
Click
代わりに、イベント コードをイベントに入れますMouseDown
。ただし、checkstate を手動で設定する必要があります。
Private Sub Check1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Check1.Value = IIf(Check1.Value = vbChecked, vbUnchecked, vbChecked)
' run other necessary code here
End Sub