想在主框架窗体里面 做一个 注销功能  主窗体 from1    点击from1中一个注销按钮,弹出from2(ShowDialog()) 同时关闭from1  
请教高手这个问题怎么解决 谢谢了

解决方案 »

  1.   

    showDialog()的话,应该很难关闭form1吧?
    用show()来打开form2的话比较容易实现。
      

  2.   

    我只会用Show的方法来做from2 f2=new form2();
    f2.Show();
    this.close();
    希望高手说下用ShowDialog()如何实现。
      

  3.   

    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    Form2 o = new Form2();
    o.ShowDialog();
    }public partial class Form1 : Form
    {
     public Form1()
    {
    InitializeComponent();
    }private void button1_Click(object sender, EventArgs e)
    {
    this.Close();
    this.Dispose();
    }
    }看错题目,不好意思
      

  4.   

    from2 f2=new form2();
    f2.Show();
    this.close();
    上面的朋友说的这种方法   连 from2也一起关闭了呀  我的意思是 from2不关闭  只关闭from1
      

  5.   

    噢,对不起,我太傻了。
    如果你用的是vs2005,可以这样做 
    Application.Run(new form1());
    form2 f2=new form2();
    f2.login.ShowDialog();
    Application.Exit();
    其他版本的话,我就不清楚了
      

  6.   

    还是不可以  我再说的详细点吧   Application.Run(new login()); 这是我的登陆窗体   现在 登陆之后 到了Main主窗体 现在我想 在main里点击一个按钮 弹出login(就是重新登录),弹出的同时 关闭main  谢谢
      

  7.   

    以前在网上看到过这样的情况..某个牛人给了牛办法,关任意子窗体都可以实现的.
    具体上是在Main函数上动刀的..如下:
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new Form1());
                temForm = new Form1();
                while (temForm != null)
                {
                    Application.Run(temForm);
                    int nLayer = GC.GetGeneration(temForm);
                    temForm = null;
                    GC.Collect(nLayer);
                    temForm = newForm;
                    newForm = null;
                }
            }
            private static Form temForm;
            public static Form newForm;
    不知道你的具体情况,我假设在Form1窗体上有个Button1.给它的事件加以下代码:private void button1_Click(object sender, EventArgs e)
            {
                Program.newForm = new Form2();
                this.Close();
            }
    然后运行,出现Form1,点击其上的Button1,弹出Form2,Form1关闭.这是你要的功能吧...
      

  8.   


    既然是要弹出Dialog效果,那为什么需要关闭Form1呢??
    Form2 f2 = new Form2();
    f2.show();
    this.close();
    应该可以实现了吧
      

  9.   

    Form1如果是主窗体是不能关闭的。把它隐藏掉就可以了。
      

  10.   

    想在主框架窗体里面 做一个 注销功能  主窗体 from1    点击from1中一个注销按钮,弹出from2(ShowDialog()) 同时关闭from1  在form1类中定义个静态的bool型全局变量public static bool flag=false;
    在注销按钮的单击事件中写如下代码:
    flag=true;
    this.close();
    -------------MAIN方法中代码-----------------         static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
               Form1 f1=new Form1();
               f1.ShowDialog();
               if(Form1.flag)
               {
                  Application.Run(new Form2());
               }
            }
    ---------------------------------------------
    也就是说在form1中建立一个标志变量,当窗体要关闭的时候改变变量值,然后在主方法中判断后进行处理
                
      

  11.   

    告诉你一个方法试试,Application.Restart();
      

  12.   

    [Quote=引用 4 楼 Hassle 的回复:]
    static void Main() 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
    Form2 o = new Form2(); 
    o.ShowDialog(); 
    } public partial class Form1 : Form 

    public Form1() 

    InitializeComponent(); 
    } private void button1_Click(object sender, EventArgs e) 

    this.Close(); 
    this.Dispose(); 


    这个好像可以达到楼主的要求啊!!!
      

  13.   

    就用hide和show不能用application.exit()
      

  14.   

    FORM1是主窗口,如果能关闭程序就退出了,如果你是要作注销的功能而且用ShowDialog()打开登录窗口,主窗口没有必要关闭
      

  15.   

    是楼主的问题有问题,关闭Form1?Form1是主窗体怎么能关闭?关闭就相当于推出程序,所以你怎么也实现不了,只能隐藏Hide();
      

  16.   

    FORM1是主窗体。。不能关闭。。可以隐藏
    Form2 frm = new Form2();
    frm.show();
    this.close();
      

  17.   

    o ..发错了  Form2 frm = new Form2();
    frm.show();
    this.hide();