2009-07-02 8 views
0

私は、独自のバリで昨日カスタムテキストボックスを作っ:テキストボックスの検証の原因は何ですか?

public partial class CustomTextBox : TextBox 
{ 
    ErrorProvider errorProvider; 

    public CustomTextBox() 
    {    
     InitializeComponent(); 
     errorProvider = new ErrorProvider(); 
     errorProvider.DataSource = this; 
    }   


    protected override void OnValidating(CancelEventArgs e) 
    { 
     base.OnValidating(e); 
     if (this.Text.Trim() == "") 
     { 
      errorProvider.SetError(this, "Required field"); 
      e.Cancel = true; 
      return; 
     } 
     errorProvider.SetError(this, ""); 
    } 


} 

だから私はキャンセルボタンをフォーム上でこれを入れて、キャンセルボタンをfalseにcausesValidationを設定します。また、フォームのcauseValidationをfalseに設定します。何らかの理由で私がキャンセルをクリックすると、私のcustomtextboxはまだonValidatingイベントを発生させています。何が原因なのか?フォーム上のすべてのコントロールを検証しようとする送信ボタンをクリックするまで、テキストボックスを検証する必要はありません。このようにして、ユーザーは他のユーザーに移動する前に、コントロールにデータを入力する必要がありません。合理的な音ですか?これはwinformsのUIで私の最初の亀裂です。

答えて

0

私は後でAutoValidateというフォームの単純なプロパティを見つけました。私はそれをEnableAllowFocusChangeに設定しました。これで私が必要とする正確な振る舞いを持っています。ユーザーがコントロールを離れ、検証に失敗したときにerrorproviderが警告しますが、ユーザーはコントロールに限定されません。

0

既知の問題のようです:Visual Studio Feedback

AutoValidate = AutoValidate.Disable;をフォームに設定しましたが、検証されなくなりました。私はあなたの要件にそれを適合させるだろうか分からない。

関連する問題