因为新建一个工程后,VS默认Form1是主窗口(估计就是你的登录框),主窗口是不可以close只能hide的(From1是不是主窗体,在Program.cs这里Application.Run后面看出来),这样做的坏处是该程序一直不能被关闭,Form1一直占着内存。
想让Form1关闭,就一个办法,让Form1不做主窗口,改为Form2(你的是form_main),方法如下(以你的例子):
1.在Program.cs中将Application.Run(new Form1());(不知道原来你的叫什么,用默认)改为Application.Run(new form_main());
2.form_main_Load()添加代码:
private void form_main_Load(object sender, EventArgs e)
{
Form1 form1 = new Form1(); //自己改成登录框名称
form1.ShowDialog();
}
这时候在需要关闭form1,显示form_main那就直接使用this.Close()就行了.
注意:不需要在show下form_main了,直接this.Close()一句就够了.
代码没问题,工程属性里的设置改下就行:
项目-->属性(XX属性)-->应用程序:windows应用程序框架属性->关机模式改为"当最后一个窗体关闭时"
最后保存
你试试把登录框隐藏,把你的this.close()换成this.hide()试试
可以在program.cs里面先调用登录对话框
如果验证成功,则把主画面打开,在登录对话框中应该把确定按钮的dialogresult属性设置为ok
login
lg=new
login();
if(lg.showdialog()=dialogresult.ok)
{
form_main
main
=
new
form_main();
main.show();
}
this.hide()