如何最小化任务栏中的表单?

我开发了winform应用程序,并设置了formborderstyle = none。 那就是为什么当我运行应用程序时我无法通过任务栏将其最小化。 有没有人知道这方面的解决方案?

我尝试了以下代码..在我的表单中添加它。

const int WS_CLIPCHILDREN = 0x2000000; const int WS_MINIMIZEBOX = 0x20000; const int WS_MAXIMIZEBOX = 0x10000; const int WS_SYSMENU = 0x80000; const int CS_DBLCLKS = 0x8; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style = WS_CLIPCHILDREN | WS_MINIMIZEBOX | WS_SYSMENU; cp.ClassStyle = CS_DBLCLKS; return cp; } } 

我现在能够最小化任务栏中的应用程序。 但问题是它创建了我的应用程序的两个内容,我需要一个,另一个是不必要的。

有没有人知道这方面的解决方案..还是有人有其他解决方案有效吗?

无边框forms应始终是用户不希望最小化的forms。 可发现性原则开始适用于此:大多数用户不知道您可以通过单击其任务栏图标来最小化窗口。 他们希望能够通过点击大红色x旁边的按钮来实现。 正确的解决方案是为表单选择不同的边框样式,包括标题栏和最小化框。 Windows将自动按预期运行。 当您遵循平台的标准惯例时,事情会变得更加容易,不仅对您作为程序员,而且对您的用户。
它还修复了创建或恢复表单时令人讨厌的闪烁效果,我可以看到标准标题栏几秒钟。

当然,无论如何你都不可避免地想要这样做,所以尽管我有更好的判断力,但我会尝试提供一个解决方案。 第一个问题是我无法重现您描述的行为 (Windows Server 2008 R2,.NET 4.0)。 准确地将显示的代码添加到新的WinForms项目中,并将表单的FormBorderStyle属性设置为“None”,我无法让两个窗口显示出来。 单击任务栏图标可以使表单最小化,再次单击它可以恢复它。

但有一种方法可以简化您的代码。 而且您应该使用现有样式标志对要添加的样式标志进行OR运算,而不是替换现有标志。 用以下代码替换您的代码:

 const int WS_MINIMIZEBOX = 0x20000; const int CS_DBLCLKS = 0x8; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style |= WS_MINIMIZEBOX; cp.ClassStyle |= CS_DBLCLKS; return cp; } } 

如果这不能解决您的问题(并且我对它会持怀疑态度),那么正如我所怀疑的那样, 您的代码中还有其他错误,而您没有向我们展示过 。 仅仅因为你可以注释掉几行代码而你的程序按预期工作并不一定意味着问题在于那些代码行。 它们可以完全正确,但干扰你在其他地方使用过的黑客攻击。