Инструментальная кнопка не проверяет текстовое поле - PullRequest
2 голосов
/ 23 ноября 2010

У меня есть текстовое поле, стандартная кнопка и набор инструментов, содержащий пару кнопок. В проверочном событии текстового поля я закодировал, чтобы проверить, является ли оно пустым. Если да, то отображается сообщение «Введите значение». Когда стандартная кнопка нажата во время текстовое поле пустое, оно корректно проверяется и показывает сообщение, но когда Нажатие на кнопку toolstrip не проверяет текстовое поле, и сообщение не отображается. Кажется, я должен написать код проверки явно в toolstripbutton_click событие, которое слишком хлопотно, когда в одной форме несколько текстовых полей и кнопок инструментов.

Что я хочу знать, так это то, можно ли запускать textbox_validating при нажатии кнопки набора инструментов? Обработка всплывающих подсказок - действительно головная боль.

Ответы [ 3 ]

3 голосов
/ 18 сентября 2011

Напишите следующее в событии нажатия кнопки toolstripbutton:

Me.Validate()
2 голосов
/ 23 ноября 2010

Классы ToolStripItem являются специальными, они не являются производными от Control.Одним из побочных эффектов этого является то, что они не отвлекают внимание от активного контроля.И это предотвращает запуск события Validating.

Несколько вещей, которые вы можете сделать.Вы можете вызвать метод ValidateChildren () родительского текстового поля.Или вы можете переместить фокус самостоятельно:

    private void toolStripButton1_Click(object sender, EventArgs e) {
        btnSave.Focus();
        if (btnSave.Focused) btnSave.PerformClick();
    }
0 голосов
/ 23 ноября 2010

Вы можете вызвать процедуру textbox_validating из процедуры, которая обрабатывает событие нажатия toolstripbutton, но вам, возможно, придется добавить некоторую логику, чтобы увидеть, прошла ли она проверку, прежде чем продолжить с остальной частью события toolstripbutton_click. Поскольку вы сказали, что у вас есть много текстовых полей для проверки, вы можете рассмотреть возможность создания функции Validate (), которая возвращает true или false и проверяет все текстовые поля. Тогда все, что вам нужно сделать, это проверить, если Validate () = true, и вызывать одну и ту же функцию из всех кнопок панели инструментов вместо того, чтобы копировать один и тот же код снова и снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...