我有一个开始最小化的应用程序。
我可以将 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;
}
}