VB.NET2005です。
チェックボックスに対して入力チェック(Aが0のときのみチェックOK等)を行いたいのですが、
CheckedChangedイベントで行うと、フォームロード時にコードで
CheckBox1.Checked = Trueとするだけで、イベントが発生してしまいます。
Validatingイベントにすると、他のコントロールにフォーカスが移動した
時点でイベントが発生します。
チェックは、チェックした時点ですぐに判定したいのです。
いずれのイベントでもどっちつかずで困っていますので
何かよい方法があれば教えて下さい。
なければCheckedChangedイベントの動的ハンドル(フォームロード時イベント内は回避)で対応します。
よろしくお願い致します。
(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
早速のお返事ありがとうございました。
「(2) フラグ変数等で回避する。」で対応しました。
Tagプロパティは便利ですね!恥ずかしながら初めて知りました。
本当にありがとうございました。
ツイート | ![]() |