当我们关闭QQ的时候,会出现一个提示,弹出一个窗口,询问提示我们是最小化还是退出程序运行。这是一种很人性化的提示操作方式。这篇文章就是要模拟QQ的这种效果,在WinForm中实现。
1、首先创建一个WinForm项目
2、打开Form1窗体设计,设置Form1窗口的FormClosing事件的委托
要在这个方法里边进行关闭提示操作,以及根据用户的选择,进行相应的处理。
3、创建关闭提示的窗体:CloseTipForm
可以选择最小化到系统托盘区,或者退出程序。
还可以记录用户的选择,下次关闭时不再提示,直接进行相应的操作。
关于最小化到系统托盘区的实现不是这篇文章的讨论内容,网上已经介绍很多,请查看:
点击确定时,需要记录用户的选择,在这里我们记录用户的选择到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的项目。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论