using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace Share
{
public class TimeExit
{
//单例模式
private static readonly TimeExit m_TimeExit = new TimeExit();
public static TimeExit Instance() { return m_TimeExit; }
private TimeExit()
{
timer = new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件; timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
}
/// <summary>
/// 开始时间
/// </summary>
public static DateTime StartTime = DateTime.Now;
/// <summary>
/// 设置定时退出时间间隔
/// </summary>
public int Time = ;
/// <summary>
/// 剩余时间
/// </summary>
public int TimeRemain = ; private System.Timers.Timer timer;
private List<Label> LableLst = new List<Label>();
///// <summary>
///// 定时要关闭的窗口集合
///// </summary>
public List<Form> FormLst = new List<Form>();
//定义委托
public delegate void IntervalHandle(object sender, EventArgs e);
//定义事件
/// <summary>
/// 到时间执行的事件
/// </summary>
public event IntervalHandle IntervalClicked;
/// <summary>
/// 开启定时退出器
/// </summary>
public void Start()
{
timer.Enabled = true;
StartTime = DateTime.Now;
} private void theout(object sender, EventArgs e)
{
TimeSpan lastTimeSpans = DateTime.Now - StartTime;
TimeRemain = Time - (int)lastTimeSpans.TotalSeconds;
///全部界面的定时显示都改
foreach (var item in LableLst)
{
item.Invoke(new Action(() =>
{
item.Text = TimeRemain.ToString();
}));
}
if (lastTimeSpans.TotalSeconds >= Time)
{
timer.Enabled = false;
Interval();
}
}
/// <summary>
/// 关闭定时退出器
/// </summary>
public void Stop()
{
timer.Enabled = false;
HideText();
}
/// <summary>
/// 到时间执行的事件
/// </summary>
private void Interval()
{
foreach (var item in FormLst)
{
item.Close();
}
IntervalClicked?.Invoke(this, null);
}
public void Add(Label lb)
{
LableLst.Add(lb);
} public void Romove(Label lb)
{
LableLst.Remove(lb);
} private void HideText()
{
///全部界面的定时显示都改
foreach (var item in LableLst)
{
item.Invoke(new Action(() =>
{
item.Text = "";
}));
}
} public void MouseUp(object sender, MouseEventArgs e)
{
StartTime = DateTime.Now;
}
}
}

TimeExit 界面无点击定时退出类的更多相关文章

  1. QTableWidget界面有数据之后鼠标点击无响应界面无响应

    1.问题:QTableWidget上出现数据之后,界面无响应,鼠标点击没有响应,但是还是可以正常接收数据,连关闭按钮都无法关闭,必须通过杀死进程来关闭程序.有的电脑是无响应,有的电脑又可以. 2.分析 ...

  2. android 自己主动拒接后再取消自己主动拒接,该联系人来电界面无图标显示,且点击挂断无反应

    1.    设置一个联系人为自己主动拒接 2.    该联系人来电 3.    取消该联系人的自己主动拒接 4.    该联系人来电 Error: 来电界面无头像显示,直接显示黑屏,且点击拒接butt ...

  3. 11 AlarmHandler定时处理类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...

  4. 上传头像,界面无跳转,php+js

    上传头像,界面无跳转的方式很多,我用的是加个iframe那种.下面直接上代码. html: //route 为后端接口//upload/avatar 为上传的头像的保存地址//imgurl=/uplo ...

  5. Toolbar 和 CollapsingToolbarLayout一起使用时menu item无点击反应解决办法

    昨天一直在琢磨为什么Toolbar和CollapsingToolbarLayout一起使用时menu item无点击放应的原因,后来在stackoverflow上一条回答,说可能是Toolbar的背景 ...

  6. Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决

    能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease- ...

  7. jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类

    jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类 本例有另外2个关联案例,演示地址分别为2.php,3.php 演示 XML/HTML Code <div class="ar ...

  8. vue数组更新界面无变化

    1. vue数组更新界面无变化 1.1. 说明 对数组进行更新或者添加,一定要注意方式,我的情况是数组套数组,双重循环,在造数据的时候,不断从尾部添加数据,所以写成了如下形式,每次下拉都会去加载一批相 ...

  9. flutter 安卓再次点击返回退出应用

    安卓手机点击实体或者虚拟返回键,会返回上一级,当到达最上层是,点击返回退出应用,为了防止用户连续点击返回,导致应用退出,在用户点击返回到最上层时,如果再次点击返回,第一次不退出,并提升用户再次点击退出 ...

随机推荐

  1. Vue学习笔记之Vue知识点补充

    0x00 修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: &l ...

  2. SQL学习笔记之项目中常用的19条MySQL优化

    在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 0x00 EXPLAIN 做MySQL优化,我们要善用 EXPL ...

  3. linux读书笔记第三章

    第3章 进程管理20 3.1 进程20 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码.通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据 ...

  4. No module named import_export.admin

    解决方法: pip install django-import-export

  5. install ros-indigo-pcl-conversions

    CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake: (find_package): Could not fi ...

  6. m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置

    m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...

  7. log模块和report模块

    这两个模块不需要管,我们生成的log和report直接添加到这里就好

  8. HDU1565 方格取数 &&uva 11270 轮廓线DP

    方格取数(1) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. HDU 4751 Divide Groups (2-SAT)

    题意 给定一个有向图,问是否能够分成两个有向完全图. 思路 裸的2-sat--我们设一个完全图为0,另一个完全图为1,对于一个点对(u, v),如果u.v不是双向连通则它们两个不能在一组,即u和v至少 ...

  10. 3321 Apple Tree 树状数组

    LIANJIE:http://poj.org/problem?id=3321 给你一个多叉树,每个叉和叶子节点有一颗苹果.然后给你两个操作,一个是给你C清除某节点上的苹果或者添加(此节点上有苹果则清除 ...