如下代码, 运行IF后 根据结果,显示哪个窗体, 但是不能隐藏自己.
我从另一个窗体过来时候,也是按钮单击,隐藏自己,打开别的窗体就可以.还有 这里应该完全卸载掉 FORM3 好 还是隐藏了就可以了? 卸载代码如何写?        private void Form3_Load(object sender, EventArgs e)
        {
            if (Convert.ToString(MessageBox.Show("包含警告图标和确定、取消按钮的消息框", "消息框标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))=="OK")
            {
                Form2 frm2 = new Form2();
                frm2.Show();
                this.Hide();
            }
            else
            {
                Form1 frm1 = new Form1();
                frm1.Show();
                this.Hide();
            }
        }

解决方案 »

  1.   

    lz这里有几个问题:
    1、打开新窗体,隐藏当前窗体,不能在Load事件,因为framework在load事件之后才把form.Visible设为true的,所以这里的this.Hide没起作用,建议放在VisiableChanged事件里。2、if语句有问题if (MessageBox.Show("包含警告图标和确定、取消按钮的消息框", "消息框标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation)==DialogResult.OK)
    {
      //...
    3、显示新窗体,隐藏老窗体,建议用这样的:Form2 frm2 = new Form2();
    frm2.ShowDialog();
    this.Hide();
      

  2.   

    重载一个构造函数class Form1
    {
      public Form1(Form3 f3)
      {
        f3.close();
      }
    }
    class Form3
    {
    private void Form3_Load(object sender, EventArgs e)
            {
                if (Convert.ToString(MessageBox.Show("包含警告图标和确定、取消按钮的消息框", "消息框标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))=="OK")
                {
                    Form2 frm2 = new Form2(this);
                    frm2.Show();
                    //this.Hide();
                }
                else
                {
                    Form1 frm1 = new Form1(this);
                    frm1.Show();
                    //this.Hide();
                }
            }}
      

  3.   

     private void Form3_Load(object sender, EventArgs e)
            {
     
            }
    hide好象是不能放在Form3_Load里面....,加个button就可以
      

  4.   

    Sorry,第三条写错了,应该这样:Form2 frm2 = new Form2();
    this.Hide();
    frm2.ShowDialog();
    this.Show();
      

  5.   

    如果不想隐藏自己,去掉 this.Hide()就可以了就你目前写得代码,Form3是不能卸载的,否则frm1或frm2也会被回收
      

  6.   


    Form2 frm2 = new Form2();
    this.Hide();                
    frm2.ShowDialog();
    this.Show();谢谢 lalac  的答复哦, 这里的 this.Hide(); this.Show(); 这样是什么意思呢? 也谢谢 ojekleen,  你这句要放在哪里呢? 要防在FORM1  LOAD的时候运行吗?  class Form1
    {
      public Form1(Form3 f3)
      {
        f3.close();
      }
    }
      

  7.   

    form3 只是中间一个过程,没有任何按钮什么的, 该如何关闭自己呢?
      

  8.   

    我没有编译器,
    class Form1
    {
      public Form1(Form3 f3)
      {
        f3.close();
      }
    }
    这个不是有类吗class Form1
      

  9.   

    SORRY 我太笨了  呵呵
    我是想知道 我在哪里怎么来运行这个类?
    在什么情况下执行放在 FORM3 load 里执行吗? 不然类不会自己执行哦
      

  10.   

    Form2 frm2 = new Form2();
    this.Hide();
    frm2.ShowDialog();
    this.Show();
    使用 frm2.ShowDialog();  后 打开了新窗体 FORM3没了, 关闭frm2后 FORM3 又出来了如何真正卸载 FORM3 ?