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. Python面试题目之深浅拷贝浅析

    # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. **只是简单的指针赋值 # copy.deepcopy 深拷贝 拷贝对象及其子对象 **指针赋值,且内容拷贝 用一个简单的例 ...

  2. 常用php操作redis命令整理(一)通用及字符串类型

    Key相关操作 TYPE 类型检测,字符串返回string,列表返回 list,set表返回set/zset,hash表返回hash,key不存在返回0 <?php echo $redis-&g ...

  3. 20145105 《Java程序设计》第1周学习总结

    20145105 <Java程序设计>第1周学习总结 教材学习内容总结 学习了教材的第一章后,我初步了解了Java的发展历程,以及什么是JCP,JSR,JVM.JCP是一个开放性国际组织, ...

  4. 20145339顿珠达杰 《网络对抗技术》 逆向与Bof基础

    目的 通过一些方法,使能够运行本不该被运行的代码部分,或得到shell的使用: 将正常运行代码部分某处call后的目标地址,修改为另一部分我们希望执行.却本不应该执行的代码部分首地址(这需要我们有一定 ...

  5. Ubuntu18.04 怎么开热点

    先说明,电脑上要有wifi适配器,而且连接wifi时,不能开热点 我的笔记本是双系统,现在介绍一下我的设置 在设置里打开热点这个应该会吧,但是热点密码不是自己设置的,而是随机生成的,本文重点介绍一下怎 ...

  6. Git命令速查表【转】

    本文转载自:http://www.cnblogs.com/kenshinobiy/p/4543976.html 一. Git 常用命令速查 git branch 查看本地所有分支git status ...

  7. Cube Solution

  8. Mininet实验 测量路径损耗率

    参照:基于Mininet测量路径的损耗率 在SDN环境中,可以利用控制器来测量特定路径的损耗率,在本实验中,基于Mininet脚本,设置特定的交换机间的路径损耗速率,然后编写POX脚本,实现对路径的损 ...

  9. Java中的组合与聚合

    组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况 ...

  10. [sql]java.sql.Types的具体对应值(jdbcType)

    public final static int BIT   =  -7; public final static int TINYINT  =  -6; public final static int ...