Почему я не могу закрыть форму в C #? - PullRequest
0 голосов
/ 16 февраля 2009

Я не могу закрыть одну из моих программ программно. Кто-нибудь может мне помочь?

Вот код:

    private void WriteCheck_Load(object sender, EventArgs e) {
        SelectBankAccountDialog sbad = new SelectBankAccountDialog();
        DialogResult result = sbad.ShowDialog();
        if (result == DialogResult.Cancel) {
            this.Close();
        } else {
            MessageBox.Show(result.ToString());
        }
        MessageBox.Show(sbad.bankaccountID.ToString());
    }

Ответы [ 3 ]

4 голосов
/ 16 февраля 2009

Как уже упоминался конфигуратор (в комментариях), форма должна быть показана перед тем, как ее можно будет закрыть, поэтому вместо события Загрузка вы должны сделать это в Показано событие вместо

Если вы не хотите, чтобы форма отображалась для диалогового окна, я думаю, вы можете заключить код события в Visible = false;

В итоге, основной код будет

    private void WriteCheck_Shown(object sender, EventArgs e)
    {
        Visible = false;
        SelectBankAccountDialog sbad = new SelectBankAccountDialog();
        DialogResult result = sbad.ShowDialog();
        if (result == DialogResult.Cancel) {
            this.Close();
        } else {
            MessageBox.Show(result.ToString());
        }
        MessageBox.Show(sbad.bankaccountID.ToString());
        Visible = true;
    }
3 голосов
/ 16 февраля 2009

При вызове Form.Close() форма должна закрыться, но не до тех пор, пока не будут обработаны все ожидающие события. У вас также есть шанс отменить закрытие формы в событии FormClosing.

Во-первых, вы, вероятно, захотите return после вашего звонка на this.Close(). Если он по-прежнему не закрывается, просмотрите код и посмотрите, что происходит. Возможно, вам придется установить и проверить флаг «forcblyClose» и вернуться из любых других методов обработки, прежде чем он действительно закроется.

0 голосов
/ 16 февраля 2009

Фактическая проблема заключается в том, что окна не позволяют форме закрываться при загрузке. Я должен показать диалог построения, а затем, если результат диалога отменен, я должен вызвать исключение и перехватить исключение при создании формы.

Это место говорит больше об этом

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