□自动循环发送 [手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]如果我勾选“自动循环发送,就开始执行第一排的,手动发送(Button1),然后等待10秒,执行第一排的开始计算(Button2)然后再执行第二排的手动发送(Button5),等待10秒,执行第二排的开始计算(Button6)一直到执行完第7排的开始计算然后又返回。从第一排开始,一直循环。。去掉勾选“自动循环发送”。。此功能就取消
我问过一次了。希望能贴出贴出完整版的代码。和步骤。谢谢大侠
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]
[手动发送] [开始计算]如果我勾选“自动循环发送,就开始执行第一排的,手动发送(Button1),然后等待10秒,执行第一排的开始计算(Button2)然后再执行第二排的手动发送(Button5),等待10秒,执行第二排的开始计算(Button6)一直到执行完第7排的开始计算然后又返回。从第一排开始,一直循环。。去掉勾选“自动循环发送”。。此功能就取消
我问过一次了。希望能贴出贴出完整版的代码。和步骤。谢谢大侠
解决方案 »
- 急啊!请问一下怎么在picturebox里面画图前刷新picturebox?
- 关于DatagridView用法 VS2005(C# .net)
- C# 如何获得远程主机的IP地址和主机上的时间呢?求方法
- sizeof 与 Marshal.SizeOf 区别 什么是托管内存,什么是非托管内存
- 错误信息捕获
- 如何在A4纸上正确打印出图像
- DECIMAL转成DOUBLE
- 请问用C#如何实现更换系统壁纸与屏保,正解另开帖给分100,顶者有分!
- dataGrid内容清空
- C#编写Windows Service
- C#调用C++生成的DLL时,托管的 PInvoke 签名与非托管的目标签名不匹配
- 小弟遇到急切难题。。。万望各位大大救命!
用个timer10秒执行一次方法循环页面button累加就是了
Timer的事件代码如下:
switch(i)
{
case 1:
button1.PerformClick();
break;
case 2:
.
.
.
caes 7:
btuuon7.PerformClick();
}
i++;
if(i == 8) i = 1;
private void timer2_Tick(object sender, EventArgs e)
{
int i = 1;
if (checkBox_AutoSend.Checked == true)
{
switch(i)
{
case 1:
btn_Send.PerformClick(); //第一行手动发送
break;
case 2:
button11.PerformClick(); //第一行自动计算
button12.PerformClick(); //第二行手动发送
break;
case 3:
button10.PerformClick(); //第二行自动计算
button14.PerformClick(); //第三行手动发送
break;
case 4:
button13.PerformClick(); //第三行自动计算
button18.PerformClick(); //第四行手动发送
break;
case 5:
button17.PerformClick(); //第四行自动计算
button16.PerformClick(); //第五行手动发送
break;
case 6:
button15.PerformClick(); //第五行自动计算
button9.PerformClick(); //第六行手动发送
break;
case 7:
button6.PerformClick(); //第六行自动计算
button20.PerformClick(); //第七行手动发送
break;
case 8:
button19.PerformClick(); //第七行自动计算
break;
}
i++;
if(i == 8) i = 1;
} }
请问这样写是对的么?
其中的
if(i == 8) i = 1;
最好改为
if(i >= 8) i = 1;
这是良好的编码习惯,避免在干扰或程序出错的时候能够迅速纠正。2.
if (checkBox_AutoSend.Checked == true)
这个判断可以省略,在选中checkBox_AutoSend的时候设置timer2.Enabled=true; 禁止的时候设置为false;3.
int i = 1;中的i应该设置为全局变量,否则每进入一次都会把i置为1,从而无法执行其他Button的运算4.
我不知道你的初始化过程,case 1和case 8应该可以合为一个。5.
作为良好的编码习惯,switch中应该加上default,不满足条件立即纠正。
其中的
if(i == 8) i = 1;
最好改为
if(i >= 8) i = 1;
这是良好的编码习惯,保证在干扰或程序出错的时候能够迅速纠正。
case 8:
button19.PerformClick(); //第七行自动计算
button22.PerformClick(); //保存计算结果好像没有运行。。BUTTON22中我故意写错。然后记录成文本。。可是文本中没有记录,应该是没有执行下去
你看看我代码。是不是需要修改
switch(DataHelper.xh)
{
case 1:
btn_Send.PerformClick(); //第一行手动发送
break;
case 2:
button11.PerformClick(); //第一行自动计算
button12.PerformClick(); //第二行手动发送
break;
case 3:
button10.PerformClick(); //第二行自动计算
button14.PerformClick(); //第三行手动发送
break;
case 4:
button13.PerformClick(); //第三行自动计算
button18.PerformClick(); //第四行手动发送
break;
case 5:
button17.PerformClick(); //第四行自动计算
button16.PerformClick(); //第五行手动发送
break;
case 6:
button15.PerformClick(); //第五行自动计算
button9.PerformClick(); //第六行手动发送
break;
case 7:
button6.PerformClick(); //第六行自动计算
button20.PerformClick(); //第七行手动发送
break;
//到case8这里就没执行下去了错误日志没有记录了
case 8:
button19.PerformClick(); //第七行自动计算
button22.PerformClick(); //计算结果写入数据库
break;
}
DataHelper.xh++;
if (DataHelper.xh >= 8) DataHelper.xh = 1; //到case8这里就没执行下去了错误日志没有记录了
Button[] buttons = {this.Button1, this.Button2, ...., this.Button14};
//记录当前按钮的索引
int index = 0;private void timer_Tick(object sender, EventArgs e)
{
buttons[index].PerformClick();
index++;
if (index == buttons.Length) index = 0;
}
这里,当timer第二次或者第二次以后激活时,将继续上一次所执行到的按钮。
若需要重新从第一个开始,则在取消timer激活的时候设置index = 0即可。
Button[] buttons = {this.Button1, this.Button2, ...., this.Button14};
//记录当前按钮的索引
int index = 0;private void timer_Tick(object sender, EventArgs e)
{
buttons[index++].PerformClick();
buttons[index++].PerformClick();
if (index >= buttons.Length) index = 0;
}
{
buttons[index++].PerformClick();
if (index > 0 || index < buttons.Length)
buttons[index++].PerformClick();
if (index >= buttons.Length)
index = 0;
}