Предотвратить запуск основной формы - PullRequest
0 голосов
/ 18 мая 2018
public Form1()
{

InitializeComponent();
Update_current_data();  

}

private void Update_current_data()
{
    try
    {
        //...
        //...
        //...
    }
    catch
    {
        switch(MessageBox.Show("You are not connected to a WiFi or your IP address is invalid. The data processes IS UTTER CRAP.",
            "Connection Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1))
        {
            case DialogResult.Abort:
                this.Close();
                Application.Exit();
                break;
            case DialogResult.Ignore:
                break;
            case DialogResult.Retry:Update_current_data();
                break;
        }

    }
}

Хорошо, поэтому Update_current_data(); вызывается еще до загрузки формы, и я проверяю, подключен ли пользователь к Интернету или нет только в это время.Теперь, если пользователь не подключен, генерируется исключение, и отображается MessageBox, запрашивающий у пользователя Abort, ignore или Retry.(Форма еще не загружена)

Теперь вот проблема.Если пользователь нажимает abort, я хочу, чтобы форма никогда не загружалась и приложение полностью закрывалось.Но я не могу использовать this.Close();, поскольку исключение снова возникает в Program.cs, говоря:

'Невозможно получить доступ к удаленному объекту.Имя объекта: 'Form1'. '

и Application.Exit(); не влияют на него, так как форма открывается независимо.

Так как я могу предотвратить отображение формы здесь?сам.Также я не хочу обрабатывать исключение, выданное this.Close(); в `Program.cs.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

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

Поскольку вы собираетесь закрыть приложение, вы можете использовать Environment.Exit метод.Он завершает процесс и возвращает код выхода в ОС.Например:

Environment.Exit(1);

Примечание: В общем, лучше проверить критерии, прежде чем пытаться показать форму. Но так как вы ищете способчтобы выйти из приложения, вы должны знать, что вполне возможно выйти из приложения, используя метод метода Environment.Exit в конструкторе формы.Но если вы ищете просто закрыть форму в конструкторе, вы не можете сделать это в конструкторе, вы должны подписаться на Load событие формы и закрыть форму там.Чтобы увидеть пример, взгляните на этот пост .

0 голосов
/ 18 мая 2018

К тому времени, когда вы делаете свой чек, уже слишком поздно, потому что вы уже внутри своей формы.Чтобы это работало, вам нужно переместить ваш чек в Program.cs до того, как он создаст новую форму Form1 ();

Затем вы сможете правильно прервать создание окна до того, как оно действительно произойдет.

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