如何关闭表格并重新打开它?

How to close form and reopen it?

我允许用户更改一些设置(语言 - UI 文化)并以新语言显示当前表单,我需要关闭表单并重新打开它。

我正在使用 Windows 表单。在 Program.cs 中,首先我显示启动画面,然后显示登录表单,然后我 运行 主表单与

Application.Run(new frmMain());.

我尝试了几种提供的解决方案,其中包括:

    Controls.Clear(); 
    InitializeComponent();

我也试过了

    var form = new frmMain();
    form.Show();
    this.Hide();

还有

    this.Close();// note I tried before and after. 
    var form = new frmMain();
    form.Show();

我也试过表单关闭事件

Application.Run(new frmMain());

和一个打开新线程的解决方案。

None 有效,或者部分有效,但存在一些问题,例如无法很好地关闭程序或其他一些问题。 有没有一些新的简单方法可以做到这一点?

或者我最好显示用户对话框消息 "Do you want to restart program to show new language?"

谢谢

要重新启动您的应用程序,您可以使用 Application.Restart() 方法。它关闭应用程序并立即启动一个新实例:

Application.Restart();

您可以在这里创建一个新的全局表单:

public partial class Form1 : Form
{
    frmMain form = new frmMain();     // add your form here
    public Form1()
    {
       //something...
    }

    //some another functions ...

    private void btnOpenYourForm_Click(object sender, EventArgs e)
    {
        form = new frmMain();     // open your form here
        form.Show();
    }
}

希望对你有用。