Ошибка провайдера не проходит успешную проверку - PullRequest
1 голос
/ 25 августа 2011

У меня есть текстовое поле, которое не допускает нулевые значения. Поэтому я обработал событие Validating для textbox. Мой код

private void nullNotAllowed(object sender, System.ComponentModel.CancelEventArgs e)
{
    TextBox txtMain = (TextBox)sender;
    if (txtMain.Text == "")
    {
        errorProvider1.SetError(txtMain, "error");
        e.Cancel = true;
    }
    else
    {
        errorProvider1.SetError(txtMain, String.Empty);
        e.Cancel = false;
    }
}

теперь, когда мое текстовое поле имеет нулевое значение и я нажимаю клавишу табуляции, всплывающее окно errorprovider всплывает и работает нормально, и даже фокус не теряется. но теперь, когда я исправляю свои значения и нажимаю клавишу табуляции, на этот раз фокус теряется, но провайдер ошибок все еще остается там.

Помните, мое текстовое поле находится на панели, а панель - на вкладке Control, а tabcontrol - в форме.

1 Ответ

1 голос
/ 26 августа 2011

Вы должны удалить ошибку в обработчике события Validate.

см. Здесь (MSDN) для примеров и примечаний, есть специальное предупреждение о фокусе ...

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx

...