c#winform多个timer相互有影响吗
我有三个time一个是显示当前时间到label(这个是在form1界面上的)另外两个在form2界面(form1点了确定会弹出form2,但是form1并不会关闭,for...
我有三个time 一个是显示当前时间到label(这个是在form1界面上的)另外两个在form2 界面 (form1点了确定会弹出form2,但是form1并不会关闭,form1是全屏的,form2居中,还是可以看到form1上的时间)现在有个问题,其他两个time 一个是60秒txetbox为空就关闭form2,另一个是给lable显示60秒倒计时,但是显示倒计时那个明显慢于其他两个time 大概1分钟慢了20秒
贴一下那个慢的time的程序
private void timer3_Tick(object sender, EventArgs e)
{
scss = scss-1;
label1.Text = scss.ToString();
}
private void Form2_Load(object sender, EventArgs e)
{
timer3.Start();//这个是给lable赋值倒计时的
timer1.Start();//这个time1并不是form1的time1,是对textbox判断非空并进行下一步
timer2.Start();//这个是60秒判断为空就关闭form2
}
就是 55 明显慢于右下角的时间 ,右下角时间过了一分钟里面那个界面(form2)就会关闭
和form2 的time2关闭计时器时间一样 展开
贴一下那个慢的time的程序
private void timer3_Tick(object sender, EventArgs e)
{
scss = scss-1;
label1.Text = scss.ToString();
}
private void Form2_Load(object sender, EventArgs e)
{
timer3.Start();//这个是给lable赋值倒计时的
timer1.Start();//这个time1并不是form1的time1,是对textbox判断非空并进行下一步
timer2.Start();//这个是60秒判断为空就关闭form2
}
就是 55 明显慢于右下角的时间 ,右下角时间过了一分钟里面那个界面(form2)就会关闭
和form2 的time2关闭计时器时间一样 展开
2个回答
展开全部
timer本身有个精度问题,所以不能指望你设1000它就是一秒,象timer3中你的显示什么的本身也会占用时间,这些综合起来你就不能再用scss=scss-1(或者写作scss--)这种,在表示倒计时的时候就应该用当前时间与起始时间的差值来计算,也就类似于如下
先在form2里加个变量
DateTime beginTime = DateTime.Now;
//timer3的时间可以设小一点,比如100
private void timer3_Tick(object sender, EventArgs e)
{
scss = 60 - (int)((DateTime.Now - beginTime).TotalSeconds);
label1.Text = scss.ToString();
if(scss<=0)
{
if (textBox1.Text.Trim() == "") this.Close();//如果到时为空就关闭
else
{
timer3.Stop();
//做其它的事
}
}
}
至于你上面的timer1和timer2,没看出有什么存在的必要
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询