zoukankan      html  css  js  c++  java
  • WinFrom点击关闭按钮时提示关闭或最小化的实现

    当我们关闭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,这篇文章就到这里,有些细节没有介绍。

  • 相关阅读:
    ES6——>let,箭头函数,this指向小记
    伪元素与伪类的简单介绍
    CSS font-size: 0去除内联元素空白间隙
    python学习笔记1
    一个兼容IE7IE8,H5的多功能视频播放器,H5视频播放器兼容Flash视频播放器
    【数据结构】空间使用
    Matlab计算自相关和互相关
    Matlab计算两个信号的互能量
    Matlab求信号的功率和能量
    Matlab傅氏变换
  • 原文地址:https://www.cnblogs.com/wujy/p/2848590.html
Copyright © 2011-2022 走看看