Как остановить выполнение DialogResult на основе условия?

У меня проблема со следующим сценарием в 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 в родительскую форму.

Мне нужно остановить выполнение события и не возвращать никакого ответа, пока пользователь не исправит информация в форме. Другими словами, пользователь должен быть возвращен в форму для исправления любых пропущенных или неправильных данных.

6
задан TylerH 6 March 2019 в 19:57
поделиться

2 ответа

Лично я бы не стал использовать DialogResult на кнопках в этом сценарии. Я обычно устанавливаю DialogResult только тогда, когда есть только отдельные параметры, не требующие дополнительной логики (например, создание настраиваемого MessageBox).

Я бы просто отправил DialogResult самому себе в случае успеха:

private void btnOk_Click(object sender, EventArgs e)
{
    if (allIsOK())
    {
        this.DialogResult = DialogResult.OK;
    }
}
5
ответ дан 8 December 2019 в 17:17
поделиться

Рассмотрите возможность подключения к событию Closing формы и используйте свойство Cancel в аргументах события для отмены закрытия формы.

Вот веб-страница, где обсуждается эта идея; это VB, но вы поймете идею:

http://www.vbinfozine.com/t_wfdlg.shtml

1
ответ дан 8 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: