使用状态通知区域,应用程序可以通知用户非关键事件(例如,新电子邮件的到来或已登录的聊天“伙伴”),并显示活动系统进程的状态(例如,打印文档或笔记本电脑的电池充电)。请记住,当始终存在大约四个以上的图标时,通知区域的效用会迅速降低。因此,最好只响应事件而临时显示的图标。
以下代码示例创建了一个带有托盘图标的空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