我的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();
没有关闭表单。
请指导我。
答案 0 :(得分:0)
您应该使用Main()
方法添加新类。 (或)项目中将有Program.cs。
然后,从Main()
方法启动应用程序。您可以将项目的“启动对象:”属性更改为“< YourApplicationName> .Program”。
您Main()
方法应将Form1
和Form2
显示为对话框。
如果DialogResult
为OK
,则按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();
}
}