创建一个弹出气球,就像Windows Messenger或AVG一样。

10

如何创建类似于Windows Messenger、AVG、Norton等弹出气球的效果?

我想要它显示信息,然后在几秒钟后滑动消失。

编辑:需要像 Form.ShowDialog() 一样阻止程序运行,因为显示通知后程序会退出

3个回答

21

您可以使用 .NET 2.0 System.Windows.Forms 中的 notifyIcon 控件。这允许您在系统托盘中放置应用程序的图标。然后,您可以在其上调用 ShowBalloonTip(int timeOut) 方法。但是,请确保首先设置 notifyIcon 的文本和图标属性以使其正常工作。以下是简短的代码示例:

private void button1_Click(object sender, EventArgs e)
        {
            this.notifyIcon1.BalloonTipText = "Whatever";
            this.notifyIcon1.BalloonTipTitle = "Title";
            this.notifyIcon1.Icon = new Icon("icon.ico");
            this.notifyIcon1.Visible = true;
            this.notifyIcon1.ShowBalloonTip(3);
        }

编辑:好的,所以notifyIcon对你不起作用。那么我的第二个建议是为此创建自己的控件。实际上,我会使用一个窗体。一个简单的窗体,没有边框,没有控制框,并且只有一个计时器在运行,这样你就可以设置淡入淡出的透明度。然后,你可以很容易地使用Rectangle Screen.PrimaryScreen.WorkingArea获取屏幕右下角的位置。然后只需在该位置显示你的窗体。


我在创建表单之前展示这个,所以NotifyIcon不是一个选项。 - Malfist
而且通知图标并没有显示我想要的内容。 - Malfist
当NotifyIcon被策略阻止时,它将无法工作。 - Roel

11

请不要创建模态(阻塞式)气球。这些UI设计的一个重要部分是它们不是对话框:它们是短暂的,潜在的非交互式的元素,旨在为用户提供偶发信息而不必打断他们的工作流程。窃取焦点并阻止用户输入的气球最多会让人感到恼怒 - 如果你需要一个对话框,那就使用对话框。


需要一个阻塞通知窗口的原因是因为程序在显示后退出。如果它不是阻塞的,那么它就永远不会被显示。 - Malfist
请至少在显示气球之前隐藏或销毁程序显示的任何其他UI。通过这种方式,您可以避免用户感受到阻塞气球,并使其免受气球可能会阻塞的任何内容的影响。 - Shog9
UI没有显示。唯一出现气球的时候是当程序有命令行参数时。命令行参数将是来自另一个应用程序的电话号码,表示用户有电话呼叫。如果电话号码不在数据库中,那就是气球会显示的时候。 - Malfist
或许把用户界面交给你的其他程序会更好。返回表示错误的返回代码,而不是阻塞程序。这样,你的程序将更快更具有响应性。 - Shog9
我无法触及另一个程序,因为它是闭源的。 - Malfist

1

我该如何使用它?我已经下载并安装了PowerPack 3.0,但我不知道如何获取类。 - Malfist
这是针对 Visual Studio 2005 的。 - Malfist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接