win form怎么实现倒计时? 怎么在一个lable中实现一个数字(每隔一秒数字减1)或者是一个时间的倒计时 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 timer()//事件,设成1000ms{int a,b;a=10;b=0;b--;if(b==-1){b=59;a--}lable1.text=a.ToString()+":"+b.ToString();} 不是有定时器控件吗?设置定时器interval 为一秒,在timer事件里改写lable值 http://hi.baidu.com/wqk1025/blog/item/742770c74f3f54d9d1006094.html 一个简单的例子private void Form1_Load(object sender, EventArgs e){ timer1.Interval = 1000; timer1.Start();}DateTime dst = new DateTime(2009, 1, 1);TimeSpan ts;private void timer1_Tick(object sender, EventArgs e){ ts = dst - DateTime.Now; label1.Text = "距离年元旦还有:" + ts.Days + "天" + ts.Hours + "小时" + ts.Minutes + "分" + ts.Seconds + "秒";} 定义一个变量 给她个初始值 然后用TIMER控件或者THREAD都可以的 每一秒执行一次 不就++或--的操作么..如果是当前时间的话..这样就不行了,因为每59秒要进位和清空 private int a=10;//定时的分数 private int b=0;//定时的秒数 private void timer1_Tick(object sender, EventArgs e) { b--; if (b == -1) { b = 59; a--; if (a < 0) { timer1.Enabled = false; MessageBox.Show("时间到"); return; } } label1.Text = a.ToString() + ":" + b.ToString(); }送佛送到西吧,给你放到VS里调试过了这个别忘记设置interval=1000就行了 我想要的结果就像我们在用shutdown -s -t关机时,弹出一个警告框,说系统将在什么时间关机,而我现在就卡在了,已经得到这个倒计时的时间,可怎么让它随着时间-1这个数字也-1给我个简单的代码吧 private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) { CheckForIllegalCrossThreadCalls = false; int i =(int) Convert.ToDateTime("2008-10-01 00:00:00").Subtract(DateTime.Now).TotalSeconds; label1.Text = "距2008年10月1日还有:" + i.ToString() + "秒"; } private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer aTimer = new System.Timers.Timer(40); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); aTimer.Enabled = true; } 你想要前面加个负号? "-"+I.TOSTRING(); 或者用连接的方法 为什么一楼的只能到10:59 因为她的初始值你自己看看啊 要写具体 就再添加一个参数 范围 到24小时 以此类推 需要更久就继续添加变量 具体代码参考1楼足够了 不就是变量的使用吗.. 谢谢楼上各位了,也许自己愚钝,你们贴的代码我都试了,可以,通过了我本来想的是通过线程来做的,得到的一个时间差,通过timers来实现,那么我的想法有错吗是否可以通过线程来完成啊 namespace WindowsFormsApplication11{ public partial class Form1 : Form { DateTime EndTime, BackTime; public Form1() { InitializeComponent(); EndTime = DateTime.Now; // BackTime = EndTime.AddHours(1); // 1小时后关机 // BackTime = EndTime.AddSeconds(30); // 30秒后关机 BackTime = EndTime.AddMinutes(1); // 1分钟后关机 } private void timer1_Tick(object sender, EventArgs e) { TimeSpan TS = BackTime - EndTime; if (TS.TotalSeconds == 0) { MessageBox.Show("关机了!"); // 关机... } BackTime = BackTime.AddSeconds(-1); label1.Text = (BackTime - EndTime).ToString(); } }} if (TS.TotalSeconds == 0) { MessageBox.Show("关机了!");忘了要加timer1.Enabled=false; // 关机... } 是否可以通过线程来完成啊--------------------线程当然也可以,但这个线程的循环你怎么控件,不也是要间隔一定的时候循环一次吗?还不如使用Timer更直接。 在线程里处理的话,可以用通过delay或sleep来控制时间间隔. timer控件本身就是一条新的线程。像这种计时的任务,大家的第一反应都是用timer自己写线程来实现当然也行 关于media player 的相关问题 关于获取控件名,然后通过控件名修改控件属性的问题!! sql连接问题 字符串转换 datatable 在数据库表更新之后,datatable数据更新应该如何做?? Intersect()方法失灵了...我超级无语 C# 关于控件重绘问题 不解.net 的winform应用程序, 为什么要安装framework 为啥VS2008里没有DataContractJsonSerializer类? Checkbox的enable属性 开心网,校内网上msn,qq,国内门户网站邮件地址簿通讯录导入 如何实现的? listView问题
{
int a,b;
a=10;b=0;
b--;
if(b==-1)
{
b=59;
a--
}
lable1.text=a.ToString()+":"+b.ToString();
}
设置定时器interval 为一秒,在timer事件里改写lable值
{
timer1.Interval = 1000;
timer1.Start();
}
DateTime dst = new DateTime(2009, 1, 1);
TimeSpan ts;
private void timer1_Tick(object sender, EventArgs e)
{
ts = dst - DateTime.Now;
label1.Text = "距离年元旦还有:" + ts.Days + "天" + ts.Hours + "小时" + ts.Minutes + "分" + ts.Seconds + "秒";
}
然后用TIMER控件或者THREAD都可以的 每一秒执行一次
不就++或--的操作么..
如果是当前时间的话..这样就不行了,因为每59秒要进位和清空
private int b=0;//定时的秒数
private void timer1_Tick(object sender, EventArgs e)
{
b--;
if (b == -1)
{
b = 59;
a--;
if (a < 0)
{
timer1.Enabled = false;
MessageBox.Show("时间到");
return;
}
}
label1.Text = a.ToString() + ":" + b.ToString();
}
送佛送到西吧,给你放到VS里调试过了这个
别忘记设置interval=1000就行了
而我现在就卡在了,已经得到这个倒计时的时间,可怎么让它随着时间-1这个数字也-1
给我个简单的代码吧
{
CheckForIllegalCrossThreadCalls = false;
int i =(int) Convert.ToDateTime("2008-10-01 00:00:00").Subtract(DateTime.Now).TotalSeconds;
label1.Text = "距2008年10月1日还有:" + i.ToString() + "秒";
} private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer aTimer = new System.Timers.Timer(40);
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = true;
}
"-"+I.TOSTRING();
或者用连接的方法
为什么一楼的只能到10:59
因为她的初始值你自己看看啊 要写具体 就再添加一个参数
范围 到24小时 以此类推
需要更久就继续添加变量 具体代码参考1楼足够了
不就是变量的使用吗..
我本来想的是通过线程来做的,得到的一个时间差,通过timers来实现,那么我的想法有错吗
是否可以通过线程来完成啊
namespace WindowsFormsApplication11
{
public partial class Form1 : Form
{
DateTime EndTime, BackTime;
public Form1()
{
InitializeComponent();
EndTime = DateTime.Now; // BackTime = EndTime.AddHours(1); // 1小时后关机
// BackTime = EndTime.AddSeconds(30); // 30秒后关机 BackTime = EndTime.AddMinutes(1); // 1分钟后关机
} private void timer1_Tick(object sender, EventArgs e)
{
TimeSpan TS = BackTime - EndTime;
if (TS.TotalSeconds == 0)
{
MessageBox.Show("关机了!");
// 关机...
}
BackTime = BackTime.AddSeconds(-1);
label1.Text = (BackTime - EndTime).ToString();
}
}
}
{
MessageBox.Show("关机了!");
忘了要加
timer1.Enabled=false;
// 关机...
}
--------------------
线程当然也可以,但这个线程的循环你怎么控件,不也是要间隔一定的时候循环一次吗?还不如使用Timer更直接。
timer控件本身就是一条新的线程。
像这种计时的任务,大家的第一反应都是用timer自己写线程来实现当然也行