【发布时间】:2011-03-03 12:17:03
【问题描述】:
我已经开发了 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;
}
}
我现在可以从任务栏最小化应用程序。但问题是它正在为我的应用程序创建两个实例,一个是我需要的,另一个是不必要的。
有没有人知道这个问题的解决方案.. 或者有没有人有其他可行的解决方案?
【问题讨论】:
-
您已覆盖
CreateParams以包含的每个样式标志都已被 .NET Framework 公开。绝对没有理由一开始就必须使用这样的代码。我也不明白“从任务栏最小化表单”是什么意思。打开应用程序后,单击任务栏中的图标,它将最小化。很简单,不需要代码。 Windows 本机支持这一点。除此之外,我可以保证您显示的代码将不会创建您的应用程序的两个实例。还有其他问题,但您没有向我们提供足够的信息。 -
问题是当你设置 formborderstyle=none 然后在运行时你不能从任务栏最小化应用程序......你自己试试吧..
-
并且这两个实例的问题只是因为上面的代码,我可以保证,因为当我运行应用程序来评论上面的代码时它工作正常。伙计们请帮助..
-
是的,你是对的。我错过了您说您正在禁用表单边框的部分。您想要最小化没有边框的表单似乎不合逻辑。不会改变我无法重现您描述的行为的事实。当用户单击任务栏中的图标时,表单不只是决定实例化自己的另一个实例。您有一些代码负责执行此操作。把它拿出来,你的问题就解决了。