C_Sharp 板


LINE

功能需求: 设定一个T1值,未来要用来指定datatable的列数用,而读取的周期靠timer设 定,timer1.Interval越短则读资料频率越快, 因此先简单设定测试环境: 一个timer,用来设定频率 一个label,用来显示T1值 一个Button,用来控制timer开始与停止 程式码如下: public int T1 = 0; //T1初始值为0 private void button1_Click(object sender, EventArgs e) { if (button1.Text == "Stop") //暂停功能 { button1.Text = "Start"; timer1.Enabled = false; } else //开始功能 { InitializeTimer(); //初始化timer1设定 button1.Text = "Stop"; timer1.Enabled = true; } } private void InitializeTimer() // Call this procedure when the application starts. { timer1.Interval = 500; //时间间隔 timer1.Tick += new EventHandler(Timer1_Tick); //每过一个interval就呼叫一次事件 } private void Timer1_Tick(object Sender, EventArgs e) //处理每过一个timer1.Interval被呼叫的事件 { T1 ++; label1.Text = "T1值目前为:" + T1.ToString(); //每过一个interval, 会显示 0 1 2 3 .... } 现在遇到的问题是,当我第一次按下去之後,我的label 很正确的显示 0 1 2 3 ...,接 着我按暂停, 然後当我再度按下开始的时候, T++被重复载入了 , label会变成 5 7 9 ...,变成每 次加2 如果在暂停一次再开始,T++被重复载入第三次,label 12 15 18...,,变成每次加3 因为我需要即时检视目前加到多少,而这个T1值需要被储存,纪录目前累积的值, 而需要在tick发生时自动T1+1, 我尝试过把timer1.Tick += new EventHandler(Timer1_Tick); 从InitializeTimer()拉 出来到按开始钮的那边,还是一样的结果, 所以问题卡在一个很矛盾的地方,我需要timer帮我累加、即时显示,又不希望它记忆我 累加的方法(T++) 因此我想来想去实在想不到一个可以纪录、又正确即时显示,然後暂停过後不会重覆载入 T++的方法,还恳请版上高手解答了! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.133.70.53 ※ 编辑: ravelive 来自: 140.133.70.53 (08/20 16:41) ※ 编辑: ravelive 来自: 140.133.70.53 (08/20 16:44)
1F:→ elba:InitializeTimer()移到Form_Load里 08/20 17:25
2F:推 TeemingVoid:请用 -= 拆除,例如: 08/20 17:28
3F:→ TeemingVoid:timer1.Tick -= new EventHandler(Timer1_Tick); 08/20 17:29
4F:→ ravelive:elba大正解,刚在别的地方找到答案,回来发现这边也有^^ 08/20 18:25
经好心人提示,找到解决办法了,在此提供答案: InitializeTimer();这条移到form1下只宣告一次, public Form1() { InitializeComponent(); InitializeTimer(); } 并且要将初始值改为: private void InitializeTimer() //处理每一个timer实作的属性栏位 // Call this procedure when the application starts. { timer1.Interval = 100; //时间间隔: 1000代表一秒 timer1.Enabled = false; //一开始要是false,不然一执行马上就开始跑值 timer1.Tick += new EventHandler(Timer1_Tick); } 并且把事件修改为: public void Timer1_Tick(object Sender, EventArgs e) //处理每过一个 timer1.Interval被呼叫的事件 { T1 ++; label4.Text = "T1值目前为:" + T1.ToString(); } 如此就可以正常跑了!! 原来我想破头都想不出所以然的症结, 原来是发生在初始化上。 ※ 编辑: ravelive 来自: 140.133.70.53 (08/20 18:26)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP