button_click事件中
form2 f = new form2();
f.show();

解决方案 »

  1.   

    楼上所说的情况下form2成了form1的子窗体,这样并不方便可以写一个类,将main方法置其中,同时窗体均加入一个event,由main所在的类控制窗口的状态,如下例using System;
    using System.Windows.Forms;
    namespace MyHex.FormSwitch
    { public delegate void InvokeForm();   //各form事件对应的delegate定义 public class AppEntry
    { private Login login;    //第一个form
    private MainWin mainwin; //第二个
    /// <summary>
    /// application entry here;
    /// </summary>
    static void Main()
    {
    AppEntry ae=new AppEntry();
                               Application.Run();
    } public AppEntry()
    {
    login=new Login();
    login.Show();
    login.LaunchMainWin+=new InvokeForm(this.ShowMainWin);
                                //Login窗体定义了一个launchMainWin事件
    }
    private void ShowMainWin()
    {
    mainwin=new MainWin();
    mainwin.Show();
    login.Hide();
    login=null;
    mainwin.LogOff+=new InvokeForm(ShowLogin);
                                //MainWin窗体定义了一个LogOff事件
    }
    private void ShowLogin()
    {
    login=new Login();
    login.Show();
    mainwin.Hide();
    mainwin=null;
    login.LaunchMainWin+=new InvokeForm(this.ShowMainWin);
    }
    }
    }
    这样可以方便的切换两个窗体,
    希望这段代码能给你些帮助,谢谢
      

  2.   

    button1_Click(object sender,EventArgs e)
    {
        form2 frm=new form2();
        frm.showdialog();//frm.show();
    }
      

  3.   

    form1:
      private void button1_click(Object sender, EventArgs e)
      {
            form2 frm=new form2();
            frm.ShowDialog();
            frm.DisPose();
       }