抱歉,如果我在这里忽略了一些明显的东西。
问题背景
我有一个允许用户填写表格的应用程序,其内容将上传到数据库。当他们点击“上传”按钮时,必须验证表单。如果任何字段无效,用户将收到警报。
当前解决方案
当用户点击按钮上传交易时,validFormSelections()
被调用。
if (!this.validateChildren())
{
// Display an error
return false;
}
else
{
return true;
}
对于每个组合框,都会调用验证方法,例如
cmbName_Validating(object sender, CancelEventArgs e)
{
if (/* not valid for whatever reason */)
{
errorProvider.Clear();
e.Cancel = true;
errorProvider.setError((Control)sender, /* suitable error message */)
}
else
{
errorProvider.SetError((Control)sender, "");
}
}
问题
我想做的是在所有无效字段errorProvider
旁边显示下一个,但是目前由于在单个验证方法中,那么(如果我的理解是正确的)它不会在第一个无效字段后继续验证其他字段被发现。e.Cancel = true;
我怎样才能做到这一点,以便我可以调用this.validateChildren()
并仍然errorProvider
在所有无效字段旁边显示一个?
迄今为止尝试研究解决方案
据我了解,我的问题是需要将
CancelEventArgs
'Cancel
属性设置为 true,因为它会“切断”其余的验证。因此,最好找到一种方法来避免在以后设置此属性或找到解决此问题的方法。但我不知道该怎么做。我最初的想法之一是,只要我可以
boolean
从每个验证事件处理程序中返回一个,我就可以相当容易地解决这个问题(但是我怀疑并且后来了解到我不能这样做)。我看到在事件处理程序中返回值的替代方法是传入一个可变值(例如,CancelEventArgs
它本身)。这似乎可能是一个合适的解决方案,但是我不确定我自己如何做到这一点......