首页 > 解决方案 > 在特定条件下停止执行 FormClosing 事件?

问题描述

我制作了可以切换语言的多语言 c# 应用程序

  1. 当用户更改语言时,应用程序必须重新启动才能使应用程序更改语言

现在我有一个问题和一个问题

  1. 是否可以在不重新启动应用程序的情况下更改语言?

  2. Application.Restart();执行时出现问题,Formclosing也引发了如下所示的事件,因此应用程序将不会重新启动,并且会因退出消息而promet并关闭,如果Yes并且将使用新语言启动另一个应用程序副本而不现在关闭旧语言..是否存在Formclosing仅在这种情况下未执行的事件?或者更好地像我上面提到的广告点 1 那样离开。

    private void F0100_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult result;
    
        result = MessageBox.Show("Are sure you want to exit?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading);
        if (result == DialogResult.Yes)
        {
            Environment.Exit(1);
        }
        else
        { e.Cancel = true; }
    }
    

标签: c#.net-4.0

解决方案


如果您的问题只是为了避免在执行对 Application.Restart 的调用时让用户停止关闭,那么您需要做的就是查看传递给您的 Form_Closing 事件处理程序的 CloseReason

private void F0100_FormClosing(object sender, FormClosingEventArgs e)
{
    // Do not prompt the user if we have called Application.Restart
    if(e.CloseReason != CloseReason.ApplicationExitCall)
    {
        DialogResult result;
        ....
    }
}

推荐阅读