您的位置:首页 > 其它

WinForm最小化到托盘以及托盘右键菜单(转),略修改

2016-11-24 12:07 696 查看


WinForm最小化到托盘以及托盘右键菜单

首先,先拖一个NotifyIcon到主窗体,然后设置NotifyIcon的图标,不然等下最小化后,都找不到那个程序了,还有那个Text也是,不写名字,就默认是NotifyIcon了..如下图:



然后双击NotifyIcon,代码如下:

        /// <summary>
        /// 添加双击托盘图标事件(双击显示窗口)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            
   
      NotifyIcon1.Visible = false;
         
   this.Show();
         
          WindowState = FormWindowState.Normal;
         
   this.Focus();

        }

然后分别到主窗口的单击事件里面添加以下两个方法即可,如下图:





代码如下:

        /// <summary>

        /// 判断是否最小化,然后显示托盘

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void F_Main_SizeChanged(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 F_Main_FormClosing(object sender, FormClosingEventArgs e)

        {

//注意判断关闭事件Reason来源于窗体按钮,否则用菜单退出时无法退出!
            if (e.CloseReason == CloseReason.UserClosing)
            {
                e.Cancel = true;    //取消"关闭窗口"事件
                this.WindowState = FormWindowState.Minimized;    //使关闭时窗口向右下角缩小的效果
                NotifyIcon1.Visible = true;
                this.Hide();
                return;
            }

          

        }

下面是托盘右键菜单的制作:

先拖一个ContextMenuStrip到主界面,然后添加你的右键菜单,在然后绑定给NotifyIcon即可,图形如代码如下:



绑定菜单给NotifyIcon



后台代码:

        /// <summary>
        /// 托盘右键显示主界面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
        {
                  notifyIcon1.Visible = false;

            this.Show();

            WindowState = FormWindowState.Normal;

            this.Focus();
        }
        /// <summary>
        /// 托盘右键退出程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                // 关闭所有的线程
                this.Dispose();
                this.Close();
     Application.Exit();
            }
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: