Пропустить проверку с помощью controlbox[X] winform?
У меня есть проверяющее событие
private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
{
if (EmployeeIDtextBox.Text == "")
{
MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
}
}
И может пропустить проверку с помощью кнопки отмены
private void cancelbutton_Click(object sender, EventArgs e)
{
AutoValidate = AutoValidate.Disable;
Close();
}
Можно ли пропустить проверку с помощью controlbox[X] windowsform? Я попытался установить значение "Причины" в форме "false", но оно не работает. Я также пробую это с Formclosing, но это не работает.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (EmployeeIDtextBox.CausesValidation)
{
EmployeeIDtextBox.CausesValidation = false;
Close();
}
}
1 ответ
Решение
Я уже дал вам ответ на ваш предыдущий вопрос. Прекратите использовать MessageBox, и ваша проблема исчезнет. Вместо этого используйте компонент ErrorProvider.
Перехватывает обработку закрытия формы, чтобы вы могли отменить проверку до того, как первое событие сработало, требует взлома. Вставьте этот код в вашу форму:
protected override void WndProc(ref Message m) {
// Intercept WM_SYSCOMMAND, SC_CLOSE
if (m.Msg == 0x112 && (m.WParam.ToInt32() & 0xfff0) == 0xf060) this.AutoValidate = AutoValidate.Disable;
base.WndProc(ref m);
}