在特定条件下停止执行 FormClosing 事件?

Stop the execution of FormClosing event at specific condition?

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

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

现在我一问一题

  1. 有没有不用重启应用程序就可以更改语言的方法?

  2. Application.Restart(); 执行 Formclosing 事件时出现问题,如下所示,结果应用程序将不会重新启动 如果 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; }
    }
    

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

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;
        ....
    }
}