我有一个自定义用户控件,其中包含很少的元素,所以它看起来像这样:
public bool IsFinished() {
return _thread == null || !_thread.IsAlive;
}
现在,如果我单击按钮,就像我在标题中提到的那样,文本框将失去焦点,其验证事件将触发...但按钮的点击将永远不会触发......我猜这是一个通常的行为......但是如果验证没有失败,执行按钮的Click事件的正确方法是什么?
以下是我用于验证的代码:
UserControl
Textbox
Button
....
所以errRegistration.SetError()已成功执行 - errorMessage为null,表示没有验证错误,所以我猜这很好(我通过设置断点检查了这一点)。
这是按钮的Click事件实现:
private void txtPassword_Validating(object sender, CancelEventArgs e)
{
string errorMessage = _uiValidator.ValidatePassword(txtPassword.Text);
errRegistration.SetError(txtPassword, errorMessage);
}
答案 0 :(得分:0)
private void btnRegisterUser_Click(object sender, System.EventArgs e)
{
foreach (Control control in this.Controls)
{
// Set focus on control
control.Focus();
// Validate causes the control's Validating event to be fired,
// if CausesValidation is True
if (!Validate())
{
DialogResult = DialogResult.None;
return;
}
}
}
尝试类似的东西。