チェックボックスCheckedプロパティの入力チェックについて

解決


モモ  2008-12-17 12:29:32  No: 145535  IP: 192.*.*.*

VB.NET2005です。
チェックボックスに対して入力チェック(Aが0のときのみチェックOK等)を行いたいのですが、
CheckedChangedイベントで行うと、フォームロード時にコードで
CheckBox1.Checked = Trueとするだけで、イベントが発生してしまいます。
Validatingイベントにすると、他のコントロールにフォーカスが移動した
時点でイベントが発生します。
チェックは、チェックした時点ですぐに判定したいのです。
いずれのイベントでもどっちつかずで困っていますので
何かよい方法があれば教えて下さい。
なければCheckedChangedイベントの動的ハンドル(フォームロード時イベント内は回避)で対応します。
よろしくお願い致します。

編集 削除
魔界の仮面弁士  2008-12-17 13:09:06  No: 145536  IP: 192.*.*.*

(1) 一時的にイベント割り当てを解除する。

RemoveHandler CheckBox1.CheckedChanged, AddressOf CheckBox1_CheckedChanged
CheckBox1.Checked = Not CheckBox1.Checked
AddHandler CheckBox1.CheckedChanged, AddressOf CheckBox1_CheckedChanged


(2) フラグ変数等で回避する。

Private Sub CheckBox1_CheckedChanged(〜
  If DirectCast(sender, Control).Tag IsNot Nothing Then Return
  '以下、通常処理
End Sub
Private Sub 〜
  CheckBox1.Tag = New Object()  'イベント回避
  CheckBox1.Checked = Not CheckBox1.Checked
  CheckBox1.Tag = Nothing
End Sub

編集 削除
モモ  2008-12-17 14:31:27  No: 145537  IP: 192.*.*.*

早速のお返事ありがとうございました。
「(2) フラグ変数等で回避する。」で対応しました。
Tagプロパティは便利ですね!恥ずかしながら初めて知りました。
本当にありがとうございました。

編集 削除