【问题标题】:How to close form and reopen it?如何关闭表单并重新打开它?
【发布时间】:2018-11-25 17:23:06
【问题描述】:

我允许用户更改一些设置(语言 - 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());

以及一种打开新线程的解决方案。

这些都不起作用,或者部分起作用,有一些问题,比如没有很好地关闭程序,或者其他一些问题。 是否有一些新的简单方法可以做到这一点?

或者我最好显示用户对话框消息“你想重新启动程序以显示新语言吗?”

谢谢

【问题讨论】:

  • 你可以使用Application.Restart();
  • 谢谢 Reza,太棒了,我找到了你发布的这个解决方案。有用。我可以将您的答案标记为好。我已经测试过了,它可以正常工作,它可以很好地重新启动一个应用程序,
  • Reza,您可以添加您的答案作为解决方案。
  • 请注意:在 FormClosing 事件中,您可以放置​​代码以保存对 ApplicationSettings 的更改。有两种方法可以做到这一点,其中一种方法更容易使用 myApplicationSettings.Save();包装类 MyUserSettings : ApplicationSettingsBase
  • 附带说明,您还可以在运行时更改文化。为此,请查看this postthis one。您可能会发现这些帖子很有用。

标签: c# .net winforms application-restart


【解决方案1】:

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

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();
    }
}

我希望它对你有用。

【讨论】:

    【解决方案2】:

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

    Application.Restart();
    

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多