【发布时间】:2011-06-07 18:01:24
【问题描述】:
我有一个 c# 中的 winform 应用程序。主窗体通常被最小化。 当某些事件发生时,我想创建一个小弹出窗体,在托盘图标上方带有消息,单击它,将弹出主窗体。
为了实现它,我只创建简单的表单?或者有特殊的系统形式? 例如,使用 msn messenger 会弹出消息提醒新邮件。
提前致谢。
【问题讨论】:
我有一个 c# 中的 winform 应用程序。主窗体通常被最小化。 当某些事件发生时,我想创建一个小弹出窗体,在托盘图标上方带有消息,单击它,将弹出主窗体。
为了实现它,我只创建简单的表单?或者有特殊的系统形式? 例如,使用 msn messenger 会弹出消息提醒新邮件。
提前致谢。
【问题讨论】:
Here's a SO question 涵盖了该主题。您要查找的内容称为“toast”消息。
【讨论】:
msn使用的“Toast”弹窗是自定义弹窗,但notifyicon上有一个内置的ShowBalloonTip方法
见http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx
【讨论】:
您可以创建一个(无边界)表单来执行此操作。您可能还想在出色的 Transitions 库中获得战利品,用于淡入/淡出、四处滑动或平滑调整大小。
【讨论】:
我已经成功使用NotifyIcon control in WinForms。在您的表单中添加一个 NotifyIcon,然后在您的事件处理程序中调用它的 ShowBalloonToolTip function 以显示您的消息。为NotifyIcon.DoubleClick event 定义一个事件处理程序,然后弹出您的主窗口。确保也隐藏气球消息。
可以在here 找到一个很好的示例。
在 WPF 中推荐使用相同的技术,但我不喜欢在 WPF 应用程序中包含 WinForms 组件。我以前做过,但它伤害了灵魂。
【讨论】:
form.showdialog() 应该在表单是表单类的实例的情况下工作。
部分代码可以参考WorkingWithWinForms。
如果您想显示问题或信息,可以使用MessageBox。这是messagebox-show。
【讨论】:
你应该创建一个正常的表单。
如果您不想要普通的窗口镶边(标题栏和框架),请将 FormBorderStyle 设置为 None。
【讨论】: