C# 实现程序托盘功能

 

例子代码

链接:https://pan.baidu.com/s/1fzMFawFsYi-CjMGzXF-9sA
提取码:3acn

 

新建一个Form1窗体,监听窗体大小变化事件、窗体关闭事件

     /// <summary>
        /// 窗体大小监听
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Resize(object sender, EventArgs e)
        {
            if (WindowState == FormWindowState.Minimized)
            {
                this.ShowInTaskbar = false;
                notifyIcon1.Visible = true;
            }
        }

        /// <summary>
        /// 关闭窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!formClose)
            {
                //不是通过菜单关闭程序
                WindowState = FormWindowState.Minimized;
                e.Cancel = true;
            }
            else
            {
                timer1.Stop();//关闭定时器
            }
        }

 

添加控件:

notifyIcon(通过notifyIcon1.Visible = false/true控制托盘显示

     /// <summary>
        /// 鼠标点击托盘图标
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (WindowState == FormWindowState.Minimized)
                {
                    WindowState = FormWindowState.Normal;
                    this.Activate();//激活窗口
                    this.ShowInTaskbar = true;//托盘中显示
                    notifyIcon1.Visible = false;
                }
            }
        }

 

contextMenuStrip(托盘右键菜单)

     #region 菜单点击事件

        private void 提示信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            notifyIcon1.ShowBalloonTip(5000, "提示", "这是提示效果!", ToolTipIcon.Info);
        }

        private void 开始闪烁ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void 取消闪烁ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

        private void 退出程序ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            formClose = true;//菜单关闭程序
            this.Close();
        }
        #endregion

 

timer(控制托盘图片闪烁,做成消息提醒功能,需要增加两张.ico图到 Properties.Resources

     /// <summary>
        /// 闪烁图表定时器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            notifyIcon1.Icon = shan
                ? Properties.Resources.程序
                : Properties.Resources.托盘;
            shan = !shan;
        }

 

 

 

 

 

 

posted @ 2021-09-03 15:26  小杨观世界  阅读(617)  评论(0编辑  收藏  举报