Как использовать поставщик ошибок во время выполнения вместе с ассоциированием любого элемента управления для проверки

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

Вопрос

Я пытаюсь создать проверку в многоразовой моде.

Цель:Сделайте контроль проверки многоразовым.

Поставщик ошибок должен связываться с переданным управлением динамически и может быть установлен или очищен во время выполнения.

Когда пользователь нажимает событие 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, чтобы искать некоторое управление на странице.

Как я могу это сделать

Это было полезно?

Решение

В большинстве случаев вам действительно нужен только один экземпляр errorProvider в форме.

Например

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