2

我正在尝试以可重用的方式创建验证。

目的: 使验证控件可重用。

错误提供程序应与动态传递的控制相关联,并且可以在运行时设置或清除。

当用户按下 OnClick 事件时,所有控件都会使用它们自己的错误提供程序进行验证。

public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider,string msgToShowOnError)
{
    ErrorProvider EP = new ErrorProvider();
    if (txtControl.Text == string.Empty)
    {
        if(SetErrorProvider==true)
            EP.SetError(txtControl, msgToShowOnError);
        return true;
    }
    else
    {
        if(SetErrorProvider==true)
            EP.Clear();
        return false;
    }
}

问题:

每次调用该函数时,都会创建我不想要的新 errorprovider 对象。每个控件不应有超过 1 个错误提供程序,我应该能够像在 asp.net 中那样搜索它以搜索页面上的某些控件。

我怎样才能做到这一点

4

2 回答 2

3

在大多数情况下,您实际上只需要一个表单上的 ErrorProvider 实例。

例如

ErrorProvider errorProvider1 = new ErrorProvider();

或者只是将工具箱中的一个拖到表单上。

调用 ErrorProvider 时,您提供控件和消息,

errorProvider1.SetError (dateTimePicker1, "HEY BAD DATE");

要清除错误...

errorProvider1.SetError (dateTimePicker1, "");

因此,在大多数情况下,您真正​​需要的只是一个 ErrorProvider 实例。

于 2010-04-20T05:21:55.613 回答
0

像这样在 PropertyOnDemand 上制作并在每次您需要新的 ErrorProvider 时访问该属性

    private ErrorProvider _ErrorProvider = null;

    //PropertyOnDemand
    private ErrorProvider ErrorProviders
    {
        get
        {
            if (_ErrorProvider == null)
            {
                _ErrorProvider = new ErrorProvider();
                return _ErrorProvider;
            }
            else
                return _ErrorProvider;
        }
    }
    public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider, string msgToShowOnError)
    {

        if (txtControl.Text == string.Empty)
        {
            if (SetErrorProvider == true)
                ErrorProviders.SetError(txtControl, msgToShowOnError);
            return true;
        }
        else
        {
            if (SetErrorProvider == true)
                ErrorProviders.Clear();
            return false;
        }
    }
于 2013-06-21T08:46:12.383 回答