日期:2014-05-20  浏览次数:20871 次

关于this.Hide()的困惑——程序由登录窗口进入MDI窗口时如何写代码?
我在程序登录界面的确定按钮中添加以下代码:
private   void   btnLogin_Click(object   sender,   EventArgs   e)
{
        //this.Close();//该代码会直接退出程序
        this.Hide();//该代码能隐藏登录窗体,但是当点击MDI窗体的“X”关闭程序
                                //时并不能完全退出程序,登录窗口好像没有被卸载
        //FormMain   是程序的MDI窗体
        FormMain   frmMain   =   new   FormMain();
        frmMain.Show();//这样加载MDI窗体是不是太麻烦了??????
}

现在的问题是:1、除了this.Hide(),有没有别的方法能做到隐藏登录窗体的同时加载MDI窗体,并且点击MDI窗体的“X”关闭主窗体时能让程序完全退出?
2、由一个窗体转到另一个窗体有没有更简单的代码,比如VB中只的FormMain.Show  



------解决方案--------------------
參見
http://blog.csdn.net/tjvictor/archive/2006/12/25/1459671.aspx
------解决方案--------------------
在main函数里面写:

LoginForm f = new LoginForm();

if( f.ShowDialog() == DialogResult.OK )
{
Application.Run( new mainForm());
}

LoginForm是你的登录窗体, mainform是你的主窗体
------解决方案--------------------
1:不要在登录窗体里把本身隐藏掉而不关闭.
2:可以在程序的Main函数里通过修改Application.Run()函数来达到运行其它窗体的目的.
3:你说的跳转窗体,可以用窗体的已经用new实例化的对象的Show方法来显示窗体,VB里是可以通过类名显示窗体,但是在C#里不可以.
4:代码上可以这样来做:
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

using (frmLogin f = new frmLogin())
{
if (f.ShowDialog() == DialogResult.OK)
{
Application.Run(new Form1());
}
}
}
}