我在C#中有两种形式。我想关闭一个表格并显示其他表格。代码如下:
AMBR A = new AMBR();
this.Close();
A.Show();
目前的表格是我的主要表格。它显示了我的第二种形式,但是两者都关闭,我的程序停止了。我知道另一种标准方法是隐藏表单,但我的主表单只有一个徽标和加载栏。它不需要与用户进行任何交互。当我隐藏它时,在第二个表单关闭后,程序保持打开状态(如任务管理器中所示)并继续占用资源。我希望主窗体关闭,第二种形式保持打开状态。
答案 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
作为新的主表单。在程序启动时隐藏新的主表单。