在C#中关闭表单

时间:2012-07-17 17:51:57

标签: c# windows forms

  

可能重复:
  C# Working with mutliple Forms

我在C#中有两种形式。我想关闭一个表格并显示其他表格。代码如下:

AMBR A = new AMBR();
this.Close();
A.Show();  

目前的表格是我的主要表格。它显示了我的第二种形式,但是两者都关闭,我的程序停止了。我知道另一种标准方法是隐藏表单,但我的主表单只有一个徽标和加载栏。它不需要与用户进行任何交互。当我隐藏它时,在第二个表单关闭后,程序保持打开状态(如任务管理器中所示)并继续占用资源。我希望主窗体关闭,第二种形式保持打开状态。

6 个答案:

答案 0 :(得分:3)

打开“Program.cs”。修改代码如下,其中SplashFrm是在Application.Run调用中创建的当前Form

static class Program
{
    private static EventHandler idleTemp;
    private static SplashFrm splash;


    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        splash = new SplashFrm();
        splash.Show();
        idleTemp = new EventHandler(Application_Idle);
        Application.Idle += idleTemp;

        Application.Run(new AMBR());
    }

    static void Application_Idle(object sender, EventArgs e)
    {
        splash.Close();
        Application.Idle -= idleTemp;
        idleTemp = null;
        splash = null;
    }
}

然后,在成功加载AMBR后,请致电Application.RaiseIdle(null);,您的启动将会关闭并清理。

答案 1 :(得分:2)

否则您无法关闭主窗体并保持打开第二个窗体。但你可以隐藏它。

this.Hide();

修改

另一个解决方案可能是使用第二种形式作为主要形式,并在打开第二种形式(启动形式)时使其不可见。

所以:

this.Visible = false;

//Show the second form

答案 2 :(得分:2)

Application.Run MSDN页面上有一个示例,解释了如何从ApplicationContext继承只在最后一个表单关闭时才能使程序结束,而不仅仅是主表单是闭合。

答案 3 :(得分:1)

你试过this.Hide();而不是this.Close();

答案 4 :(得分:0)

问题可能是因为您的main方法正在创建第一个表单并等待它关闭。当它关闭主要收益并到达结束时导致应用程序关闭。

要么使main方法创建第二个表单,要么不要关闭第一个表单,只是隐藏它+隐藏任务栏图标。

答案 5 :(得分:0)

听起来你有错误的主要形式。您应该将您打开的另一个表单更改为主表单,并且应该通过另一个表单打开当前主表单的表单。当您的当前主表单关闭时,请将其Show作为新的主表单。在程序启动时隐藏新的主表单。