如何区分当前最小化的窗口在此之前是否已最大化,而不是C#/WinForms中的正常状态?
if (WindowState == FormWindowState.Minimized)
{
Properties.Settings.Default.Location = RestoreBounds.Location;
Properties.Settings.Default.Size = RestoreBounds.Size;
Properties.Settings.Default.IsMaximized = ...; // How do I know if the window would be restored to maximized?
}
我想使用应用程序设置使窗口的位置和状态保持不变,我遵循https://stackoverflow.com/a/1876326/492336,但如果窗口在关闭时最小化,我不希望它在下一次应用程序启动时最小化(这是目前的答案)。
我想要的是,如果窗口在最小化时已经最大化,则它开始最大化;如果窗口在最小化时处于正常状态,则它开始处于正常状态。
3条答案
按热度按时间xxls0lw81#
WinForms不公开任何
WindowStateChanged
事件,您必须自己跟踪它。当窗体状态更改时,Windows将发送WM_SYSCOMMAND
:8wtpewkr2#
可以在最小化窗口上使用
GetWindowPlacement
(一个本机Win32 API函数),并从WindowPlacement结构读回Flags成员。如果设置了位0x02,则窗口在最小化之前已最大化。rmbxnbpk3#