Form1----登录窗体
Form2----主窗体
目的:用户通过登录窗体检查后进入主窗体,然后就关闭Form1。
但是现在关闭Form1后,结果没有任何窗体出现//---------------------------Form1.cs---------------------
private void button1_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
this.Close();
}
static void Main() 
{
Application.Run(new Form1());
}后来认为可能是Application.Run()中的窗体不能关闭,于是改进代码,首先运行Form2://-------------------Form1.cs-------------------
static void Main() 
{
Application.Run(new Form2());
}private Form2 _f2; public Form1(Form2 f2)
{
InitializeComponent();
this._f2 = f2;
} private void button1_Click(object sender, System.EventArgs e)
{
this._f2.Show();
this.Close();
} private void Form1_Load(object sender, System.EventArgs e)
{
this._f2.Hide();
}//------------------------Form2.cs----------------------------
private void Form2_Load(object sender, System.EventArgs e)
{
Form1 f1 = new Form1(this);
f1.Show();
}
运行结果是两个窗体都显示出来了,郁闷,不知道该怎么处理好?

解决方案 »

  1.   

    参考http://blog.csdn.net/knight94/archive/2006/04/06/652394.aspx
      

  2.   

    先生成Form2
    在Form2的初始化中调用Form1
    。。
      

  3.   

    ls的,我在加载事件里面生成Form1的实例应该没有问题吧?
      

  4.   

    修改一下你的Main()函数,把它改成下面这种形式应该就可以实现你想要的功能.
    static void Main()
    {   
        Form1 lg = new Form1();
        lg.ShowDialog();
       if(在这里判断你的登录名和密码是否正确)//在这里判断一下你的登录名和密码是否正确,正确的话就把Form1窗体关闭,不正确的话就继续显示Form1窗体,让用户重新输入.
        {
           lg.Close();
           Application.Run(new MainForm());
         }
      }
      

  5.   

    Form1窗体:this.Hide();
    Form2 mFrm = new Form2();
    mFrm.ShowDialog();
      

  6.   

    fht(123)
    使用this.hide后,f1是可以隐藏,但是最后f2关闭之后,f1依然存在,该进程仍然在运行
      

  7.   

    //-------------------Form1.cs-------------------
    static void Main() 
    {
         Application.Run(new Form2());
    }//------------------Form2.cs--------------------
    void Form2_load()
    Form1 f1 = new Form1();
    f1.ShowDialog();
    if (登录成功)
    {
        //Do Something here....
    }
    else //登录失败
    {
        this.Close();
    }软件(源码)详情 http://future-tech.czm.cn
    ###############################################
    提供C#源码、控件、解决方案以及各种系统维护服务。
    并承接软件开发、毕业设计等客制化软件专案及定单。
    ###############################################
      

  8.   

    错了,第一行应该是:
    //-------------------Program.cs----------------软件(源码)详情 http://future-tech.czm.cn
    ###############################################
    提供C#源码、控件、解决方案以及各种系统维护服务。
    并承接软件开发、毕业设计等客制化软件专案及定单。
    ###############################################
      

  9.   

    搞定了,散分,谢谢各位!
                       static void Main() 
    {
    Application.Run(new Form1());
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.Hide();
    Form2 f2 = new Form2();
    f2.ShowDialog();
    } private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    Application.DoEvents();
    Application.Exit();
    }