winform 不想自动弹出窗口, 最小化後图标要显示在右下角 (像杀毒软件那样),要怎麼做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 不想自动弹出窗口, 最小化後图标要显示在右下角 (像杀毒软件那样),要怎麼做?相关的知识,希望对你有一定的参考价值。

给窗体拖一个NotifyIcon控件后 在该窗体窗体Load时使用this.Hide()将窗体隐藏

然后为NotifyIcon添加一个双击事件 写上this.Show() 即可实现

当然 你也可以写单击事件 或者添加ContextMenu菜单控件,为ContextMenu控件添加"显示"按钮项,为这个按钮添加单击事件 this.Show()出来 再为NotifyIcon控件的ContextMenu属性选择这个右键菜单 也可以实现
参考技术A 右下角图标用NotifyIcon控件。自己写双击事件。

更改最小化,关闭和最大化窗口的图标

简单的问题。如何更改关闭,最小化,最大化按钮的图标。我可以在Winforms和WPF中执行此操作吗?

答案

处理WM_NCPAINT消息时,将绘制窗口上的这些图标,标题和边框。因此,您接管绘制此方法的方法是处理此消息。

但是您无法访问有关图标的状态信息(即,您应该在其中按下哪个按钮,因为用户当前正在点击它)。你甚至不知道鼠标处理代码到底认为这些图标的确切位置。

因此,要接管非客户端绘制,您还需要接管非客户端鼠标处理,并且整个问题只是滚雪球,直到您编写了数千行代码并且您的窗口在用户时仍然表现不正常试图拖动它等

这是在非托管代码中,在托管代码(C#/ .Net)中,这甚至更难,因为您还必须进行互操作以获取您需要使用的某些API。

所以答案是:是的,它可能,但在WinForms和WPF中比在C ++中更难,而那些尝试过它的人现在都很秃顶。

另一答案

真正的答案是你不应该这样做。用户希望所有应用程序都能正常工作。让他们尝试弄清楚你使用什么漂亮的新图标意味着最小化可能会让他们不快乐。

另一答案

这样做并不困难,但需要做很多工作 - 你必须自己更换窗口框架并自己处理所有内容,默认窗口框架中有很多功能你必须重写 - 你还必须编写不同的代码适用于启用了Aero的Vista / 7。

在WPF中,您可以使用http://blogs.msdn.com/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx中的各种技术

在WinForms中,您使用相同的基本技术,但我不知道一个页面总结了所有细节,如上面的链接。

另一答案

在wpf中,您可以为您的Window设置WindowStyle="None",然后为其设置自定义TitleBar,使用最小化,最大化和关闭按钮。我之前做过这个。您需要执行一些事件处理以执行最小化,最大化,关闭,拖动等操作。

另一答案

是的,你必须创建自己的窗口样式。例如,请参阅FluidKit,GlassWindows。

另一答案

如果要控制这些按钮的外观,则必须创建自己的按钮。这是使用Windows功能编写Windows应用程序的一个价值(它们具有标准的外观和感觉)。

以上是关于winform 不想自动弹出窗口, 最小化後图标要显示在右下角 (像杀毒软件那样),要怎麼做?的主要内容,如果未能解决你的问题,请参考以下文章

WinForm 之 窗口最小化到托盘及右键图标显示菜单

更改最小化,关闭和最大化窗口的图标

outlook2013如何设置最小化

C# winForm启动最小化到任务栏右侧通知栏并交互操作

C# winForm启动最小化到任务栏右侧通知栏并交互操作

如何修改C#winform程序图标