波斯马BOSSMA Information Technology

WinFrom点击关闭按钮时提示关闭或最小化的实现

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

当我们关闭QQ的时候,会出现一个提示,弹出一个窗口,询问提示我们是最小化还是退出程序运行。这是一种很人性化的提示操作方式。这篇文章就是要模拟QQ的这种效果,在WinForm中实现。

1、首先创建一个WinForm项目

2、打开Form1窗体设计,设置Form1窗口的FormClosing事件的委托

要在这个方法里边进行关闭提示操作,以及根据用户的选择,进行相应的处理。

3、创建关闭提示的窗体:CloseTipForm

可以选择最小化到系统托盘区,或者退出程序。

还可以记录用户的选择,下次关闭时不再提示,直接进行相应的操作。

关于最小化到系统托盘区的实现不是这篇文章的讨论内容,网上已经介绍很多,请查看:

搜索winform最小化到系统托盘

点击确定时,需要记录用户的选择,在这里我们记录用户的选择到Settings中:

AlwaysCloseAction用于永久记录用户的选择;

CloseAction用于保存用户本次的选择。

看看点击确定操作时,是如何处理的:

这里定义了一个ClickCloseButtonAction的类:

/// <summary>
??? /// 关闭按钮的可选操作
??? /// </summary>
??? public class ClickCloseButtonAction
??? {
??????? public static int Tip = 0;
??????? public static int Min = 1;
??????? public static int Close = 2;
??????? public static int Cancel = 3;
??? }

关闭有这么几种选择:提示、最小化、关闭、取消关闭。

4、编写关闭提示程序

创建CloseTipForm好之后,就可以为应用关闭提示的窗体编写相关程序了,这里在前边创建的FormClosing委托方法中编写。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
??????? {
??????????? //首先从默认设置读取,如果都不是则打开提示窗口
??????????? Settings r = new Settings();
??????????? if (r.AlwaysCloseAction == ClickCloseButtonAction.Min)//最小化
??????????? {
??????????????? e.Cancel = true;

??????????????? SetWindowMin();
??????????? }
??????????? else if (r.AlwaysCloseAction == ClickCloseButtonAction.Close)//关闭
??????????? {
??????????? }
??????????? else if (r.AlwaysCloseAction == ClickCloseButtonAction.Tip)//提示
??????????? {
??????????????? CloseTipForm form = new CloseTipForm();
??????????????? form.ShowDialog();

??????????????? r.Reload();
??????????????? if (r.CloseAction == ClickCloseButtonAction.Cancel)//取消
??????????????? {
??????????????????? e.Cancel = true;
??????????????? }
??????????????? else if (r.CloseAction == ClickCloseButtonAction.Min)//最小化
??????????????? {
??????????????????? e.Cancel = true;

??????????????????? SetWindowMin();
??????????????? }
??????????????? else if (r.CloseAction == ClickCloseButtonAction.Close)//关闭
??????????????? {
??????????????? }
??????????? }
??????? }

代码很简单,里边有一个SetWindowMin方法,是自定义的用于最小化窗口。

因为没有提供直接最小化的方法,使用:

this.WindowState = FormWindowState.Minimized

有时不能很好的解决问题,所以调用了一个Windows API来实现。

5、运行效果

做完以上处理,现在基本可以运行了。

Ok,这篇文章就到这里,有些细节没有介绍。

请下载Demo测试,注意是VS2010的项目。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《WinFrom点击关闭按钮时提示关闭或最小化的实现

关键字:

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

发表评论