如何使用c#从Windows应用程序(而不是Web)上的系统托盘创建表单弹出窗口

我在c#中有一个winform应用程序。 主要forms通常是最小化的。 当某些事件发生时,我想创建一个小的弹出窗体,在托盘图标上方显示动画,点击它,将显示主窗体。

为了实现这一点,我只是创建简单的表单? 还是有特殊的系统forms? 例如,有一个弹出消息,用msn messenger警告新邮件。

提前感谢。

这是一个涵盖这个话题的SO问题 。 你正在寻找什么被称为“吐司”的消息。

msn使用的“Toast”弹出窗口是自定义弹出窗口,但在notifyicon上有一个内置的ShowBalloonTip方法

请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

您可以创建一个(无边框)表单来执行此操作。 您可能还希望在优秀的Transitions库中获得一个战利品,用于淡入/淡出,滑动或平滑resize。

我在WinForms中使用NotifyIcon控件取得了成功。 在表单中添加NotifyIcon,然后在事件处理程序中调用其ShowBalloonToolTip函数以显示您的消息。 为NotifyIcon.DoubleClick事件定义事件处理程序,并弹出主窗口。 请务必同时隐藏气球消息。

这里可以找到一个如何做到这一点的好例子。

在WPF中推荐使用相同的技术,尽管我不喜欢在WPF应用程序中包含WinForms组件。 我以前做过,但它伤害了灵魂。

form.showdialog()应该在form是表单类的实例的地方工作。 对于某些代码,您可以参考WorkingWithWinForms 。

如果要显示问题或信息,可以使用MessageBox 。 这是一个messagebox-show 。

您应该创建一个普通表单。

如果您不想要正常的窗口镶边(标题栏和框架),请将FormBorderStyle设置为None