Winform小技巧(托盘,主题更换,安全退出)

一,通常我们做软件时,如果想点击退出时,真正实现退出。要么就用Application.Exit,但还是会有些线程可能 并未能及时关闭,或者程序因为开的线程太多而无法及时退出。这时候使用结束进程能解决这些问题

      //退出方法
        private void db_logoff_Click(object sender, System.EventArgs e)
        {
            FormClose = true;
            System.Diagnostics.Process[] myProcesses;
            myProcesses = System.Diagnostics.Process.GetProcessesByName("StudentSystem");
            foreach (System.Diagnostics.Process myProcess in myProcesses)
            {
                myProcess.Kill();
            }
            Application.Exit();
            this.Close();
            //退出
        }

二,托盘是软件比较常用 的功能,在关闭窗体之前加上如下代码,看起来更像一个软件了

            if (!FormClose)
            {
                e.Cancel = true;
                WindowState = FormWindowState.Minimized;
                this.Hide();
                this.notifyIcon1.ShowBalloonTip(0x2710, "系统托盘提示", "程序已最小化到托盘,右键点击显示菜单,双击显示窗体。", ToolTipIcon.Info);//托盘图标加载时提示
            };

三,更换皮肤。曾用过DotNetBar控件,里面的CorlorPickerDropDown功能还行,可以随意变换皮肤,并且有预览效果,用起来会为软件增色不少。

       //皮肤操作引用
       using DevComponents.DotNetBar;
       using DevComponents.DotNetBar.Rendering;
       //变量定义
       private bool m_ColorSelected = false;
       private eOffice2007ColorScheme m_BaseColorScheme;
       
        #region 皮肤更换
        /// <summary>
        /// 颜色确认改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ddl_colChose_SelectedColorChanged(object sender, EventArgs e)
        {
            m_ColorSelected = true; // 指定选中颜色已改变
            RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorScheme, ddl_colChose.SelectedColor);
        }
        /// <summary>
        /// 颜色记忆预览
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ddl_colChose_ExpandChange(object sender, EventArgs e)
        {
            if (colorPickerDropDown1.Expanded)
            {
                // 记忆当前颜色当预览未确认时还原
                m_ColorSelected = false;
                m_BaseColorScheme = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.InitialColorScheme;
            }
            else
            {
                //还原记忆颜色
                if (!m_ColorSelected)
                {
                    RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorScheme);
                }
            }
        }
        /// <summary>
        /// 颜色预览改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ddl_colChose_ColorPreview(object sender, ColorPreviewEventArgs e)
        {
            RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable(m_BaseColorScheme, e.Color);
        }
        #endregion
posted @ 2009-07-23 07:51  -飛天蟲  阅读(566)  评论(0编辑  收藏  举报