检查Windows窗体是否完成

时间:2011-11-22 08:50:59

标签: .net winforms

我试图在最后执行代码之前检查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;

5 个答案:

答案 0 :(得分:2)

有许多不同的方法可以实现这一目标,最终会归结为您个人对您使用哪种方式的偏好。也就是说,开始使用Windows窗体的两个好地方是作为Windows窗体框架(参见here)和企业库Validation Application Block的一部分的验证事件。

validaiton事件ValidatingValidated为您提供了干净利落地插入控件验证的钩子,并且大多数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)

  1. 执行此操作的一种方法是创建一个验证类,其中包含您需要检查的所有属性。当用户更改文本框或复选框等时更改该类的属性,然后在类中查找更改。您需要两个状态,即有效状态和已更改状态,并始终将已更改状态与有效状态进行比较。如果两个状态相同,则表示表单上的所有验证和检查都是您想要的。

答案 4 :(得分:0)

没有其他'神奇'的方法可以解决你想要做的事情。每个字段,如果有其要求,将具有其代码片段,用于对该字段进行验证。

您可以选择的内容是如何“添加”该裁剪剪裁到该字段的选项:

    每个控件的
  • OnValidate事件
  • 计时器,它将检查表单上的所有控件,每个控件都有自己的代码段
  • 每个控件的
  • OnChange事件
  • OnOK表单上“接受”按钮的事件,将覆盖每个控件并验证它

我最喜欢的不是上面的,因为我非常注重绑定,所以我有一个类用于我的数据,将该类绑定到表单控件,并在'accept'按钮上让我的类执行DATA验证