[导入]类型MSN窗体行为的实现(.NET 2.0)
当我们点击MSN窗体的"X"关闭程序时,MSN并不退出,而是最小化窗体,并且不在任务栏上显示.托盘区显示该程序.现在,我用VS2005实现类似的效果.
.NET 2.0的窗体中多了一个"ShowInTaskbar"的属性,指示该应用程序是否显示在任务栏.有了这个属性,我们的实现就简单多了.
首先,把窗体的ShowInTaskbar属性设为False,然后添加一个NotifyIcon控件,一个Menu控件,一个ContextMenu控件(用于和NotifyIcon关联).Menu和ContextMenu都只添加一个"Exit"菜单项,来控制窗体的行为.
部分代码如下:
窗体关闭事件代码
![](http://www.agilelabs.cn/aggbug.aspx?PostID=257)
文章来源:http://www.agilelabs.cn/blogs/woody/archive/2005/12/15/257.aspx
.NET 2.0的窗体中多了一个"ShowInTaskbar"的属性,指示该应用程序是否显示在任务栏.有了这个属性,我们的实现就简单多了.
首先,把窗体的ShowInTaskbar属性设为False,然后添加一个NotifyIcon控件,一个Menu控件,一个ContextMenu控件(用于和NotifyIcon关联).Menu和ContextMenu都只添加一个"Exit"菜单项,来控制窗体的行为.
部分代码如下:
窗体关闭事件代码
双击托盘区图标时间代码private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //窗体关闭事件 if (this.WindowState != FormWindowState.Minimized) { e.Cancel = true; this.WindowState = FormWindowState.Minimized; this.notifyIcon1.ShowBalloonTip(3000, "My App","My App is not closed.\n it's minimized!", ToolTipIcon.Info); } }
点击Menu和ContextMenu的"Exit"菜单项事件private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.ShowInTaskbar = true; //重新显示窗口 this.Show(); this.WindowState = FormWindowState.Normal; } this.Activate();//激活窗口 this.Focus(); }
----2005.12.15 10:26 星期四private void exitToolStripMenuItem_Click(object sender, EventArgs e) { //点击菜单中的"Exit"事件 this.WindowState = FormWindowState.Minimized; Close(); } private void exitToolStripMenuItem1_Click(object sender, EventArgs e) { //点击ContextMenu中的"Exit"事件 this.WindowState = FormWindowState.Minimized; Close(); }
文章来源:http://www.agilelabs.cn/blogs/woody/archive/2005/12/15/257.aspx