sas*_*alm 6 c# winforms window-position
如何在此之前区分当前最小化窗口是否最大化,而不是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?
}
Run Code Online (Sandbox Code Playgroud)
我想使用应用程序设置使我的窗口的位置和状态持久,我正在关注/sf/answers/131342851/,但如果窗口在关闭时被最小化,我不想要它在下一个应用程序启动时启动最小化(这是目前的答案).
我想要的是窗口如果在最小化时已经最大化则开始最大化,并且如果窗口在最小化时处于正常状态则开始处于正常状态.
WinForms 不公开任何WindowStateChanged事件,因此您必须自己跟踪它。WM_SYSCOMMAND当表单状态发生变化时,Windows 将发送:
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
_isMaximized = WindowState == FormWindowState.Maximized;
}
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
int wparam = m.WParam.ToInt32() & 0xfff0;
if (wparam == SC_MAXIMIZE)
_isMaximized = true;
else if (wparam == SC_RESTORE)
_isMaximized = false;
}
base.WndProc(ref m);
}
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MAXIMIZE = 0xf030;
private const int SC_RESTORE = 0xf120;
private bool _isMaximized;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1549 次 |
| 最近记录: |