在C#中关闭多个表单

时间:2013-10-13 16:42:00

标签: c# winforms forms

我的Windows窗体应用程序中共有3个表单(Form1,Form2和Form3)。

Form2是登录页面。当用户单击Form1中的登录按钮时,必须打开Form2,如果用户提供准确的用户名和密码,则需要Form3才能打开并关闭Form1和Form2。

如何在C#中编写这样的东西?我正在使用Microsoft Visual Studio 2012。

到目前为止,我已完成以下程序:

双击Form1进入编码窗口并写入 -

Form2 secondForm = new Form2();

就在Form Load事件之外

&安培;在按钮内,我写了 -

secondForm.Show();

因此,当我运行解决方案时,单击Form1中的按钮打开Form2(完美地工作!)。但是当用户在Form2中输入正确的用户名和密码组合以打开Form3时,我不知道如何关闭Form1和Form2。

Form1 firstForm = new Form1();
firstForm.Close();

没有关闭表单。

请指导我。

2 个答案:

答案 0 :(得分:0)

您应该使用Main()方法添加新类。 (或)项目中将有Program.cs。

然后,从Main()方法启动应用程序。您可以将项目的“启动对象:”属性更改为“< YourApplicationName> .Program”。

Main()方法应将Form1Form2显示为对话框。

如果DialogResultOK,则按Form3方法运行Application.Run()

DialogResult r;
r = (new Form1().ShowDialog());
if( r == DialogResult.OK )
Application.Run(new Form3());

答案 1 :(得分:0)

如果您这样做将结束/关闭整个应用程序,则无法关闭主窗体(用于启动消息循环的窗体)。然而,你可以做的是:

Form1代码

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var f2 = new Form2();

        var res = f2.ShowDialog();

        if (res == DialogResult.OK)
        {
            var f3 = new Form3();
            this.Visible = false;
            f3.ShowDialog();
            this.Close();
        }
    }
}

Form2代码:

public partial class Form2 : Form

    {
        public Form2()
        {
            InitializeComponent();
        }

        private void buttonLogin_Click(object sender, EventArgs e)
        {
            // if username and password is ok set the dialog result to ok
            this.DialogResult = DialogResult.OK;

            this.Close();
        }
    }