【发布时间】:2017-06-07 09:08:51
【问题描述】:
功能概述。
我在WinForm 中有这个SaveDetails 函数,它遍历所有controls,以确定在用户输入期间是否在form 中标记了任何errorProviders。如果函数returns true,
我所有的TextBoxes 值都需要存储在我的私有字段中,并显示一个消息框并关闭表单。
//对于大约15个文本框,这是否也可以通过循环来实现?因为这看起来很麻烦。
title = cmb_Title.Text;
如果在迭代中找到returns false 和errorProvider,它需要向用户显示错误消息,清除私有字段并让用户有机会重新输入详细信息,但不要清除文本框!
问题:
循环遍历所有控件,无论是否找到errorProvider。当只找到一个时,我怎样才能阻止它只标记?这个函数也在clickEvent中。
代码
isValid = true;
foreach (Control c in panel1.Controls)
{
if (errorProvider1.GetError(c).Length > 0)
{
isValid = false;
MessageBox.Show("invalid entry, please revisit the form before proceding");
}
}
if (isValid)
{
title = cmb_Title.Text;
surName = txt_SurName.Text;
dateOfBirth = dateTimePicker1.Text.ToString();
MessageBox.Show("Indi Form Saved");
Hide();
}
【问题讨论】:
-
为一个表单使用多个 ErrorProvider 是没有任何意义的。一个就足以为所有控件提供图标和工具提示。当然,您将永远不会遇到任何麻烦找到那个供应商。如果您想使用 ErrorProvider 也 验证整个表单,那么 consider this.
标签: c# .net winforms errorprovider