系统.InvalidOperationException:不能设置可见性
本文关键字:设置 可见性 不能 InvalidOperationException 系统 | 更新日期: 2023-09-27 18:11:36
我创建了一个只有当你在它外面点击时才能关闭的窗口。这里的代码运行得很好:
protected override void OnDeactivated(EventArgs e)
{
try
{
base.OnDeactivated(e);
Close();
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
}
唯一的问题出现在窗口关闭时,例如,对于alt + f4
,特别地,使用这个异常:
你不能设置可见度为可见或调用Show, ShowDialog, Close windowstophelper。EnsureHandle或当您关闭窗口时。
我如何确保避免它?实际上,我已经管理的异常与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();
}