问:如何关闭 timer 控件 ? 难道不是 设置 Enable = false 么, 又添加了 stop()也还是不行??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 timer控件有3种,你只的是那种?关闭不代表立刻终止当前的执行,如果有消息队列里等待执行的任务,一样还是要执行的。 我那只是, 从工具箱里直接拖出来的, Windows.Forms.Timer表述有问题, 我是想终止当前的执行 另, 补充一下, 之前使用 button 控制 timer 的执行, 能正常使用, 这次是, 把 Enable = false, 放在他自身的间隔事件里, 然后一直执行 自答一下哈, 关于终止 timer 的执行操作的:原来的程序为: private void timer1_Tick(object sender, EventArgs e) { time--; if (time >= 0) { this.lblTip.Text = "Time: " + time.ToString("00"); } else { string msg = "在这一分钟时间内, 你已经成功滴获得了" + winCnt + "个苹果"; MessageBox.Show(msg); this.timer1.Enabled = false; //已经设置为 false了, 为什么还能执行, 对话框一直在显示???? this.timer1.Stop(); } }后来, 度到 http://blog.csdn.net/cuijianwei74/article/details/1353487, 才意识到 是位置写错了,更正为: this.timer1.Enabled = false; MessageBox.Show(msg);放到前面就不会弹出多余的对话框?? 这不都一样么????还有, 关于一楼 的 3 中对话框,(这个真心不知道, 惭愧呀、、、、、)搜了一下, http://blog.csdn.net/bestgonghuibin/article/details/6532928http://www.cnblogs.com/firstyi/archive/2008/01/21/1047355.html 有很多关于这方面的介绍, 还涉及到线程的一些知识。。。 想不到,学了这么长时间, 还是这么无知。标记下, 明天继续! timer是无法到自身的事件中停止的,以前我试过了。 你那个对话框没关,就没执行后面的代码,所有timer还是会执行, MessageBox.Show(msg); 阻塞住主线程了。点击确定按钮后就应该停住了吧。 原来是这样子的呀! 多谢了哈这个timer 的时间间隔是 1s, 当时那个对话框就哗啦地出现一大片,我真是一下就慌乱了, 而且也绝对没有想到是这个问题 。。眼看这都月底了, 好笑。。 this.timer1.Enabled = false; 把这句去掉增加一个方法 public void ShowInfo(string message) { while (this.timer.Enabled == true) ; MessageBox.Show(message); }在stop之后调用this.timer1.Stop();this.ShowInfo(message); [求助]数据表导出XML(在线等) 如何获取一个对象所占用的内存空间 感觉F#版块应该出现了,因为VS2010 RC已经问世了! 再问高手,如何删除一个记录集的某条记录? [提问+挑战]Access数据互导问题 不同窗口共享数据 如何作一个启动的窗体呢? 获取某个文件的版本信息后,如何释放对该文件使用. 请问托盘中的图标怎样才能向QQ有信息一样动态闪动 webservice能做聊天程序吗? 有懂BACnet协议的朋友么? C#的SendKeys有时不灵
关闭不代表立刻终止当前的执行,如果有消息队列里等待执行的任务,一样还是要执行的。
我那只是, 从工具箱里直接拖出来的, Windows.Forms.Timer表述有问题, 我是想终止当前的执行
这次是, 把 Enable = false, 放在他自身的间隔事件里, 然后一直执行
原来的程序为: private void timer1_Tick(object sender, EventArgs e)
{
time--;
if (time >= 0)
{
this.lblTip.Text = "Time: " + time.ToString("00");
}
else
{
string msg = "在这一分钟时间内, 你已经成功滴获得了" + winCnt + "个苹果";
MessageBox.Show(msg);
this.timer1.Enabled = false; //已经设置为 false了, 为什么还能执行, 对话框一直在显示????
this.timer1.Stop();
}
}
后来, 度到 http://blog.csdn.net/cuijianwei74/article/details/1353487, 才意识到 是位置写错了,更正为: this.timer1.Enabled = false;
MessageBox.Show(msg);放到前面就不会弹出多余的对话框?? 这不都一样么????还有, 关于一楼 的 3 中对话框,(这个真心不知道, 惭愧呀、、、、、)
搜了一下,
http://blog.csdn.net/bestgonghuibin/article/details/6532928
http://www.cnblogs.com/firstyi/archive/2008/01/21/1047355.html
有很多关于这方面的介绍, 还涉及到线程的一些知识。
。。 想不到,学了这么长时间, 还是这么无知。
标记下, 明天继续!
你那个对话框没关,就没执行后面的代码,所有timer还是会执行,
原来是这样子的呀! 多谢了哈这个timer 的时间间隔是 1s, 当时那个对话框就哗啦地出现一大片,我真是一下就慌乱了, 而且也绝对没有想到是这个问题 。。眼看这都月底了, 好笑。。
增加一个方法
public void ShowInfo(string message)
{
while (this.timer.Enabled == true) ;
MessageBox.Show(message);
}在stop之后调用
this.timer1.Stop();
this.ShowInfo(message);