winfrom的thread.sleep()的问题 现在有A,B,C,D,E五个窗体,A窗体为父窗体,A中含有两个timer1和timer2个,timer1来控制b,c,d,e的循环,timer2用来时间倒计时,在b,c,d循环到一定次数,e窗体出现,想让e窗体停留的时间延长一些,我将thread.sleep()写在在e的代码中,页面是不东了,但倒计时已经在背后开始了,要是写在a中,没有效果!我该怎么写!请指教? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我给你提取一下你的需求:form1中有一个timer1timer1中有new form2.Show();form2中有time2倒计时。timer2中有this.Close();现在你想延长temer2的interval对吧??? 不,我在A中利用timer1的timer1_Tick使b,c,d,e循环当循环到e的时候 我想延长e的时间,timer2也是在A中,他的作用是进行倒计时的! BackgroundWorker组件介绍(属性、方法、事件)http://blog.csdn.net/yunhaiC/archive/2009/07/08/4331943.aspx用一下这个试试看还有你的问题可以让看延时通断电路,呵呵! timer1来控制b,c,d,e的循环?你的意思是依次轮流让对应的窗体显示指定的时间?你是怎么确定不同窗体具体的显示时间的?你如何显示那四个窗体?另外timer控件本身基于线程,这个地方再用sleep不好吧? b,c,d,e的显示时间是相同的!我将A作为父窗体,其余的窗体为其子窗体, private void timer1_Tick(object sender, EventArgs e) { foreach (Form f in this.MdiChildren) { if (f.Name == "B") { try { this.ActiveMdiChild.Close(); } catch { } if (jishu == (returnjiange()-1)) { E w = new E(); w.MdiParent = this; w.Show(); } else { C w = new C(); w.MdiParent = this; w.Show(); } jishu++; } else if (f.Name == "C") { try { this.ActiveMdiChild.Close(); } catch { } if (jishu == (returnjiange()-1)) { E w = new E(); w.MdiParent = this; w.Show(); } else { D w = new D(); w.MdiParent = this; w.Show(); } jishu++; } else if (f.Name == "D")如此继续下去,在A的pageload中直接打开B,并设置timer1开始 你把控制E窗体显示时间长度的变量设得比B、C、D长一点不就行了吗? 你说time2是倒计时的,是不是用它来控制各窗体的显示时间?如果是的话你把它的代码贴出来看一下吧?另外你说要循环到一定次次数后才显示E,这个次数是不是10楼的代码中jishu?returnjiange()是干什么的?我还想知道代码中的if(f.name="E")时的代码! timer2只是一个倒计时的 他A中显示倒计时,其余的都是a的子窗体,循环到一定次次数后才显示E就是jishu达到一定次数,returnjiange()是用来判断jishu是否达到次数,if(f.name="E")时的代码!中代码基本同上给你贴出来else if (f.Name == "E") { try { this.ActiveMdiChild.Close(); } catch { } B w = new B(); w.MdiParent = this; w.Show(); sdr = add.GetSet("where Bz='间隔时间'"); uint jgTime = 0; if (sdr.Read()) { jgTime = Convert.ToUInt32(sdr["DjMoney"].ToString()); } sdr.Close(); sdr = null; this.timer2.Interval = 1000;//倒计时使用 Remainder = jgTime * 60;//倒计时使用 this.timer2.Enabled = true;//倒计时使用 } C# byte[]分割的问题 去掉字符串内的所有空格怎么做? 如何通过WebService上传更新到远程的Oracle 数据库中的数据? 把DataTable数据导出到excel如何控制格式 如何获得listbox指定Item中的值; 怎样才能节约内存? 请问 什么是C#的自动双缓冲功能,最好有详细介绍 谢谢 如何在关闭一个窗体时显示另一个窗体?(原窗体关闭,只留下新窗体) C#如何执行一个外部的exe文件? 怎样打印输出,以及打印预揽 C#中关于接口的使用 Dictionary 或者 arraylist
form1中有一个timer1
timer1中有new form2.Show();
form2中有time2倒计时。
timer2中有this.Close();
现在你想延长temer2的interval
对吧???
http://blog.csdn.net/yunhaiC/archive/2009/07/08/4331943.aspx
用一下这个试试看还有你的问题可以让看延时通断电路,呵呵!
timer1来控制b,c,d,e的循环?你的意思是依次轮流让对应的窗体显示指定的时间?你是怎么确定不同窗体具体的显示时间的?你如何显示那四个窗体?另外timer控件本身基于线程,这个地方再用sleep不好吧?
我将A作为父窗体,其余的窗体为其子窗体, private void timer1_Tick(object sender, EventArgs e)
{
foreach (Form f in this.MdiChildren)
{
if (f.Name == "B")
{
try
{
this.ActiveMdiChild.Close();
}
catch { }
if (jishu == (returnjiange()-1))
{
E w = new E();
w.MdiParent = this;
w.Show();
}
else
{
C w = new C();
w.MdiParent = this;
w.Show();
}
jishu++;
}
else if (f.Name == "C")
{
try
{
this.ActiveMdiChild.Close();
}
catch { }
if (jishu == (returnjiange()-1))
{
E w = new E();
w.MdiParent = this;
w.Show();
}
else
{
D w = new D();
w.MdiParent = this; w.Show();
}
jishu++;
}
else if (f.Name == "D")
如此继续下去,在A的pageload中直接打开B,并设置timer1开始
另外你说要循环到一定次次数后才显示E,这个次数是不是10楼的代码中jishu?returnjiange()是干什么的?
我还想知道代码中的if(f.name="E")时的代码!
循环到一定次次数后才显示E就是jishu达到一定次数,returnjiange()是用来判断jishu是否达到次数,
if(f.name="E")时的代码!中代码基本同上
给你贴出来
else if (f.Name == "E")
{
try
{
this.ActiveMdiChild.Close();
}
catch { }
B w = new B();
w.MdiParent = this;
w.Show();
sdr = add.GetSet("where Bz='间隔时间'");
uint jgTime = 0;
if (sdr.Read())
{
jgTime = Convert.ToUInt32(sdr["DjMoney"].ToString());
}
sdr.Close();
sdr = null;
this.timer2.Interval = 1000;//倒计时使用
Remainder = jgTime * 60;//倒计时使用
this.timer2.Enabled = true;//倒计时使用
}