Build a Master-Detail Windows Form在 MSDN 里面找找 或许有用哦

解决方案 »

  1.   

    解决办法很多啊
    比如说MainForm
    Application.Run(new MainForm());
    MainForm把自己Hide了
    F1,F2,随便切换
    退出时MainForm.Close();或者
    Application.Run(new F1());
    F1不关闭,只是Hide
    退出时F1.Close();不要Copy Application.Run 这个东西
    它运行起来的窗口是主窗口,关掉之后就继续执行Main函数里后面的代码,程序就退出了
    Application.Run的窗口一定不能关,除非想退出程序的时候
      

  2.   

    我试了根本就不用Application.Run(new Form1());
    Application.Run(new Form2());只要用楼主的
    private void button1_Click(object sender, System.EventArgs e)
    {
    Form2 AFormInstance = new Form2();
    AFormInstance.Show();
             Close();
    }private void button1_Click(object sender, System.EventArgs e)
    {
    Form1 AFormInstance = new Form1();
    AFormInstance.Show();
             Close();
    }就可以无限循环下去
      

  3.   

    你需要增加一个隐藏的窗体, 在这个窗体里去Show Form1.
      

  4.   

    这样  MainForm
           Application.Run(new MainForm());
           MainForm把自己Hide
             F1,F2,随便切换
    退出时MainForm.Close()。
      

  5.   

    你需要增加一个隐藏的窗体, 在这个窗体里去Show Form1
    ————————————————————应该是这样的,我试的时候那个Form也是从原来的一个窗体show出来的
      

  6.   

    试了一下可以的在原来窗体的load事件里面FormA t=new Form1();
    t.Show();在Paint事件里面Hide();然后在Form1和Form2里面分别
    private void button1_Click(object sender, System.EventArgs e)
    {
    Form2 AFormInstance = new Form2();
    AFormInstance.Show();
             Close();
    }private void button1_Click(object sender, System.EventArgs e)
    {
    Form1 AFormInstance = new Form1();
    AFormInstance.Show();
             Close();
    }
    就可以了
      

  7.   

    修正一下,Hide();写在Activated事件里面比较好一点,写在Paint里还是会闪一下
      

  8.   

    选中主窗体,在属性栏的上面不是有个小闪电的图标么,点一下会看到事件列表,里面选中Activated事件双击就可以了
      

  9.   

    出错了,
    1、找不到类型或命名名称“FormA”(是否缺少using指令或程序集应用?)
    2、。"t"(是否缺少using指令或程序集引用?)
      

  10.   

    ……
    是这句吧?FormA t=new Form1();
    t.Show();很明显应该是Form1 t=new Form1();
    t.Show();……
      

  11.   

    Both "Application.Run(new Form1());" and "Application.Run(new Form2());" won't provide you the instance of Form1 and Form2. So you can't handle them.in class Form1:
        public static Form1 formInstance = new Form1()in class Form2:
        public static Form2 formInstance = new Form2()in main:
        Application.Run(Form1.formInstance);
        Application.Run(Form2.formInstance);Any manipulation should handle "Form1.formInstance" and "Form2.formInstance".
      

  12.   

    Form1是主窗体,另外一个窗体是Form2
    Form2里
    1 添加private Form1 mF_Form ; 
    2 修改Form2的构造函数
    public Form2(Form1 myForm )
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    this.mF_Form  = myForm ;
    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    }
    3 显示按钮里添加
    this.Hide();
    this.mF_Form.ShowDialog();
    4 关闭按钮
    Application.Exit();
    Form1里
    1 private Form2 m_Form2 ;
    2 显示按钮
    this.m_Form2 = new Form2( this );
    this.Hide();
    this.m_Form2.ShowDialog();
    3 关闭按钮
    Application.Exit(); 
      

  13.   

    未处理的“System.ComponentModel.Win32Exception”类型的异常出现在 system.windows.forms.dll 中。其他信息: 创建窗口句柄时出错。
      

  14.   

    ……
    我自己试过没问题的楼主估计没弄清楚我的意思,我那样的写法是一共有3个窗体,主窗体隐藏,其他2个窗体互相show来show去我头也晕了,准备下班闪人,呵呵
      

  15.   

    搞定了,按你的原要求,不过好像没什么用,呵呵,看看玩吧。
    static bool bclose=false;
    static void Main() 
    {
        aaa:Application.Run(new Form1());
    Application.Run(new Form2());
    System.Console.WriteLine(bclose);
    if(!bclose)
    {goto aaa;}
    }
    fm1的
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.Close();

    }
    private void button2_Click(object sender, System.EventArgs e)
    {
    Test.Form1.bclose=true;
             this.Close();
    }
    fm2的
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.Close();

    }
    private void button2_Click(object sender, System.EventArgs e)
    {
    Test.Form1.bclose=true;
             this.Close();
    }
      

  16.   

    最好的办法就是一个主窗体多个子窗体,不关主窗体用Hide,子窗体间切换。上面的代码仅仅是玩玩。
      

  17.   

    既然是新手就给你个比较标准的用法,呵呵
    FORM1
    static void Main() 
    {
    Application.Run(new Form1());
    }private void button1_Click(object sender, System.EventArgs e)
    {
    Form2 fm2=new Form2();
    fm2.Owner=this;
    fm2.Show();
    this.Hide();
    }private void button2_Click(object sender, System.EventArgs e)
    {
    Application.Exit();
    }
    FORM2的
    private void button1_Click(object sender, System.EventArgs e)
    {
    Form1 fm1=(Form1)this.Owner;
    fm1.Show();
    this.Close();
    }
      

  18.   

    form1代码:/// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    public static void Main() 
    {
    Form1 frm1=new Form1();
    frm1.Show();
    Application.Run();   
    }/// <summary>
    /// 关闭Form1和显示Form2
    /// </summary>
    private void button1_Click(object sender, System.EventArgs e)
    {    
    Form2 frm2=new Form2();
    frm2.Show();
             this.Close();
    }
    /// <summary>
    /// 关闭全部窗口
    /// </summary>
    private void button2_Click(object sender, System.EventArgs e)
    {
    Application.Exit();
    }--------------------------
    Form2 代码:/// <summary>
    /// 关闭Form2和显示Form1
    /// </summary>
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.Close();
    Form1 frm1=new Form1();
    frm1.Show();
    }
    /// <summary>
    /// 关闭全部窗口
    /// </summary>
    private void button2_Click(object sender, System.EventArgs e)
    {
    Application.Exit();
    }
      

  19.   

    在程序中最好不要用GOTO或尽量少用GOTO语句!!!