从最小化恢复WindowState

tbe*_*s42 31 winforms

有没有一种简单的方法可以将最小化的形式恢复到以前的状态,正常还是最大化?我期待与单击任务栏相同的功能(或右键单击并选择还原).

到目前为止,我有这个,但如果表单以前最大化,它仍然作为一个普通窗口返回.

if (docView.WindowState == FormWindowState.Minimized)
    docView.WindowState = FormWindowState.Normal;
Run Code Online (Sandbox Code Playgroud)

我是否必须处理表单中的状态更改以记住以前的状态?

Mes*_*smo 45

我使用以下扩展方法:

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后调用form.Restore()我的代码.


Ash*_*ada 13

将表单恢复到正常状态的最简单方法是:

if (MyForm.WindowState == FormWindowState.Minimized)
{
    MyForm.WindowState = FormWindowState.Normal;
}
Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答OP的问题。事实上,这段代码与OP已有的代码相同。 (4认同)
  • 如果之前的窗口状态不是"正常"而是"最大化",该怎么办? (3认同)

jef*_*ffm 5

您可以模拟单击任务栏按钮,如下所示:

SendMessage(docView.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
Run Code Online (Sandbox Code Playgroud)