Как закрыть форму и открыть новую форму? - PullRequest
2 голосов
/ 27 ноября 2009

Мне интересно, как закрыть форму после открытия новой формы.

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

Так как бы я это сделал?

Я делаю эти формы на Windows Mobile 6 Compact Edition. Не уверен, что будет иначе, чем в окнах.

Ответы [ 5 ]

4 голосов
/ 27 ноября 2009

Может сделать это так:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        if (DialogResult.OK == new LoginForm().ShowDialog())
        {
            Application.Run(new MainForm());
        }
    }
}

Должен обеспечить закрытие LoginForm с DialogResult.OK, если действительные учетные данные, и с DialogResult.Cancel в противном случае:

private void ValidateLogin(...)
{
  ... // check credentials

  if(validCredentials)
  {
    this.DialogResult = DialogResult.OK;
    this.Close();
  }
  else
  {
   ... // up to you, maybe keep the form displayed to give user a chance to enter correct credentials
  }
}

}

Не нужно ничего скрывать.

1 голос
/ 27 ноября 2009

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

1 голос
/ 27 ноября 2009

Если основной формой является окно входа в систему, вы сможете только скрыть его, так как если вы закроете его, все остальные дочерние окна будут закрыты. У вас есть 2 варианта, я думаю:

1- Сделайте форму вашего заявления основной. Когда приложение запустится, скройте его и отобразите окно входа в систему. Когда окно входа закроется, покажите основную форму.

2 - Как только пользователь вводит свои учетные данные в окне входа в систему, скрыть его (не закрывать), а затем открыть другую форму. Когда второй закроется, закройте оба приложения, чтобы закрыть приложение.

0 голосов
/ 27 ноября 2009

Я сумасшедший, но я бы предложил использовать только одну форму. Сделайте остальные формы UserControls и просто поменяйте их местами в основной форме. Тогда вам не нужно беспокоиться об этом мусоре.

Мой Program.cs обычно выглядит примерно так:

public class Program
{
    static void Main()
    {
        MyApp application = new MyApp();
        application.Initialise();
        Application.Run(application.MainForm);
    }
}

Таким образом, я могу сохранить инициализацию и логику вне форм.

0 голосов
/ 27 ноября 2009

Просто позвоните Form.Close().

Вам понадобится получить объект для открытой формы входа в систему или, если вы хотите закрыть ее, когда вы хотите закрыть ее, попробуйте позвонить this.Close()

...