我有一个开始最小化的应用程序。
我可以将 RestoreBounds 设置为当用户恢复它时窗口将恢复的大小。
但是如何设置表单是否应该恢复到最大化或正常状态?默认为正常。我希望有类似 RestoreWindowState 的东西。
我可以以某种方式使用 API 来做到这一点吗?
我有一个开始最小化的应用程序。
我可以将 RestoreBounds 设置为当用户恢复它时窗口将恢复的大小。
但是如何设置表单是否应该恢复到最大化或正常状态?默认为正常。我希望有类似 RestoreWindowState 的东西。
我可以以某种方式使用 API 来做到这一点吗?
你不能自己添加和管理这个属性吗?
将属性添加到您的表单中。
覆盖 OnClientSizeChanged 并检查窗口状态是否已从最小化更改。
如果是这样,请将 WindowState 设置为您的属性的值。
设置一个标志,以便您只通过一次逻辑。
根据我的经验,Window.RestoreBounds将始终为您提供窗口的最终“正常”尺寸,Window.WindowState并将始终为您提供窗口的最终状态(最大、最小、正常)。无论您处于何种状态,您都可以随时保存 RestoreBounds 和 WindowState 并手动设置窗口尺寸/状态。
这就是我所做的(我知道恢复不是纯粹的,但我真的不在乎):
private class WindowStatus
{
private WindowState state;
private Rect restoreBounds;
public WindowStatus(Window window)
{
state = window.WindowState;
restoreBounds = window.RestoreBounds;
}
public void Restore(Window window)
{
window.WindowState = state;
window.Height = restoreBounds.Height;
window.Width = restoreBounds.Width;
window.Left = restoreBounds.Left;
window.Top = restoreBounds.Top;
}
}