目前热门的两款下载工具:迅雷(Thunder)和网际快车(FlashGet),相信大家都不陌生。使用过这两种工具的用户一定都有过这样的体验:
- 当单击应用程序主窗体右上角的“关闭”按钮时,应用程序并不是被关闭而最小化到系统托盘(屏幕右下角),以图标的形式显示;
- 当单击系统托盘上的应用程序图标时,又会重新显示应用程序主窗体;
- 当右键单击系统托盘上的应用程序图标时,会显示一个上下文菜单(ContextMenu),单击其中的“退出”才会真正退出应用程序。
这种效果在很多软件上都有应用,其原理大致相同,那么到底是如何实现的呢?下面是我自己在做一个WinForms应用程序时实现的过程:
- 打开VS2003,新建一个Visual C# Windows应用程序项目;
- 在默认窗体Form1中拖入一NotifyIcon控件和一个ContextMenu控件,并设置NotifyIcon控件显示的图像;
- 在ContextMenu控件中添加一个名为“退出”的菜单项,并将其关联到NotifyIcon控件;
- 接下来是添加一系列事件,为主窗体Form1添加Closing事件,为NotifyIcon控件添加Click事件和MouseDown事件,并为“退出”菜单项添加Click事件;各事件的作用及实现代码如下:
说明:代码适用于.NET Framework 1.1版本,在Visual Studio.NET 2003开发环境下编译通过。