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#中的最小化按钮?
效果很好:没有闪烁,当用户试图最小化时没有任何东西.
您可能会发现他们在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)