我创建了一个窗口,只有当你在它外面点击时才能关闭它。代码在这里工作得很好:

 protected override void OnDeactivated(EventArgs e)
 {
     try
     {
         base.OnDeactivated(e);
         Close();
     }
     catch (Exception ex) { Console.WriteLine(ex.ToString()); }
 }

唯一的问题出现在窗口关闭时,例如,使用 alt + f4 ,特别是,会出现以下异常:



我怎样才能确保避免它?实际上,我已经使用 Try/Catch 管理了异常。

最佳答案

在引发窗口的 Deactivated 事件之前,会发生 Closing 事件(但显然,只有当用户有意关闭窗口时,例如通过按下 Alt+F4 )。这意味着您可以在窗口的 Closing 事件处理程序中设置一个标志,指示窗口当前正在关闭,这意味着不需要在 Close() 事件处理程序中调用 Deactivated 方法:

    private bool _isClosing;

    protected override void OnClosing(CancelEventArgs e)
    {
        base.OnClosing(e);
        _isClosing = true;
    }

    protected override void OnDeactivated(EventArgs e)
    {
        base.OnDeactivated(e);
        if (!_isClosing)
            Close();
    }

关于c# - System.InvalidOperationException : Can not set Visibility,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32421731/

10-12 17:52