CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

一个很简单的问题,100分相送,马上揭贴

楼主szjb1(asdf中文)2005-11-18 11:49:34 在 .NET技术 / C# 提问

我做了一个进度条,希望在到100%的时候提示时间到,但是进入了死循环,请解答  
   
  //进度条  
  private   void   button4_Click(object   sender,   System.EventArgs   e)  
  {  
  System.Timers.Timer   aTimer   =   new   System.Timers.Timer(1000);  
  aTimer.Elapsed+=new   System.Timers.ElapsedEventHandler(aTimer_Elapsed);  
  //   Only   raise   the   event   the   first   time   Interval   elapses.  
  aTimer.AutoReset   =   true;  
  aTimer.Enabled   =   true;  
  }  
   
  private   void   aTimer_Elapsed(object   sender,   System.Timers.ElapsedEventArgs   e)  
  {  
  if(Bar1.Value<100)  
  {  
  Bar1.Value++;  
  label1.Text=Bar1.Value.ToString()+"%";  
  }  
  else  
  {  
  MessageBox.Show("时间到");  
  return;  
  }  
  } 问题点数:100、回复次数:13Top

1 楼ld_thinking(懒得想)回复于 2005-11-18 11:50:59 得分 0

aTimer.AutoReset   =   true;  
  ????Top

2 楼jinjazz(近身剪)回复于 2005-11-18 11:55:02 得分 2

AutoReset   ?Top

3 楼petereggplant()回复于 2005-11-18 11:59:50 得分 2

AutoReset设为False应该就可以了,true的话它每过一个interval都会触发事件的.false以后只会触发一次.Top

4 楼petereggplant()回复于 2005-11-18 12:02:29 得分 2

哦,不对,不是AutoReset的问题,我觉得可能是因为你没有timer的Close函数,所以他一直在check进度条的进度,到了满的时候就一直check,所以就死循环了,在完成messagebox以后调用Close函数就可以了Top

5 楼s5689412(华君)回复于 2005-11-18 12:03:45 得分 10

AutoReset为true是对的,没有问题。  
   
  Timer.AutoReset   属性     [C#]请参见  
  Timer   类   |   Timer   成员   |   System.Timers   命名空间   |   Interval   |   Enabled   |   Start   |   Elapsed   |   Timer   成员(Visual   J#   语法)   |   C++   托管扩展编程    
  要求  
  平台:   Windows   98,   Windows   NT   4.0,   Windows   ME,   Windows   2000,   Windows   XP   Home   Edition,   Windows   XP   Professional,   Windows   Server   2003   系列  
  语言  
  C#  
   
  C++  
   
  JScript  
   
  Visual   Basic  
   
  全部显示  
  获取或设置一个值,该值指示   Timer   是应在每次指定的间隔结束时引发   Elapsed   事件,还是仅在指定的间隔第一次结束后引发该事件。  
   
  [Visual   Basic]  
  Public   Property   AutoReset   As   Boolean  
   
  [C#]  
  public   bool   AutoReset   {get;   set;}  
   
  [C++]  
  public:   __property   bool   get_AutoReset();  
  public:   __property   void   set_AutoReset(bool);  
   
  [JScript]  
  public   function   get   AutoReset()   :   Boolean;  
  public   function   set   AutoReset(Boolean);  
   
  属性值  
  如果   Timer   应在每次间隔结束时引发   Elapsed   事件,则为   true;如果它仅在间隔第一次结束后引发一次   Elapsed   事件,则为   false。默认为   true。  
   
  备注  
  如果调用   Start   方法时已经启用   Timer,则重置间隔。如果   AutoReset   为   false,则必须调用   Start   方法才能再次开始计数。  
   
  重置间隔会影响引发   Elapsed   事件的时间。例如,如果将间隔设置为   5   秒,然后将   Enabled   属性设置为   true,则计数将在设置   Enabled   时开始。如果在计数为   3   秒时将间隔重置为   10   秒,则   Elapsed   事件在   Enabled   属性设置为   true   的   13   秒之后第一次引发。  
   
  我觉得问题在判断到Bar1.Value>=100之后应该关闭Timer,否则Timer会一直持续下去。  
  应该修改这里:  
  else  
  {  
  aTimer.Enabled   =   false;  
  MessageBox.Show("时间到");  
  return;  
  }Top

6 楼noodle2005(wangf)回复于 2005-11-18 12:04:26 得分 2

楼上正解Top

7 楼happycharles()回复于 2005-11-18 12:38:30 得分 2

嗯,关闭TimerTop

8 楼hexinyu2005(还需努力)回复于 2005-11-18 13:37:37 得分 80

private   void   aTimer_Elapsed(object   sender,   System.Timers.ElapsedEventArgs   e)  
  {  
  if(Bar1.Value<100)  
  {  
  Bar1.Value++;  
  label1.Text=Bar1.Value.ToString()+"%";  
  }  
  else  
  {  
  aTimer.Enabled=false;  
  MessageBox.Show("时间到");  
  return;  
  }  
  }Top

9 楼s5689412(华君)回复于 2005-11-18 14:18:46 得分 0

testTop

10 楼s5689412(华君)回复于 2005-11-18 14:25:11 得分 0

现在结贴了之后还可以发贴啊,顺便来发个牢骚,明明我先回答的,结果看来还是不敌尽是代码的回答啊,白打那么多字了,气愤中......Top

11 楼jinjazz(近身剪)回复于 2005-11-18 14:26:44 得分 0

to楼上,习惯就好了^&^Top

12 楼ld_thinking(懒得想)回复于 2005-11-18 14:30:11 得分 0

哈哈       沙发不值钱了...-_-Top

13 楼happycharles()回复于 2005-11-19 20:02:35 得分 0

你写太多了,搂主可能没看到。。Top

相关问题

  • 新手提问,简单问题,在线等,马上揭贴
  • 很简单,TdxPrintStyleManager 属于哪个组件?马上揭贴!
  • 求一SQL语句!急,解决马上揭贴(简单的update)
  • 家帮忙,一个JS的简单问题:)解决马上揭贴
  • 在线等!!!!!!!!!关于属性的.很简单解决了马上揭贴.
  • 简单询问,马上结贴!
  • 简单问题,马上结贴!
  • 简单问题,马上结贴
  • 一个简单问题,马上结贴!!!
  • 一个简单问题,马上结贴!!!

关键词

  • atimer
  • timers
  • elapsed
  • object sender

得分解答快速导航

  • 帖主:szjb1
  • jinjazz
  • petereggplant
  • petereggplant
  • s5689412
  • noodle2005
  • happycharles
  • hexinyu2005

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo