C# 最小化到系统托盘

本文档详细介绍了如何使用C#实现程序窗口点击关闭后最小化到系统托盘,并提供了双击托盘图标恢复程序、右键菜单操作及自定义关闭行为的实现方法。通过创建NotifyIcon控件、ContextMenuStrip菜单,以及添加相关事件处理,成功实现了所需功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      程序点击关闭后,弹出一个对话框,选择退出,最小化,或者取消.然后系统托盘双击,可以打开最小化的程序,右键有菜单,菜单里有个"选项",可以设置每次点击关闭按钮时是否弹出这个对话框。

      1.新建NotifyIconTest解决方案,在Form窗体框中添加NotifyIcon控件,命名为nIcon,在其属性Icon添加一个icon图标;然后添加一个ContextMenuStrip控件,命名为TuoPanContextMenuStrip,在里面添加两个ToolScripMenuItem,分别命名为MenuItemOpen,MenuItemClose。

      2.将nIcon的属性ContextMenuStrip设置成TuoPanContextMenuStrip。

      3.添加NotifyIcon控件的MouseDoubleClick事件;添加MenuItemOpen子菜单的Click事件和MenuItemClose子菜单的Click事件;添加Form窗体的SizeChanged事件。

     4.运行,测试,成功。

     源代码:

        /// <summary>
        /// 窗体大小改变时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmTP_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
            {
                this.QPan_MiniMizedToTuoPan();
            }
        }
        //最小化托盘
        private void QPan_MiniMizedToTuoPan()
        {
            this.Hide();
            //window任务栏中是否显示窗体
            this.ShowInTaskbar = false;
            this.nIcon.Visible = true;

        }
        /// <summary>
        /// 双击托盘图标
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void nIcon_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.QPan_OpenFromTuoPan();
        }
        //从托盘返回,函数
        private void QPan_OpenFromTuoPan()
        {
              this.Visible = true;
              this.Show();
              this.ShowInTaskbar = true;
              this.WindowState = System.Windows.Forms.FormWindowState.Normal;
              this.nIcon.Visible = true;
        }
        /// <summary>
        /// 打开
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItemOpen_Click(object sender, EventArgs e)
        {
            this.QPan_OpenFromTuoPan();
        }
        /// <summary>
        /// 退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItemClose_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

效果如下:

点击最小化到托盘,双击图标恢复,右击图标显示菜单打开和关闭,点击关闭退出,点击打开,恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值