【问题标题】:How to create form popup from from system tray on windows application (not web) with c#如何使用 c# 从 Windows 应用程序(不是 Web)上的系统托盘创建表单弹出窗口
【发布时间】:2011-06-07 18:01:24
【问题描述】:

我有一个 c# 中的 winform 应用程序。主窗体通常被最小化。 当某些事件发生时,我想创建一个小弹出窗体,在托盘图标上方带有消息,单击它,将弹出主窗体。

为了实现它,我只创建简单的表单?或者有特殊的系统形式? 例如,使用 msn messenger 会弹出消息提醒新邮件。

提前致谢。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    Here's a SO question 涵盖了该主题。您要查找的内容称为“toast”消息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您可以创建一个(无边界)表单来执行此操作。您可能还想在出色的 Transitions 库中获得战利品,用于淡入/淡出、四处滑动或平滑调整大小。

        【讨论】:

          【解决方案4】:

          我已经成功使用NotifyIcon control in WinForms。在您的表单中添加一个 NotifyIcon,然后在您的事件处理程序中调用它的 ShowBalloonToolTip function 以显示您的消息。为NotifyIcon.DoubleClick event 定义一个事件处理程序,然后弹出您的主窗口。确保也隐藏气球消息。

          可以在here 找到一个很好的示例。

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

          【讨论】:

            【解决方案5】:

            form.showdialog() 应该在表单是表单类的实例的情况下工作。 部分代码可以参考WorkingWithWinForms

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

            【讨论】:

              【解决方案6】:

              你应该创建一个正常的表单。

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

              【讨论】:

                猜你喜欢
                • 2011-02-20
                • 2013-04-02
                • 1970-01-01
                • 2011-02-26
                • 1970-01-01
                • 1970-01-01
                • 2017-01-11
                • 2023-01-12
                相关资源
                最近更新 更多