我有一个自定义控件,可以在加载表单时获得焦点。它使用验证事件来处理它被留空或输入无效数据。
我的问题是,当用户加载表单然后关闭它时,它正在经历验证过程并显示错误,因为它是空的。
在 BaseForm (: Form) 上,我们覆盖了 WndProc 方法并在表单上设置了一个标志来表示它正在关闭,现在在验证事件处理程序中,我可以获取父表单并在表单正在关闭时取消从该方法返回。
我想要做的是对对象执行此检查,以便它影响所有现有实例并在表单关闭时取消验证事件。我只是无法取消活动。
这是 UserControl 代码的外壳。
public class SearchControl : UserControl
{
public SearchControl()
{
Validating += OnControlValitading;
}
public void OnControlValitading(object sender, CancelEventArgs e)
{
BaseForm frm = FindForm() as BaseForm;
if(frm != null && frm.IsClosing)
{
e.Cancel = true;
//TODO Cancel validation event on all objects
}
}
}