が、私はそれにいくつかの要素を持つカスタムユーザーコントロールを持ってトリガされたテキストボックスのイベントを検証した後、解雇されることはありませんので、以下のようになります。私はボタンをクリックした場合のように、今ボタンのClickイベントは
UserControl
Textbox
Button
....
を私はタイトルで述べたように、テキストボックスはフォーカスを失い、Validatingイベントが発生します...しかし、ボタンのクリックは発動しません...これは通常の動作だと思います...しかし、ボタンを実行する適切な方法は何ですか?検証が失敗しなかった場合は、イベントをクリックしますか?ここで
私が検証に使用コードです:
private void txtPassword_Validating(object sender, CancelEventArgs e)
{
string errorMessage = _uiValidator.ValidatePassword(txtPassword.Text);
errRegistration.SetError(txtPassword, errorMessage);
}
だからerrRegistration.SetError()が正常に実行されていた - にErrorMessageは、nullで検証エラーを意味していないので、私は、私はこれをチェックし(それで大丈夫だと思いますブレークポイントを置くことによって)。
そして、これは、ボタンのClickイベントの実装です:
private void btnRegisterUser_Click(object sender, EventArgs e)
{
_uiValidator.ValidatePassword(txtUsername.Text);
//validate other fields here...
if (_uiValidator.IsValid())
{
this._controller.Save();
}else{
MessageBox.Show("...", "Title", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
テキストボックスのデータはバインドされていますか?あなたが '_Validating'ハンドラ本体をコメントアウトするとどうなりますか?イベントを取り消すものがなければなりません( 'e.Cancel'を' true'に設定する) –
データがバインドされていません...テキストボックスのText値を手動で設定します。私は、私のコードでe.Cancel = trueを持っていないとかなり肯定的です。 – Whirlwind