Winform中显示倒计时器 在Winform中要显示一个倒计时器,是不是要用Lable和Timer呢?求解,详细点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 也可以使用目标时间减去当前时间啊,用TimeSpan()函数 用LABEL和timer就可以了,简单明了~ 用Timer实现using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace CountDown{ public partial class Form1 : Form { public Form1() { InitializeComponent(); tmr.Interval = 1000; tmr.Tick += new EventHandler(tmr_Tick); } private int start = 20; private Timer tmr = new Timer(); private void button1_Click(object sender, EventArgs e) { start = 20; this.button1.Text = start.ToString(); tmr.Start(); } void tmr_Tick(object sender, EventArgs e) { this.button1.Text = (start -= 1).ToString(); if (start == 0) tmr.Stop(); } }} 可以用Timer,也可以用线程写一个倒计时,每次执行的时候,休眠1秒,Thread.Sleep(1000); 恩 lable 和 timer就可以了 把最终的时间 减去现在的 时间显示在lable上 每隔若1秒(或相应时间)执行一次 private void timer1_Tick(object sender, System.EventArgs e) { txtStart.Text=System.DateTime.Now.ToLongTimeString(); } private void button1_Click(object sender, System.EventArgs e) { label1.Text="当前时间"; timer1.Enabled=true; label2.Visible=false; txtEnd.Visible=false; lbShow.Text=""; txtTime.Focus(); txtTime.Text=""; timer2.Enabled=false; } private void txtTime_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if(e.KeyChar=='\r') { if(this.txtTime.Text=="") return; Remainder=Convert.ToUInt32(txtTime.Text)*60; label2.Visible=true; txtEnd.Visible=true; label1.Text="开始时间"; timer1.Enabled=false; timer2.Enabled=true; this.button1.Focus(); } } private void timer2_Tick(object sender, System.EventArgs e) { txtEnd.Text=System.DateTime.Now.ToLongTimeString(); Remainder--; minute=Remainder/60; sencond=Remainder%60; if(sencond<10) { lbShow.Text="剩余时间:"+minute+"分0"+sencond+"秒"; } else { lbShow.Text="剩余时间:"+minute+"分"+sencond+"秒"; } if(Remainder==0) { timer2.Enabled=false; lbShow.Text+="---时间到。"; } } 刚才试了试,怎么不行呢?借LZ的帖子看下:直接拖一个Timer控件到Winform窗口下,然后设置”Tick“事件,在其中写处理方法,设置Timer控件的”Interval“属性为”1000“,不也就是一分钟吗?怎么不会触发事件。详细代码:public int examtime=40;Lable RemainingTime=new Lable();private void tmr_Tick(object sender, EventArgs e) { examtime--; RemainingTime.Text = examtime.ToString(); }怎么不会出现倒计时 知道了,忘了Start()了,不好意思 LZ这样做:private void tmr_Tick(object sender, EventArgs e) { examtime--; RemainingTime.Text = examtime.ToString(); if (examtime == 0) { tmr.Stop(); //强制执行XXX方法 } } private void Form3_Load(object sender, EventArgs e) { //lblsj.Text = n; timer1.Start(); examTime--; } int examTime = 1200; private void timer1_Tick(object sender, EventArgs e) { if (examTime > 0) { examTime--; lblsj.Text = string.Format("{0:00}:{1:00}", examTime / 60, examTime % 60); } else { timer1.Stop(); } }就这样 这个没什么吧 就是个全局变量 Timer事件中-1 求助:为什么random只进行了1次? 遍历两个数组,取出值的问题。。。泪奔中。 vs2008 刷新配置文件问题 用C#做开发有哪些不足? 我学C# 现在想买一本数据结构方面的书! c#中一个调试问题 求大神指教怎么让程序联网认证变成本地啊?? 怎样把DataGrid中数据导出成EXCEL。一定要C#的语言来写哈!!! C#能否作商务软件的开发! C#中 non thread-safe是如何导致 high CPU usage? 求助:想在foreach循环中实现一个功能 C# 如何在钩子中截取模拟的键盘输入
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace CountDown
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
tmr.Interval = 1000;
tmr.Tick += new EventHandler(tmr_Tick);
} private int start = 20; private Timer tmr = new Timer(); private void button1_Click(object sender, EventArgs e)
{
start = 20;
this.button1.Text = start.ToString();
tmr.Start();
} void tmr_Tick(object sender, EventArgs e)
{
this.button1.Text = (start -= 1).ToString(); if (start == 0) tmr.Stop();
}
}
}
{
txtStart.Text=System.DateTime.Now.ToLongTimeString();
} private void button1_Click(object sender, System.EventArgs e)
{
label1.Text="当前时间";
timer1.Enabled=true;
label2.Visible=false;
txtEnd.Visible=false;
lbShow.Text="";
txtTime.Focus();
txtTime.Text="";
timer2.Enabled=false;
} private void txtTime_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar=='\r')
{
if(this.txtTime.Text=="")
return;
Remainder=Convert.ToUInt32(txtTime.Text)*60;
label2.Visible=true;
txtEnd.Visible=true;
label1.Text="开始时间";
timer1.Enabled=false;
timer2.Enabled=true;
this.button1.Focus();
}
} private void timer2_Tick(object sender, System.EventArgs e)
{
txtEnd.Text=System.DateTime.Now.ToLongTimeString();
Remainder--;
minute=Remainder/60;
sencond=Remainder%60;
if(sencond<10)
{
lbShow.Text="剩余时间:"+minute+"分0"+sencond+"秒";
}
else
{
lbShow.Text="剩余时间:"+minute+"分"+sencond+"秒";
}
if(Remainder==0)
{
timer2.Enabled=false;
lbShow.Text+="---时间到。";
}
}
直接拖一个Timer控件到Winform窗口下,然后设置”Tick“事件,在其中写处理方法,设置Timer控件的”Interval“属性为”1000“,不也就是一分钟吗?怎么不会触发事件。详细代码:
public int examtime=40;
Lable RemainingTime=new Lable();
private void tmr_Tick(object sender, EventArgs e)
{
examtime--;
RemainingTime.Text = examtime.ToString();
}怎么不会出现倒计时
知道了,忘了Start()了,不好意思
private void tmr_Tick(object sender, EventArgs e)
{ examtime--;
RemainingTime.Text = examtime.ToString(); if (examtime == 0)
{
tmr.Stop();
//强制执行XXX方法
}
}
{
//lblsj.Text = n;
timer1.Start();
examTime--;
}
int examTime = 1200;
private void timer1_Tick(object sender, EventArgs e)
{
if (examTime > 0)
{
examTime--;
lblsj.Text = string.Format("{0:00}:{1:00}", examTime / 60, examTime % 60);
}
else
{
timer1.Stop();
}
}就这样