波斯码BOSSMA Information Technology

WinForm应用程序中单例模式的实现方法

发布时间:2011年4月7日 / 分类:DOTNET, WinForm / 次浏览 / 评论

Windows任务管理器是单例模式的一个很好的例子,在当前登录用户下我们只能打开一个它的实例。如它没有运行,点击“任务管理器”会启动这个程序,如果最小化了,点击“任务管理器”会激活它并显示在最小化之前的位置;如果当前激活并显示,会重新激活。这篇文章将要介绍在WinForm应用程序中如何实现这一模式。

大多数的winform程序实现这一效果都采用了互斥体,我们这里也不例外,只不过更加完善了。

1、首先创建一个WinForm应用程序,设计窗体:

2、 获取并保存窗口句柄

为了方便控制窗口,每次窗体打开时,我们还需要记录窗口的句柄。

记录到Settings.settings中是一个不错的方法 。

然后我们需要在窗体每次打开时更新这个值 :

3、 请求程序运行时的判断

当用户双击程序图标或者调用程序启动命令后,程序首先需要判断是不是可以拥有互斥体初始所有权,如果OK,则启动窗口;

如果不OK,则判断窗口是否最小化了,如果最小化,则激活并显示窗口;如果正常显示,则重新激活窗口。

看看代码吧:

这里调用了几个Windows的API,用于判断及设置窗口状态,参数用到了前边设置的窗口句柄:CurrentIntPtr。

4、现在运行程序就能看到效果了。

 

最后,点击这里下载这个例子

 

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯码,原文地址《WinForm应用程序中单例模式的实现方法

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论