Почему мое событие проверки не запускается в C#?

У меня есть форма, которая создается динамически. Это приложение WinForms.

Эта форма представляет собой просто меню и ряд текстовых полей и меток. Ради этого примера вы можете игнорировать метки.

Моя проблема: когда я редактирую материал в текстовых полях, а затем щелкаю меню, чтобы выдать «Сохранить», текст из последнего текстового поля все еще не выдал свой метод «Проверка». Похоже, это связано с тем, что элемент управления по-прежнему имеет фокус, а меню находится в отдельном потоке.

Как я могу заставить события проверки запускаться, когда пользователь нажимает «сохранить»? Я не знаю, в каком текстовом поле находится пользователь (если есть), и выдача SomeKnownControl.Focus(); в функции «сохранить», похоже, не помогает.


person Jerry    schedule 17.02.2009    source источник


Ответы (1)


У меня было это раньше. В вашей форме:

private void SaveButtonClick(...)
{
    if (this.ValidateChildren())
    {
        // do save
    }
}

Проверка детей в MSDN

person geofftnz    schedule 17.02.2009
comment
Не проблема... Меня это тоже на какое-то время поставило в тупик. - person geofftnz; 18.02.2009
comment
Хммм... Я думаю, проблема в том, что событие Validating вызывается для всех дочерних элементов управления, а не только для того, на котором находится фокус. - person Black Light; 28.06.2012