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();

попробуйте использовать настройки в свойствах проекта

  1. перейти к свойствам проекта
  2. перейдите на вкладку Настройки и создайте настройку "lcheck" типа bool, а значение "false"
  3. пусть form1 является основной формой, а form2-формой входа в систему
  4. использовать цикл 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;
    }
  }
}

немного упрощенно, возможно, но это должно заставить вас идти в правильном направлении.