0

我有一个开始最小化的应用程序。

我可以将 RestoreBounds 设置为当用户恢复它时窗口将恢复的大小。

但是如何设置表单是否应该恢复到最大化或正常状态?默认为正常。我希望有类似 RestoreWindowState 的东西。

我可以以某种方式使用 API 来做到这一点吗?

4

2 回答 2

0

你不能自己添加和管理这个属性吗?

将属性添加到您的表单中。
覆盖 OnClientSizeChanged 并检查窗口状态是否已从最小化更改。
如果是这样,请将 WindowState 设置为您的属性的值。
设置一个标志,以便您只通过一次逻辑。

于 2010-07-22T13:47:37.810 回答
0

根据我的经验,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;                      
    }

}
于 2019-05-03T16:17:58.093 回答