我试图建立一个验证一可重复使用的方式。

目的: 让的验证控制可重复使用。

错误提供者应与控制传动态,并可以被设定或清除在运行时间。

当用户请按击事件后所有的控制得到验证了与他们自己的错误提供者。

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 搜索一些控制在一个页面上。

我怎么可以这样做

有帮助吗?

解决方案

在大多数情况下你真的只需要一个实例ErrorProvider上的一种形式。

E.g。

ErrorProvider errorProvider1 = new ErrorProvider();

或者只是将一个从该工具箱到的形式。

打电话时,一个ErrorProvider,你源的控制和信息,,

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

到明显的错误...

errorProvider1.SetError (dateTimePicker1, "");

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

其他提示

在这样的属性内部进行制作,并每次您需要新的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;
        }
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top