使用状态通知区域,应用程序可以通知用户非关键事件(例如,新电子邮件的到来或已登录的聊天“伙伴”),并显示活动系统进程的状态(例如,打印文档或笔记本电脑的电池充电)。请记住,当始终存在大约四个以上的图标时,通知区域的效用会迅速降低。因此,最好只响应事件而临时显示的图标。
以下代码示例创建了一个带有托盘图标的空GTK窗口。可以在任务栏图标的帮助下隐藏,显示和关闭该应用程序。
using System;
using Gdk;
namespace Gtk.NotificationIcon
{
class Program
{
// 托盘图标
private static StatusIcon trayIcon;
// 窗口
private static Gtk.Window window;
static void Main()
{
// 初始化GTK#
Application.Init();
// 创建一个带标题的窗口
window = new Gtk.Window("Hello World");
// 当窗口被关闭时,退出程序。
window.DeleteEvent += delegate { Application.Quit(); };
// 创建图标
trayIcon = new StatusIcon(new Pixbuf("favicon.ico")) { Visible = true };
// 当trayIcon被点击时,显示/隐藏窗口(甚至从面板/任务栏)。
trayIcon.Activate += delegate { window.Visible = !window.Visible; };
//当图标被右键点击时,显示一个弹出菜单。
trayIcon.PopupMenu += OnTrayIconPopup;
// 为图标提供一个工具提示
trayIcon.Title = "Hello World Icon";
// 显示主窗口并启动应用程序。
window.ShowAll();
Application.Run();
}
// 创建弹出菜单,右键点击。
static void OnTrayIconPopup(object o, EventArgs args)
{
Menu popupMenu = new Menu();
ImageMenuItem menuItemQuit = new ImageMenuItem("Quit");
Gtk.Image appimg = new Gtk.Image(Stock.Quit, IconSize.Menu);
menuItemQuit.Image = appimg;
popupMenu.Add(menuItemQuit);
// 点击quit后,退出应用程序。
menuItemQuit.Activated += delegate { Application.Quit(); };
popupMenu.ShowAll();
popupMenu.Popup();
}
}
}
特别感谢 Suco 提供的 原始代码示例 。完整的项目代码,可以在 Gitee 上找到:https://gitee.com/coderbusy/gtk-sharp-demo/tree/master/Gtk.NotificationIcon