欢迎光临
我们一直在努力

Gtk# 通知图标

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

以下代码示例创建了一个带有托盘图标的空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

赞(0) 打赏
未经允许不得转载:码农很忙 » Gtk# 通知图标

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏