如何使我的内部代码像使用Application.Restart()一样工作,但实际上不需要程序关闭和重新打开?
根据您的应用程序设计,它可能只需要启动一个新的主窗体实例并关闭任何现有的窗体实例。除了表单变量之外的任何应用程序状态也需要重置。就像您正在寻找的那样,没有一个神奇的“重置”按钮可以重置应用程序。
一种方法是在Program.cs
中添加一个循环来保持应用程序运行,如果窗体在“重置”后关闭:
static class Program
{
public static bool KeepRunning { get; set; }
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
KeepRunning = true;
while(KeepRunning)
{
KeepRunning = false;
Application.Run(new Form1());
}
}
}
在您的表单(或工具栏等)中将KeepRunning
变量设置为true
:
private void btnClose_Click(object sender, EventArgs e)
{
// close the form and let the app die
this.Close();
}
private void btnReset_Click(object sender, EventArgs e)
{
// close the form but keep the app running
Program.KeepRunning = true;
this.Close();
}
Application.Restart()
? - D Stanley