Что вызывает проверку моего текстового поля?

Вчера я сделал собственное текстовое поле с собственным валидатором:

public partial class CustomTextBox : TextBox
{
    ErrorProvider errorProvider;

    public CustomTextBox()
    {            
        InitializeComponent();
        errorProvider = new ErrorProvider();
        errorProvider.DataSource = this;
    }        


    protected override void OnValidating(CancelEventArgs e)
    {
        base.OnValidating(e);
        if (this.Text.Trim() == "")
        {
            errorProvider.SetError(this, "Required field");
            e.Cancel = true;
            return;
        }
        errorProvider.SetError(this, "");
    }


}

Поэтому я поместил это в форму с кнопкой отмены и установил для причины проверки значение false на кнопке отмены. Я также устанавливаю для формы значение false. По какой-то причине, если я нажму кнопку "Отмена", мое пользовательское текстовое поле все еще запускает событие onValidating. Любые идеи, что вызывает это? Я бы не хотел, чтобы что-либо проверяло мои текстовые поля, пока я не нажму кнопку отправки, которая попытается проверить все элементы управления в форме. Таким образом, пользователю не нужно вводить данные в элемент управления, прежде чем перейти к другому. Звучит разумно? Это мой первый взлом пользовательского интерфейса winforms.


person Justin Holbrook    schedule 02.07.2009    source источник


Ответы (2)


Похоже, это известная проблема: отзыв о Visual Studio.

Я установил AutoValidate = AutoValidate.Disable; в форме, и она больше не проверяется. Я не уверен, где вы вписали бы это в свое требование.

person nickd    schedule 02.07.2009

Позже я нашел простое свойство формы под названием AutoValidate. Я установил для него значение EnableAllowFocusChange, и теперь у меня есть именно то поведение, которое я хочу, поставщик ошибок предупредит, когда пользователь покинет элемент управления, и проверка завершится неудачно, но пользователь не ограничен элементом управления.

person Justin Holbrook    schedule 24.07.2009