#c# #winforms #exit
#c# #winforms #выход
Вопрос:
Резюме: Когда приложение не запускается с указанной учетной записью пользователя, приложение завершает работу, но все еще создает графический интерфейс пользователя. Я хочу, чтобы он полностью вышел
Подробности: Я бы подумал, что приведенный ниже код будет работать. Проверяется наличие определенного атрибута имени пользователя, если его нет, приложение закрывается. Просто. Проблема в том, что приложение все еще создает графический интерфейс пользователя, даже если имя пользователя не содержит этого атрибута. Есть идеи?
Этот код находится в моем основном методе. Это форма Windows.
Код:
public ProgramMain()
{
String runningUser = Environment.UserName;
if (!runningUser.Contains("asdf"))
{
MessageBox.Show("You must run this application with your asdf account.");
Application.Exit();
}
else
{
InitializeComponent();
}
}
Комментарии:
1. Этот код находится внутри вашего
Main
метода? Кроме того, это WPF, Winforms или что-то еще?2. этот код находится в моем основном методе. это форма Windows
Ответ №1:
В файле Program.cs в Main вы увидите Application.Run(), если вы выполните проверку до того, как попадете в эту строку кода. Затем, если пользователь неверен, просто пропустите строку.
Application.Run() — это строка для запуска цикла выполнения приложения.
Если цикл выполнения никогда не выполняется, а main завершается. приложение завершит работу.
Комментарии:
1. 1. Вот как я обрабатываю дублирующиеся экземпляры моего запускаемого приложения.
2. Спасибо, Джейсон. Это имеет смысл. Я только что исправил свой код. Я сделаю вас своим решением.
Ответ №2:
Вы кодируете в форме, а не в событии Main() в program.cs. Если вы завершите работу до фактического создания экземпляра формы, вы не получите графический интерфейс пользователя.
Ответ №3:
Вы зашли слишком далеко. InitializeComponent выглядит так, как будто вы уже находитесь внутри формы Windows. Тогда вы уже создали окно. Установите флажок в методе main перед созданием формы, тогда ничего не отображается. Вы можете взломать отладчик и проверить стек вызовов. Найдите первый метод, в котором используется код из вашего проекта. Установите в этом методе проверку, и все должно быть в порядке.
С уважением, Алоис Краус
Ответ №4:
Похоже, что вы делаете это в вызове конструктора вашего элемента управления.Попробуйте выполнить эту проверку в методе Main класса Program.