我建了一个Windows Forms的工程,当我登录成功了,登录窗体(在login.cs的登录事件里,this.Hide())就隐藏起来了,进入了主界面。我想注销掉主界面,重新打开隐藏的登录窗体(调用this.Hide()而被隐藏起来的那个窗体,不是重新打开一个)。该如何写啊?听他们说可以用委托,但是不会用。指导下好吗?

解决方案 »

  1.   

    一向不喜欢把登陆窗体当主窗体用。在显示主界面的时候,把登陆窗体传给主界面,然后隐藏登陆窗体。
    在主界面销掉时,显示登陆窗体。
            //Form1(登陆窗口)
                Form2 form = new Form2(this);
                form.Show();
                this.Hide();    public partial class Form2 : Form
        {
            Form1 form1;
            public Form2(Form1 form)
            {
                InitializeComponent();            this.form1 = form;
                this.form1.Hide();
            }        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                form1.Show();
            }
        }
    当然,用事件去通知也行。
      

  2.   

    2楼的代码思路是很清晰,可是并没有效果啊,我关闭了form2,可是form1并没有显示出来。另外你说能用事件去通知,能否也贴出代码?
      

  3.   

    2楼正解。。我弄错了。我把你的代码粘过去,当然不行。之后添加了form2的FormClosing事件才行。。这法子不错。学习中。另外,用委托的方法怎么做呢?
      

  4.   

    主界面不用改:        public Form2()
            {
                InitializeComponent();
            }
    登陆窗口在Show主界面时,顺便订阅主界面的Closing事件:Form2 form = new Form2();
    form.FormClosing += delegate
    {
        this.Show();
    };
    form.Show();
    this.Hide();
      

  5.   

    form.FormClosing += delegate 
    这句话中的delegate是代表什么意思啊?