取消WinForm最小化?

soo*_*ise 5 c# minimize winforms

我有一个winform,其中minimumMaximizeClose按钮被禁用,但是如果有人在任务栏中按下它,它仍会最小化.我想防止这种情况发生.

我怎么能做到这一点?

Jay*_*ggs 17

覆盖表单上的WndProc,监听最小化消息并取消.

将此代码添加到您的表单:

private const int WM_SYSCOMMAND = 0x0112; 
private const int SC_MINIMIZE = 0xf020; 

 protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
        if (m.WParam.ToInt32() == SC_MINIMIZE) 
        { 
            m.Result = IntPtr.Zero; 
            return; 
        } 
    } 
    base.WndProc(ref m); 
} 
Run Code Online (Sandbox Code Playgroud)

我在这个SO线程中修改了Rob的代码:
如何禁用C#中的最小化按钮?

效果很好:没有闪烁,当用户试图最小化时没有任何东西.


Iai*_*ard 4

您可能会发现他们在SizeChanged事件中更改它并检查WindowState,如果它已设置为Minimized,则将其设置回Normal。这不是最优雅的解决方案,但应该可行。

例如。

private void myForm_SizeChanged(object sender, System.EventArgs e)
{
   if (myForm.WindowState == FormWindowState.Minimized)
   {
       myForm.WindowState = FormWindowState.Normal;
   }
}
Run Code Online (Sandbox Code Playgroud)