我试图在最后执行代码之前检查windows用户表单中的所有必需信息是否完整。
是否有任何推荐的方法来检查窗体是否已完成?
似乎如果我列出每个控件然后检查它我的代码看起来很臃肿,因为它持续了大约40个控件。
e.g。
if(!check_1(varX_TextBox))
return false;
if(!check_2(varY_ComboBox))
return false;
...
if(!check_40(varAA_numericUpDown))
return false;
答案 0 :(得分:2)
有许多不同的方法可以实现这一目标,最终会归结为您个人对您使用哪种方式的偏好。也就是说,开始使用Windows窗体的两个好地方是作为Windows窗体框架(参见here)和企业库Validation Application Block的一部分的验证事件。
validaiton事件Validating
和Validated
为您提供了干净利落地插入控件验证的钩子,并且大多数Windows窗体控件都可以干净地集成到此框架中。您可以在各种时间触发此验证(例如关闭窗体或控件失去焦点时)。
如果您在设计中使用域模型,则验证应用程序块非常有用。它允许您使用验证要求修饰类的属性,然后提供有助于验证这些类和报告任何错误的类。
答案 1 :(得分:2)
根据建议的其他解决方案,您可以与他们一起,或者您可以根据自己的要求制作自定义功能。
我举个例子。
假设一个表单包含超过15个文本框,其中10个是必需的。因此,请在文本框的标记属性中设置消息,例如“需要xyz字段”。
现在在提交表单上,您可以调用类似的内容以下
foreach (Control c in this.Controls)
{
//All text boxes validate in one if statement
if (c is TextBox && c.Tag.ToString() != string.Empty)
{
MessageBox.Show(c.Tag.ToString());
}
}
这只是一个例子,你可以涵盖所有其他类型的控件,如组合框,复选框等。
现在就是你如何使用验证。但你也可以这样做,
答案 2 :(得分:0)
您可以使用win-form验证控件,或实现其他验证机制,例如在视图模型(演示者)中实现IDataErrorInfo。
答案 3 :(得分:0)
答案 4 :(得分:0)
没有其他'神奇'的方法可以解决你想要做的事情。每个字段,如果有其要求,将具有其代码片段,用于对该字段进行验证。
您可以选择的内容是如何“添加”该裁剪剪裁到该字段的选项:
OnValidate
事件OnChange
事件OnOK
表单上“接受”按钮的事件,将覆盖每个控件并验证它我最喜欢的不是上面的,因为我非常注重绑定,所以我有一个类用于我的数据,将该类绑定到表单控件,并在'accept'按钮上让我的类执行DATA验证