Windows Forms: создайте основное приложение после входа в систему, какую форму запустить?
используя Windows Forms Я хотел бы иметь небольшой экран входа в систему, пользователь авторизует себя через (скажем, его Form1), поэтому основное приложение (скажем, его Form2) будет открыто после входа в систему. Но я полагаю, когда я использую приложение.Запустите (Form1), после его закрытия все приложение закрывается.
нет ли другого способа, кроме использования невидимой Form2? Что-то вроде запуска Form2 по требованию и закрытия первоначально запущенного Form1? Надеюсь, это имеет смысл для вас:)
5 ответов
создать перегрузку System.Windows.Forms.ApplicationContext
, create Form1
и затем Form2
в своем конструкторе.
использовать Application.Run
перегрузку, которая принимает
на ApplicationContext
класс-это то, что вам нужно. Есть Application.Run(ApplicationContext)
перегрузка вы можете позвонить.
см. здесь для примера: http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext.aspx
вы можете вызвать форму аутентификации перед запуском основной формы приложения внутри программы.КС (имя по умолчанию), например:
static void Main()
{
Form1 f1 = new Form1();
DialogResult dr = f1.ShowDialog();
if (dr == DialogResult.OK)
{
Application.Run(new Form2());
}
else
{
Application.Exit();
}
}
внутри Form1 если они правильно аутентифицируются, то вам просто нужно закончить:
this.DialogResult = DialogResult.OK;
this.Close();
Если аутентификация не удается, вы можете разрешить им повторную попытку аутентификации, дать им максимальное количество попыток и т. д. Затем, когда вы решите, что у них было слишком много, просто позвоните
Application.Exit();
попробуйте использовать настройки в свойствах проекта
- перейти к свойствам проекта
- перейдите на вкладку Настройки и создайте настройку "lcheck" типа bool, а значение "false"
- пусть form1 является основной формой, а form2-формой входа в систему
-
использовать цикл while в form1-formload функции, как
while(System.properties.default.lcheck!=true) { authentication process: }
Примечание: я сомневаюсь в этом процессе. Кто-то может изменить настройки из папки appdata приложение.
попробуйте этот подход. Из вашей программы mainline создайте свой основной класс формы, из этого класса есть функция "go", которая вызывает форму входа в систему. Если эта функция возвращает true, вы можете продолжить вызов приложения.Выполнить (форма).
MainForm form = new MainForm();
form.Show();
if (form.go())
{
Application.Run(form);
}
else
{
form.Close();
}
class MainForm
{
public bool go()
{
LoginFrom lf = new LoginForm()
if (lf.ShowDialog() != DialogResult.OK)
{
return false;
}
}
}
немного упрощенно, возможно, но это должно заставить вас идти в правильном направлении.