C#进度条的问题

privatevoidForm3_Load(objectsender,EventArgse){this.progressBar1.Enabled=true;this.pr... private void Form3_Load(object sender, EventArgs e)

{
this.progressBar1.Enabled = true;
this.progressBar1.Value = 0;
this.progressBar1.Maximum = 100;
this.progressBar1.Minimum = 0;
this.progressBar1.Step = 50;
this.timer1.Enabled = true;
this.timer1.Start();
}
private void timer1_Tick_1(object sender, EventArgs e)
{
if (this.progressBar1.Value< 100)
this.progressBar1.Value = this.progressBar1.Value + 20;
if (this.progressBar1.Value == 100)
{
timer1.Enabled = false;
Form4 form4 = new Form4();
form4.Show();
this.Hide();
}
}

}
为什么进度条还没有读完,就show form4 了
应当怎么改
展开
 我来答
司琅0Iid5b
2010-11-18 · TA获得超过802个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:618万
展开全部
你好,之所以我们看到“进度条还没有读完”,是因为在form3界面将progressbar绘制成进度为100的操作,几乎同this.hide()同时进行,这样用户的感觉就是进度条还没有“读完”。解决方法是:我们增加一个标记成员。
代码如下:

private bool m_loadCompleted = false; // 标记字段
private void Form3_Load(object sender, EventArgs e)

{
this.progressBar1.Enabled = true;
this.progressBar1.Value = 0;
this.progressBar1.Maximum = 100;
this.progressBar1.Minimum = 0;
this.progressBar1.Step = 50;
this.timer1.Enabled = true;
this.timer1.Start();
}

private void timer1_Tick_1(object sender, EventArgs e)
{
if (m_loadCompleted)
{
timer1.Enabled = false;
Form4 form4 = new Form4();
form4.Show();
this.Hide();
}
if (this.progressBar1.Value < 100)
this.progressBar1.Value = this.progressBar1.Value + 20;
if (this.progressBar1.Value == 100)
{
m_loadCompleted = true;
this.timer1.Interval = 300;
return;
}

}

这样用户就能够很清楚的看到进度条满了后,才进入form4窗体。
话梅味的糖
2010-11-18 · TA获得超过161个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:124万
展开全部
程序没有任何问题value到100,触发show form4 只是进度条还没有走完,这个不是程序的错,是你机器配置的问题,响应速度没法跟上值的变化速度,TimerTick事件默认是100毫秒执行一次,也就是0.1秒,这个速度太快了,你将Timer的执行速度放慢 this.timer1.Interval = 1000; 这样的话效果会明显一些
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式