我在第一个窗口中Show了第二个窗口frm2=new Frm2();
frm2.Show();但我这时无法关掉第一个窗口,如果用
frm1.Close()或frm1.Dispose();
那则把刚打开的frm2也关掉了。请问各位大侠怎么在一个窗口中打开另一个窗口并把本窗口关掉。比如说登录界面,登录成功后要显示主界面,而且要关掉登陆界面。
谢谢大家。

解决方案 »

  1.   

    可以建立一个模块!在模块中写:
    Module Module1
        Sub main()
            Dim newform As New Form1()
            newform.ShowDialog()
            Dim frm2 As New form2()
            frm2.showdialog()
        End Sub
    End Module
      

  2.   

    this.Hide();frm2=new Frm2();
    frm2.ShowDialog();this.Close();
      

  3.   

    如果你的程序的主窗体不是frm1的话,可以的.不然的话就不行.在frm1中
    frm2 f2=new Frm2();
    f2.f1=this;
    frm2.Show();在frm2中
    public frm1 f1;
    private void frm2_Load(object sender, EventArgs e)
            {
                this.f1.close();
            }
      

  4.   

    程序的主窗体是frm1的话,只能隐藏。
      

  5.   

    写登陆窗口的,登陆的窗口都不是主窗口,登陆后的窗口才是主窗口!
    做法可以这样,成功登陆后的窗口是主窗口,主窗口一开始是Hide的,show登陆窗口!验证成功,close登陆窗口再show主窗口!不一定要第一个显示的就是主窗口!
      

  6.   

    [STAThread]
    static void Main() 
    {
    DjCsClass.MyLogin=new frmLogin();
    DjCsClass.MyLogin.ShowDialog();
    }
      

  7.   

    [STAThread]
    static void Main() 
    {
        frmLogin MyLogin=new frmLogin();
        MyLogin.ShowDialog();    if (登陆成功)
        {
             Application.Run(new frmMain());
        }
    }
      

  8.   

    如果登陆界面为主函数窗体:
    this.visible=false;
    就智能隐藏,不能关闭.如果要关闭,把
    [STAThread]
    static void Main()
    放到你要调用的主窗体中,在主窗体运行的时候
    show登陆窗体
    登陆成功后再在登陆窗体中销毁登陆窗体
      

  9.   

    [STAThread]
    static void Main() 
    {
        frmLogin MyLogin=new frmLogin();
        MyLogin.ShowDialog();    if (登陆成功)
        {
             Application.Run(new frmMain());
        }
    }
      

  10.   

    我是开发WEB的,这个不懂,学习,顶!
      

  11.   

    this.Hide();
    Form frm=new Form2;
    frm.ShowDialog();
    this.Close();
      

  12.   

    Flashcom(虫虫) 是正解。主窗口的秩序不是你想像的那样。
      

  13.   

    楼主要明白一点,就是按照你的方法,那么From2的对象也是存在于Form1中的,From1关闭后,From1种的所有成员都会从内存中清除掉(包括你的Form2),所以只能隐藏或者先启动Form2。
      

  14.   


    Form1中
    form2 = new Form2;
    form2.Owner = form1;
    Form2中
    (Form1)form2.Owner.close;如果要不影响程序,那么Form1应该不是第一个建立的Form才行。
      

  15.   

    huangwenfeng(软件虫) ( ) 信誉:99  2005-5-19 11:34:35  得分: 0  
     
     
       
    [STAThread]
    static void Main() 
    {
        frmLogin MyLogin=new frmLogin();
        MyLogin.ShowDialog();    if (登陆成功)
        {
            Application.Run(new frmMain());//这里显示主窗口
        }
    }  
     
      

  16.   

    在frm1中
    frm2 f2=new Frm2();
    f2.f1=this;
    frm2.Show();在frm2中
    public frm1 f1;
    private void frm2_Load(object sender, EventArgs e)
            {
                this.f1.close();
            }