FormClosing 处理 ErrorProvider
FormClosing Treatment ErrorProvider
我 运行 在关闭表单时遇到问题,我的 ErrorProvider 不允许我这样做。
为了更正它,我做了一个偷工减料的创建变量 Boolena 来确认表单是否被关闭。
我已经尝试过 FormClosing 但 ErrorProvider 仍在验证焦点字段。
有没有人有同样的问题?你是怎么解决的?
我想做得更优雅。
表单初始化
public partial class MyForm: form
{
private bool _isClosing = false;
...
...
}
使用错误提供程序进行通用验证
private bool ValidatingFields(Control control)
{
bool eventArgs = false;
if (!this._isClosing) //Boolean Variable jerry-rigged
{
if (string.IsNullOrEmpty(control.Text))
{
eventArgs = true;
control.BackColor = Color.Red;
errorProvider.SetError(control, "Campo Obrigatório!");
}
else
{
eventArgs = false;
errorProvider.SetError(control, null);
}
}
return eventArgs;
}
字段验证
private void textName_Validating(object sender, CancelEventArgs e)
{
e.Cancel = ValidatingFields(textName);
}
点击事件关闭按钮
private void btnCancel_Click(object sender, EventArgs e)
{
this._isClosing = true;
this.Close();
}
是的,这种行为没有错。控件验证将触发任何按钮单击事件,除了 CausesValidation = False。简而言之,您可以将取消按钮的 属性 设置为“False”。这将跳过验证。
我 运行 在关闭表单时遇到问题,我的 ErrorProvider 不允许我这样做。 为了更正它,我做了一个偷工减料的创建变量 Boolena 来确认表单是否被关闭。 我已经尝试过 FormClosing 但 ErrorProvider 仍在验证焦点字段。 有没有人有同样的问题?你是怎么解决的? 我想做得更优雅。
表单初始化
public partial class MyForm: form
{
private bool _isClosing = false;
...
...
}
使用错误提供程序进行通用验证
private bool ValidatingFields(Control control)
{
bool eventArgs = false;
if (!this._isClosing) //Boolean Variable jerry-rigged
{
if (string.IsNullOrEmpty(control.Text))
{
eventArgs = true;
control.BackColor = Color.Red;
errorProvider.SetError(control, "Campo Obrigatório!");
}
else
{
eventArgs = false;
errorProvider.SetError(control, null);
}
}
return eventArgs;
}
字段验证
private void textName_Validating(object sender, CancelEventArgs e)
{
e.Cancel = ValidatingFields(textName);
}
点击事件关闭按钮
private void btnCancel_Click(object sender, EventArgs e)
{
this._isClosing = true;
this.Close();
}
是的,这种行为没有错。控件验证将触发任何按钮单击事件,除了 CausesValidation = False。简而言之,您可以将取消按钮的 属性 设置为“False”。这将跳过验证。