如何关闭表单并打开新表单?

时间:2009-11-27 00:22:04

标签: c# winforms windows-mobile compact-framework

我想知道如何在打开新表单后关闭表单。

例如,我有一个登录表单,当他们登录时,我打开一个新的表单,但我想关闭登录表单。

那我该怎么做呢?

我在windows mobile 6精简版上制作这些表格。不确定它是否会在Windows窗体中有所不同。

5 个答案:

答案 0 :(得分:4)

可以这样做:

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 :(得分:1)

如果主窗体是“登录”窗口,则只能隐藏它,因为如果关闭它,所有其他子窗口也将被关闭。 我猜你有两个选择:

1-制作申请表格,主要表格。应用程序启动时,隐藏它并显示登录窗口。登录窗口关闭后,显示主窗体。

2-用户在登录窗口中输入凭据后,隐藏(不要将其关闭),然后打开另一个表单。当第二个关闭时,关闭两个以关闭应用程序。

答案 2 :(得分:1)

大多数桌面应用程序将登录表单实现为模式对话框。如果您执行相同的操作,则首先显示主窗体,然后立即从主窗体的form_loaded事件中将登录显示为模式对话框。关闭登录对话框后,您可以从中获取登录凭据并继续。

答案 3 :(得分:0)

只需致电Form.Close()

您需要获取已打开的登录表单的对象,或者如果您要在登录表单中关闭它,请尝试拨打this.Close()

答案 4 :(得分:0)

我很疯狂,但我建议只使用一种表格。制作表单的其余部分UserControls,然后将它们交换进主表单。然后你不必担心这些垃圾。

我的Program.cs通常看起来像:

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

这样我就可以在表单之外保持初始化和逻辑。