値が変更されたかどうか判定する


MaskedTextBoxにもModifiedプロパティが存在するので値が変更されたかどうかはModifiedで判断できるはずであるが、Maskプロパティが設定されていると値が変更されてもModifiedはFalseのまま変わらない…
MaskedTextBoxを使うからにはMaskプロパティは設定するはずなので、事実上Modifiedは使えません…
(VB.Net2005で上記現象を確認。VB.Net2008では直っているのだろうか?)


よってMaskedTextBoxで手入力で値を変更したかどうかを判断するにはKeyDownイベントとTextChangeイベントで無理矢理実装する。


例)マスクドテキストボックスの値が手入力で変更されていたらメッセージを表示する
   Private _Modified As Boolean = False 'フラグを定義

   'KeyDownイベントでフラグを変更
   Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MaskedTextBox1.KeyDown
       _Modified = True    '何か入力されたらフラグをTrueにする
   End Sub

   'TextChangedで値が変更されたかどうか判定する
   Private Sub MaskedTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedTextBox1.TextChanged
       If _Modified = True Then
           Messagebox.Show("変更済み")
           _Modified = False 'フラグを元に戻す
       End If
   End Sub


















.
最終更新:2008年07月16日 14:07