TimeExit 界面无点击定时退出类
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 界面无点击定时退出类的更多相关文章
- QTableWidget界面有数据之后鼠标点击无响应界面无响应
1.问题:QTableWidget上出现数据之后,界面无响应,鼠标点击没有响应,但是还是可以正常接收数据,连关闭按钮都无法关闭,必须通过杀死进程来关闭程序.有的电脑是无响应,有的电脑又可以. 2.分析 ...
- android 自己主动拒接后再取消自己主动拒接,该联系人来电界面无图标显示,且点击挂断无反应
1. 设置一个联系人为自己主动拒接 2. 该联系人来电 3. 取消该联系人的自己主动拒接 4. 该联系人来电 Error: 来电界面无头像显示,直接显示黑屏,且点击拒接butt ...
- 11 AlarmHandler定时处理类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...
- 上传头像,界面无跳转,php+js
上传头像,界面无跳转的方式很多,我用的是加个iframe那种.下面直接上代码. html: //route 为后端接口//upload/avatar 为上传的头像的保存地址//imgurl=/uplo ...
- Toolbar 和 CollapsingToolbarLayout一起使用时menu item无点击反应解决办法
昨天一直在琢磨为什么Toolbar和CollapsingToolbarLayout一起使用时menu item无点击放应的原因,后来在stackoverflow上一条回答,说可能是Toolbar的背景 ...
- Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决
能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease- ...
- jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类
jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类 本例有另外2个关联案例,演示地址分别为2.php,3.php 演示 XML/HTML Code <div class="ar ...
- vue数组更新界面无变化
1. vue数组更新界面无变化 1.1. 说明 对数组进行更新或者添加,一定要注意方式,我的情况是数组套数组,双重循环,在造数据的时候,不断从尾部添加数据,所以写成了如下形式,每次下拉都会去加载一批相 ...
- flutter 安卓再次点击返回退出应用
安卓手机点击实体或者虚拟返回键,会返回上一级,当到达最上层是,点击返回退出应用,为了防止用户连续点击返回,导致应用退出,在用户点击返回到最上层时,如果再次点击返回,第一次不退出,并提升用户再次点击退出 ...
随机推荐
- linux实践--字符集
一.ASCII码 首先懂得ASCII码表 二 八 十 十六 缩写/字符 0000 0000 0 0 00 NUL(null) 0000 0001 1 1 01 SOH(start of headlin ...
- 树莓派实践部分——P2P文件下载机torrent之Raspberry Pi管理
树莓派实践--P2P文件下载机torrent之Raspberry Pi管理 一.树莓派配置文件共享软件deluge 在进行实践之前,先通过命令sudo apt-get update 和sudo apt ...
- kali linux 安装过程
kali linux 安装过程 获取镜像文件 首先需要去官网获取kali linux的镜像文件,本来获取了kali的最新版,由于有些方面还没有得到完善,与VM还没有完全兼容,所以换了视频上的1.0.8 ...
- 使用JavaScript下载csv文件
前端可以使用JavaScript在客户端下载包含页面数据的文件,这里以下载CSV格式文件为例,代码如下: function downloadData(data, filename, type) { v ...
- in和exists
exists和in的使用方式: #对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大 select * from A where exists (select * from B ...
- about SpringBoot学习后记
<SpringBoot实战>第一章节入门的名称为Spring风云再起 看起来Spring的功能确实受Java开发者喜爱 在SpringBoot中,继续将Spring框架做了另一次的封装使框 ...
- Coursera SDN M1.1 SDN History: Central Control
source Structure 1.讨论SDN的时间线,从1980s至今. 2.认识到SDN背后的原则和idea. 3.识别SDN起源的架构主题. NOTE Four Chapter in SDN ...
- python 获取5天前的日期
from datetime import date, timedelta dt = date.today() - timedelta() print('Current Date :',date.tod ...
- 雷林鹏分享:Ruby 数组(Array)
Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负 ...
- charles工具过滤腾讯视频播放器广告
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据.它允许一个开发者查看所有连接互联 ...