2015-03-27 2 views
1

Программа имеет две формы: Логин и основная форма после входа в систему. При запуске программы он подключается к базе данных и проверяет наличие новой версии, если это так, он мгновенно отображает MessageBox, позволяющий пользователю узнать, как загрузить новую версию.Как закрыть форму окна после сообщения OK?

Когда пользователь нажимает OK, приложение необходимо закрыть, чтобы пользователь больше не мог его использовать до тех пор, пока не будет загружена новая версия. Проблема в том, что после нажатия кнопки «ОК» форма регистрации еще отображается. Мой код для класса приведен ниже:

DialogResult dialog = MessageBox.Show("FleetTrack™ update required.\n\nA new version of FleetTrack™ is available on your Driver Hub. You must download" 
     + " the latest update to use FleetTrack™.", "FleetTrack™ Update Required", MessageBoxButtons.OK); 
     if (dialog == DialogResult.OK) 
     { 


      Application.ExitThread(); 
     } 

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

+0

Этот код есть в каком модуле? Пожалуйста, покажите весь код запуска. –

+0

Почему бы просто не называть 'Close()' в форме входа? –

+2

Высокие шансы, что вы еще не назвали Application.Run(). Так что выхода еще нет. Используйте отладчик, установите точки останова. Environment.Exit() всегда работает. –

ответ

3

Использование Application.Exit(), а не Application.ExitThread()

И если вы показываете диалоговое окно перед Application.Run(), то все, что вам нужно убедиться в том, что вы не вызываете Заявка .Run(), если требуется обновление версии.

if (updateRequired) 
{ 
    DialogResult dialog = MessageBox.Show("FleetTrack™ update required.\n\nA new version of FleetTrack™ is available on your Driver Hub. You must download" 
+ " the latest update to use FleetTrack™.", "FleetTrack™ Update Required", MessageBoxButtons.OK); 
    if (dialog == DialogResult.OK) 
    { 
     Application.Exit(); 
    } 
} else 
    Application.Run(new Login()); 

updateRequired - это логическое значение, которое вы поддерживаете, чтобы проверить, требуется ли обновление приложения.

+0

Я попробую это и дам вам знать, если это сработает, спасибо! – Justin

+0

Работает как очарование сейчас, спасибо! – Justin

+0

есть что-то неправильное, просто добавив 'await Task.Delay (100);' перед строкой 'Application.Exit();' в форме? Я пробовал это простое исправление, и теперь он отлично закрывает программу. Это дает ему немного времени для того, чтобы код Application.Run работал, а затем он может закрыть программу. Что-то не так с этим? – Justin

Смежные вопросы