У меня проблема со следующим сценарием в Windows Forms:
Я создал форму с двумя кнопками, Но исходя из определенных условий, мне нужно остановить выполнение кнопки ОК. Проблема состоит в том, что если я только что сделал возврат, как это:
private void btnOk_Click(object sender, EventArgs e)
{
foreach(Control control in tblTable.Controls)
{
if (control.GetType() == typeof(TextBox))
{
if (control.Text.Trim() == "")
{
control.Focus(); return;
}
}
else
{
}
}
}
Результат диалога продолжает возвращать ответ OK в родительскую форму.
Мне нужно остановить выполнение события и не возвращать никакого ответа, пока пользователь не исправит информация в форме. Другими словами, пользователь должен быть возвращен в форму для исправления любых пропущенных или неправильных данных.
Лично я бы не стал использовать DialogResult
на кнопках в этом сценарии. Я обычно устанавливаю DialogResult
только тогда, когда есть только отдельные параметры, не требующие дополнительной логики (например, создание настраиваемого MessageBox).
Я бы просто отправил DialogResult
самому себе в случае успеха:
private void btnOk_Click(object sender, EventArgs e)
{
if (allIsOK())
{
this.DialogResult = DialogResult.OK;
}
}
Рассмотрите возможность подключения к событию Closing
формы и используйте свойство Cancel
в аргументах события для отмены закрытия формы.
Вот веб-страница, где обсуждается эта идея; это VB, но вы поймете идею: