日期:2014-05-18  浏览次数:20991 次

winform中的form问题
一个form是一个登录界面,为frm1,里面有一个登录button,我想在点击登录的时候,frm1关闭,另一个form 名为frm2打开,我写的代码 
frm1.close();
frm2 f2 = new frm2();
f2.show();
但是当我点击登录的时候,两个form都没有了,当我把frm1.close();注释掉的时候,可以,但两个form都存在,请为该怎么实现啊?第一次写winform程序,求指点

------解决方案--------------------
登录成功后隐藏登录界面。

this.Hide();
frm2 f2 = new frm2();
frm.Show();
------解决方案--------------------
1、frm1.close();====>frm1.Hide();


2、把frm2作为主窗体,启动后隐藏,显示frm1,登陆成功关闭frm1显示frm2
C# code

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());//这里
        }

------解决方案--------------------
不要在登陆form中打开Form2,登陆成功后给调用者返回一个登陆成功标志,让调用者打开Form2,
------解决方案--------------------
frm1.close(); 这句执行后,后面的语句就走不到了
------解决方案--------------------
new System.Threading.Thread((System.Threading.ThreadStart)delegate
{
Application.Run(new Form2());
}).Start();
this.Close();

------解决方案--------------------
Application.Run(new Form1()); 程序就会以为Form1为主窗体,主窗体关闭时.net会结束整个程序。
实现方法
form1.Hide();
form2.Show();
------解决方案--------------------
LZ应该这样写
this.hide();//关闭当前窗体
from2 frm2=new from2();
frm.show()//打开窗体
------解决方案--------------------
退出程序的时候就关闭了。
------解决方案--------------------
我上传过一个登陆模块,很适合初学者,你可以下来看看
http://download.csdn.net/detail/mapleadr/1447946
------解决方案--------------------
要把frm2设为子窗体,把frm1设为主窗体才可以。否则,frm1关闭,frm2一样也会关闭。
------解决方案--------------------
close是把程序关闭了。后面不能再执行了。用hide程序还在内存执行下一句代码