从最小化恢复WindowState
是否有一个简单的方法来恢复最小化的forms到其以前的状态,正常或最大化? 我期待与单击任务栏(或右键单击并select恢复)相同的function。
到目前为止,我有这个,但是如果这个forms以前是最大化的,它仍然会作为一个正常的窗口回来。
if (docView.WindowState == FormWindowState.Minimized) docView.WindowState = FormWindowState.Normal;
我必须在forms上处理状态变化才能记住以前的状态吗?
我使用下面的扩展方法:
using System.Runtime.InteropServices; namespace System.Windows.Forms { public static class Extensions { [DllImport( "user32.dll" )] private static extern int ShowWindow( IntPtr hWnd, uint Msg ); private const uint SW_RESTORE = 0x09; public static void Restore( this Form form ) { if (form.WindowState == FormWindowState.Minimized) { ShowWindow(form.Handle, SW_RESTORE); } } } }
然后在我的代码中调用form.Restore()
。
将表单恢复到正常状态的最简单方法是:
if (MyForm.WindowState == FormWindowState.Minimized) { MyForm.WindowState = FormWindowState.Normal; }
你可以模拟点击任务栏button,如下所示:
SendMessage(docView.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
对我来说,上面的代码不起作用。
但最后我find了工作代码。 这里是:
CxImports.ManagedWindowPlacement placement = new CxImports.ManagedWindowPlacement(); CxImports.GetWindowPlacement(Convert.ToUInt32(Handle.ToInt64()), placement); if (placement.flags == CxImports.WPF_RESTORETOMAXIMIZED) WindowState = FormWindowState.Maximized; else WindowState = FormWindowState.Normal;
我猜,你可以通过简单的谷歌searchfind所有需要的“导入”function。
上面的代码在所有情况下都不适合我
检查标志后,我也必须检查showcmd = 3,如果是这样最大限度地还原