2016-11-16 32 views
1

私はmaskedTextBoxとSaveボタンを持っています。今私は、ユーザーが何かを入力し、マスクされたテキストボックスが空の場合は無効にする場合は、保存ボタンを有効にしたい。テキストボックスのtextChangedイベントのtextBoxesに対してこれを行い、正常に動作しますが、マスクされたTextBox textChangedイベントではこれを行うことができません。ここに私のコードです。MaskedTextBoxでボタンを有効/無効にする方法は?

private void mtbCNIC_TextChanged(object sender, EventArgs e) 
    { 
     if (mtbCNIC.Text == "") 
     { 

      btnSave.Enabled = false; 
     } 
     else 
     { 

      btnSave.Enabled = true; 
     } 
    } 
+0

コードが正常に動作するはずです。イベントがフックされていることを確認してください。 –

+0

コードは正常です。デバッグしましたか? – Berkay

答えて

1

、テキスト値は、このような有用ではありませんしている場合、あなたはボタンを有効にするには有効な入力を持っている必要がありますチェック:これは、イベントコードを抑制するためのフラグを持つこのような何かによって避けることができます。私はに依存することを好む:

this.button1.Enabled = this.maskedTextBox1.MaskCompleted; 

マスクは、あなたは、単に単にテキストから-_を除外し、長さを確認することができ、このような特定のマスクについては00000-0000000-0

です:

var str = this.maskedTextBox1.MaskedTextProvider.ToDisplayString(); 
this.button1.Enabled = str.Replace("-", "").Replace("_", "").Length > 0; 
+0

ええ、それはうまくいったが、私は、ユーザーが単一の入力を入力するたびにボタンを有効にし、彼/彼女が削除する、それは@Rezaを無効にします –

+0

'Mask'値とは何ですか? –

+0

'Mask'は00000-0000000-0 –

1

を助けてください、私はこの問題は、ユーザーが任意のテキストを設定していないものの、まだそれらの文字からテキストがあるのでTextも、マスク文字を返していることであると信じています。 (これを確認するには、ブレークポイントを追加してTextをチェックしてください)

チェックの前にTextMaskFormatプロパティを変更してから、後で設定することで、テキストのユーザー入力部分のみを取得することができます。

EDIT:残念ながら、TextMaskFormatを変更することも慎重に処理されない場合は、スタックオーバーフローを引き起こす可能性がTextChangedイベントを、発射するようです。一般的に

bool suppressTextChanged = false; 
private void mtbCNIC_TextChanged(object sender, EventArgs e) 
{ 
    if (suppressTextChanged) 
     return; 

    suppressTextChanged = true; 
    mtbCNIC.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals; 
    btnSave.Enabled = mtbCNIC.Text != string.Empty; 
    mtbCNIC.TextMaskFormat = MaskFormat.IncludeLiterals; 
    suppressTextChanged = false; 
} 
+0

私は同じ仲間でしたが、「System.Windows.Forms.dllでSystem.StackOverflowExceptionという型の未処理の例外が発生しました」例外:@mus –

+0

@khaafi:問題は解決しましたが、今ではビットが面倒なので、他の答えはおそらく良いです。ただし、このソリューションは一般的なものであり、特定のマスクの詳細をコードに知らせる必要はありません。 – musefan

+0

あなたの時間と助けてくれてありがとう、あなたもそのメソッドを共有したい場合は、私は嬉しい@musefan –

関連する問題