Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中关闭多个窗体#_C#_Winforms_Forms - Fatal编程技术网

C# 在C中关闭多个窗体#

C# 在C中关闭多个窗体#,c#,winforms,forms,C#,Winforms,Forms,我的Windows窗体应用程序中总共有3个窗体(Form1、Form2和Form3) Form2是登录页面。当用户单击Form1中的登录按钮时,Form2必须打开,如果用户提供了准确的用户名和密码,则需要Form3打开和关闭Form1和Form2 如何用C语言编写这样的代码?我正在使用Microsoft Visual Studio 2012 到目前为止,我已经完成了以下步骤: 双击Form1以进入编码窗口并写入- Form2 secondForm = new Form2(); 就在表单加载事件

我的Windows窗体应用程序中总共有3个窗体(Form1、Form2和Form3)

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

如何用C语言编写这样的代码?我正在使用Microsoft Visual Studio 2012

到目前为止,我已经完成了以下步骤:

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

Form2 secondForm = new Form2();
就在表单加载事件之外

&在按钮里面,我写道-

secondForm.Show();
因此,当我运行解决方案时,可以通过单击Form1中的按钮来打开Form2(非常好!)。但当用户在Form2中输入正确的用户名和密码组合以打开Form3时,我不知道如何关闭Form1和Form2

Form1 firstForm = new Form1();
firstForm.Close();
没有关闭表单


请指导我。

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

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

方法应将
Form1
Form2
显示为对话框

如果
DialogResult
OK
,则通过
Application.run()
方法运行
Form3

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

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

表格1代码

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();
        }
    }
}
表格2代码:

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

它不会关闭表单,因为您正在创建一个新表单1,而您会关闭该新表单1,而不是关闭现有表单。是否有理由创建一个
表单3
,而不是返回
表单1