当前位置:编程学习 > C#/ASP.NET >>

Notyfyicon 实现最小化到托盘

如题,最小化到托盘已实现,但是存在一个问题。
打开一个子窗口,托盘就又出现一个图标,现在想实现只有一个图标。
该怎么做?
--------------------编程问答-------------------- 现在是这个情况,打开一个子窗口,托盘会再次出现一个图标
要的效果是托盘只有一个图标  --------------------编程问答-------------------- --------------------编程问答-------------------- 我刚好也做了这个,代码都给你了
       /// <summary>
        /// 创建状态栏按钮
        /// </summary>
        public void CreateMenu()
        {
            #region//隐藏到状态栏
            MenuItem menuItemShow = new MenuItem("打开主面板");
            MenuItem menuItemHide = new MenuItem("托盘主面板");
            MenuItem menuItemExit = new MenuItem("退出");
            menuItemShow.Click += new EventHandler(this.menuItemShow_Click);
            menuItemHide.Click += new EventHandler(this.menuItemHide_Click);
            menuItemExit.Click += new EventHandler(this.menuItemExit_Click);
            //设置NotifyIcon对象的ContextMenu属性为生面的弹出菜单对象 
            notifyIcon_ForGroundSys.ContextMenu = new ContextMenu(new MenuItem[] { menuItemShow, menuItemHide, menuItemExit });
            //当用户双击程序图标时将执行相应的函数 
            notifyIcon_ForGroundSys.DoubleClick += new EventHandler(this.notifyIcon_DBClick);
            #endregion
        }
        #region//状态栏事件
        private void menuItemShow_Click(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                //this.notifyIcon_ForGroundSys.Visible = false;
                this.Visible = true;
                this.ShowInTaskbar = true;
                this.WindowState = FormWindowState.Maximized;
            }
        }

        private void menuItemHide_Click(object sender, EventArgs e)
        {
            //notifyIcon_ForGroundSys.Visible = true;
            this.WindowState = FormWindowState.Minimized;
            this.Visible = false;
            this.ShowInTaskbar = false;
                     }

        private void menuItemExit_Click(object sender, EventArgs e)
        {
            CloseSys();
        }
        private void notifyIcon_DBClick(object sender, System.EventArgs e)//用户双击应用程序图标进的响应方法 
        {
            //this.notifyIcon_ForGroundSys.Visible = false;
            this.Visible = true;
            this.ShowInTaskbar = true;
            this.WindowState = FormWindowState.Maximized;
        }
        #endregion
        /// <summary>
        /// 鼠标略过控件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon_ForGroundSys_MouseMove(object sender, MouseEventArgs e)
        {
            this.notifyIcon_ForGroundSys.Text = String.Format("{0}{1}{2}{3}{4}", "...系统!", Environment.NewLine, "正在运行中......",Environment.NewLine, "双击显示!");
        }
        /// <summary>
        /// 判断是否最小化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmMain_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized) //判断是否最小化
            {
                //this.notifyIcon_ForGroundSys.Visible = true;
                this.Visible = false;
                this.ShowInTaskbar = false;
                            }
        }
--------------------编程问答-------------------- 控件放在主窗体上,不要放在子窗体上 --------------------编程问答-------------------- 这个。。。。。。。。。。。。。。。。。。。 --------------------编程问答-------------------- 托盘的那段代码只放到主窗体就可以了, 你是不是放到自定义的 BaseForm 中, 所有窗体继承 :BaseForm --------------------编程问答-------------------- 控件是放在MainForm上的,我调试的时候发现 子窗口继承了主窗口DATAGRIDVEW的数据,所以操作子窗口的时候程序好像又执行了一遍MainFron中最小化到托盘操作
不知道描述的对不对,不知道怎么解决 --------------------编程问答-------------------- 还有一个问题呢 就是 控制TEXTBOX 怎么判断是正确的银行卡号格式
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,