3

Microsoft によると、「Visual Basic 6.0 では、CheckBox の状態がプログラムによって変更されると、Click イベントが発生します。」これはまさに私が望んでいないことです。

状態が変更されたときではなく、チェックボックスをクリックしたときにのみクリックイベントが発生するようにします。

それを行う方法はありますか?

ありがとうございました

4

3 に答える 3

4

変更を無視するために、コードからフォームに入力するときにフラグを設定できます。コードがうまく構成されていない場合、これは面倒になる可能性があります。

フォーム レベル:

  Public IgnoreChange As Boolean

フォーム ロード:

  IgnoreChange = False

イベント:

  If IgnoreChange Then Exit Sub

あなたのコード:

  frmReference.IgnoreChange = True
  frmReference.Checkbox1.Checked = True
  frmReference.IgnoreChange = False

コードはユーザーのアクションにのみ応答する必要があります

于 2013-10-02T12:46:40.313 に答える
3

それが最善の方法かどうかはわかりませんが、IgnoreEvents のような変数を呼び出して、プログラムで状態を変更する直前にそれを true に設定するのが 1 つの方法です。次に、イベント ハンドラーでその変数が true の場合、何もせずにイベント ハンドラーを終了します。

于 2013-10-02T12:33:45.463 に答える
2

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
于 2013-10-02T14:25:29.323 に答える