Como usar o provedor de erros no tempo de execução, além de associar qualquer controle para validar

StackOverflow https://stackoverflow.com/questions/2672708

Pergunta

Estou tentando criar uma validação de maneira reutilizável.

Propósito:Torne o controle de validação reutilizável.

O provedor de erros deve se associar ao controle passado dinamicamente e pode ser definido ou limpo no tempo de execução.

Quando o usuário pressiona o evento OnClick, todos os controles são validados com seus próprios provedores de erros.

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;
    }
}

Questão:

Toda vez que a função é chamada de novo objeto ErrorProvider é criado, o que eu não quero. Todo controle não deve ter mais de 1 provedor de erros e eu devo pesquisá -lo como feito no ASP.net para procurar algum controle em uma página.

Como posso fazer isso

Foi útil?

Solução

Na maioria dos casos, você realmente precisa apenas de uma instância do ErrorProvider em um formulário.

Por exemplo

ErrorProvider errorProvider1 = new ErrorProvider();

ou apenas arraste um da caixa de ferramentas para o formulário.

Ao chamar um ErrorProvider, você fornece o controle e a mensagem ,,

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

Para limpar o erro ...

errorProvider1.SetError (dateTimePicker1, "");

Portanto, uma instância do ErrorProvider é tudo o que você realmente precisa na maioria das situações.

Outras dicas

Faça em Propertyondemand como este e acesse essa propriedade toda vez que precisar de um novo 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;
        }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top