winfrom 倒计时控件

最近在做一个快递柜项目,要求在用户没有操作的时间到了一分钟,自动返回主页,我于是封装了一个倒计时控件,废话少说,直接上代码

 public partial class RemainingTimeUC : UserControl
    {

        public RemainingTimeUC()
        {
            InitializeComponent();
        }
        Form ParantForm = null;
        private void RemainingTimeUC_Load(object sender, EventArgs e)
        {
           //获得用户控件所在的长提
            ParantForm = this.FindForm();
        }
        #region timerUC_Tick事件
        private void timerUC_Tick(object sender, EventArgs e)
        {
            try
            {
                int TotalSecond = 60;//设置时间为60s
                var remainTime = TotalSecond - MouseKeyBoardOperate.GetLastInputTime();//总时间-用户未操作的时间
                this.labRT.Text = remainTime.ToString(CultureInfo.InvariantCulture);//显示离关闭的剩余时间

                if (remainTime == 30)
                {
                    this.labRT.ForeColor = Color.Orange;
                }
                if (remainTime <= 9)
                {
                    this.labRT.ForeColor = Color.Red;
                    this.labRT.Text = "0" + remainTime;
                }
                if (remainTime == 59)
                    this.labRT.ForeColor = Color.White;
                if (remainTime == 0)
                {
                    ParantForm.Close();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(this.Name + "timerUC_Tick", ex.Message);
            }

        }
        #endregion
    }

////此方法不知道是哪位前辈写的,借用一下//

public class MouseKeyBoardOperate
{
/// <summary>
/// 创建结构体用于返回捕获时间
/// </summary>
[StructLayout(LayoutKind.Sequential)]
struct Lastinputinfo
{
/// <summary>
/// 设置结构体块容量
/// </summary>
[MarshalAs(UnmanagedType.U4)]
public int cbSize;

/// <summary>
/// 抓获的时间
/// </summary>
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;
}

[DllImport("user32.dll")]
private static extern bool GetLastInputInfo(ref Lastinputinfo plii);

/// <summary>
/// 获取键盘和鼠标没有操作的时间
/// </summary>
/// <returns>用户上次使用系统到现在的时间间隔,单位为秒</returns>
public static long GetLastInputTime()
{
var vLastInputInfo = new Lastinputinfo();
vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
if (!GetLastInputInfo(ref vLastInputInfo))
{
return 0;
}
else
{
var count = Environment.TickCount - (long)vLastInputInfo.dwTime;
var icount = count / 1000;
return icount;
}
}

  

时间: 2024-10-11 13:18:58

winfrom 倒计时控件的相关文章

WinFrom ProgressBar控件的使用

在WinForm程序中,大多数情况下我们是知道程序运行所需要的时间或步骤的,比如批量复制文件时文件的数量,数据导出或导入时数据的总行数等等.对于步骤比较确定的操作,如果程序执行过程时间较长,很容易使用BackgroundWorker结合ProgressBar来显示一个实时的进度.相关内容大家可以看我博客中的其它文章,有关如何使用BackgroundWorker和ProgressBar.但是,有的时候我们是不确定程序执行的具体步骤或时长的,比如连接一个远程服务或数据库服务,或者调用一个远程过程或W

android自定义倒计时控件示例

这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import android.text.Html;import android.util.AttributeSet;import and

Android自定义倒计时控件

序: 最近越来越多的APP都是用手机号注册,一是为了方便用户记忆,二是为了增加用户账户的安全性.在我们进行交易操作或者修改密码等操作的时候,这时候需要输入短信验证码.这个控件会需要有倒计时的功能,这里主要总结常见的几种实现方式. 1.Android中实现倒计时的方法 第一种:直接用Handler的消息机制来实现 这种方式感觉是最原始的,这里不多说. 第二种:Timer和TimerTask 基本使用:获得Timer和TimerTask对象,然后启动,倒计时的逻辑写在handler里面 privat

android中倒计时控件CountDownTimer分析

android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { LogUtil.i(TAG, "seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { LogUtil.i(TAG, "done!"

倒计时控件

最近做一个WPF小项目需要使用到计时器,因此写了一个计时控件,记录下来,以便下次使用. 前台的XAML: <UserControl x:Class="Test.CountDown" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc=&

winfrom实现控件全屏效果

用常规方法实现全屏显示时,由于采用的三方控件导致界面顶端一直有一条半透明的类似标题栏的东西无法去除,原因一直没找到. 下面综合整理下网上两位博主的用WindowsAPI实现全屏的方法: 控件全屏显示: http://www.cnblogs.com/lmcblog/archive/2012/07/14/2591501.html 任务栏.开始菜单栏显示隐藏:http://www.cnblogs.com/ITBread/p/3503801.html 我把代码整理下,方便下次自己查看 1.任务栏.菜单栏

winFrom 常用控件属性及方法介绍

目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichTextBox控件 5.NumericUpDown控件 6.Button(按钮)控件 7.GroupBox(分组框)控件 8.RadioButton(单选按钮)控件 9.CheckBox(复选框)控件 10.ListBox(列表框)控件 11.ComboBox(组合框)控件 12.CheckedListBox(复选列表框)控件 13.PictureBox(图片框)控件 14.Timer(定时器

模仿淘宝客户端倒计时控件

在前面的文章中,我们分析了淘宝android客户端的一些界面时间和用户体验,今天这篇文章,主要介绍如何使用自定义控件,实现抢购倒计时的功能. 首先,我们看一下实现的效果. 实现效果很简单哈,就是一个倒计时的自定义控件. 下面简单介绍一下实现的思路. 首先,显示时间使用的是Textview,因为没有很特殊的效果,因此,我们可以自己写一个简单的布局文件,来作为显示的界面. 而关于时间的变更,我们使用timer类就可以实现,用一个1000毫秒的Timer,每过一秒,更新一下界面即可. 但是在更新时间的

自定义控件----倒计时控件

先上效果图: 因为时分秒都有自己的背景色等布局,所以重写一个textview 不够灵活,所以我们自定义一个TimeTextView继承自Linearlayout 然后再在里面放几个textview即可. 先看 布局文件吧: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi