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 |