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

解決


モモ  2008-12-17 21:29:32  No: 145535

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


魔界の仮面弁士  2008-12-17 22:09:06  No: 145536

(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 23:31:27  No: 145537

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加