Учитывая, что вы указали, что хотите всплывающее диалоговое окно с сообщением об ошибке , один из способов сделать это - переместить проверку в событие OnClosing
обработчик.В этом примере закрытие формы отменяется, если пользователь отвечает «да» на вопрос в диалоговом окне.
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Determine if text has changed in the textbox by comparing to original text.
if (textBox1.Text != strMyOriginalText)
{
// Display a MsgBox asking the user to save changes or abort.
if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// Cancel the Closing event from closing the form.
e.Cancel = true;
// Call method to save file...
}
}
}
Установив e.Cancel = true
, вы не допустите закрытие формы.
Однако было бы лучше, если бы дизайн / пользовательский интерфейс отображал ошибки валидации в строке (путем некоторого выделения подсвечивающих полей, отображения всплывающих подсказок и т. Д.) и предотвращения выбора пользователем кнопки ОК.во-первых.