c#.NET 6.0:WindowState,如何判断窗体在最小化之前是否已最大化



虽然我使用的是C#.NET 6.0,但这可能也与其他框架有关。

以Windows窗体应用程序为例,该应用程序具有可以最小化和最大化的可调整大小的窗体。用户在最大化窗体后将其最小化。当用户从任务栏恢复窗口时,窗体将返回到最大化状态。但是,如果我需要以编程方式取消窗体的最小化,我需要使用WindowState属性,但如果我使用Normal,它会将窗体更改回常规大小。如果我使用Maximized,它将更改为最大化,如果窗体以前是正常的。如何轻松确定最小化的表单以前是否处于最大化状态?我目前正在使用Resize事件并在该事件中读取WindowState来记录窗口的状态。但这是一个相当混乱的解决方案,有没有一种不那么油腻的方法可以做到这一点?

bool isMaximized = false;
private void Form_Resize(object? sender, EventArgs e)
{
switch (WindowState)
{
case FormWindowState.Normal:
isMaximized = false;
break;
case FormWindowState.Maximized:
isMaximized = true;
break;
}
}
private void ShowForm()
{
if (WindowState == FormWindowState.Minimized)
{
WindowState = isMaximized ? FormWindowState.Maximized : FormWindowState.Normal;
}
}

我认为没有,但我确实想指出,与存储FormWindowState:相比,您的代码似乎很冗长

private FormWindowState _prev;
private void Form_Resize(object? sender, EventArgs e)
{
if(WindowState != FormWindowState.Minimized) _prev = WindowState;
}
private void Restore()
{
WindowState = _prev;
}

最新更新