C#中进度条使用 30
我们经常遇到打开一个应用程序或从网上下载东西,都会有一个进度条显示当前进度,这个东西是怎么判断的,如何实现的?...
我们经常遇到打开一个应用程序或从网上下载东西,都会有一个进度条显示当前进度,这个东西是怎么判断的,如何实现的?
展开
6个回答
展开全部
对于一个进度条,无碍乎是最小最大值,以及当前值等一些重要的属性,至于方法,用得较多的是PerformStep()和PerformClick()之类的。代码如下:
private void btnRun_Click(object sender, EventArgs e)
{
btnRun.Enabled = false;
if (txtBoxTarget.Text.Equals(String.Empty) || txtBoxTimes.Text.Equals(String.Empty))
{
MessageBox.Show("请输入连接的URL和连接次数!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
int length = Int32.Parse(txtBoxTimes.Text.Trim());
string url = txtBoxTarget.Text.Trim();
double process = 0;
int show = 0;
DateTime rightNow = DateTime.Now;
DateTime end;
TimeSpan interval;
toolStripStatusLabel.Text = "连接中";
progressBar.Visible = true;
progressBar.Minimum = 0;
progressBar.Maximum = length;
for (int i = 1; i <= length; i++)
{
try
{
// 这两句是连接某个网页的。
WebRequest myRequest = WebRequest.Create(url);
WebResponse myResponse = myRequest.GetResponse();
myResponse.Close();
}
catch
{
txtBoxReport.Text = "网络连接有误!";
return;
}
progressBar.PerformStep();
process = i / length;
show = (int)process * 100;
}
progressBar.Visible = false;
toolStripStatusLabel.Text = "已就绪";
txtBoxReport.Text = "连接 " + url + " " + length + "次。";
end = DateTime.Now;
interval = end - rightNow;
txtBoxReport.Text += "\r\n共耗时" + interval.TotalMilliseconds + "毫秒。";
btnRun.Enabled = true; }
这是个按钮的实现方法,一旦按下,就会执行代码段中的内容。程序自动连接到某个网页,然后关闭,以此来作为计数,测试进度条是否正常。
这次,就以我自己的博客做小白鼠了,呵呵。结果当然是明显了,大家看看我的访问数量就知道了……可能测试进度条的目的变味了,不过还是要说明一下,写这个软件的目的只是作为学习,没有增加点击率,扰乱网络秩序的意思。如果有,就不是500,而是5000000了,这样更能看清楚进度条的走动。PS:尽管该软件叫VisitCheat。
运行情况如下:
进度条会慢慢走到终点,程序设计方法正常。
private void btnRun_Click(object sender, EventArgs e)
{
btnRun.Enabled = false;
if (txtBoxTarget.Text.Equals(String.Empty) || txtBoxTimes.Text.Equals(String.Empty))
{
MessageBox.Show("请输入连接的URL和连接次数!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
int length = Int32.Parse(txtBoxTimes.Text.Trim());
string url = txtBoxTarget.Text.Trim();
double process = 0;
int show = 0;
DateTime rightNow = DateTime.Now;
DateTime end;
TimeSpan interval;
toolStripStatusLabel.Text = "连接中";
progressBar.Visible = true;
progressBar.Minimum = 0;
progressBar.Maximum = length;
for (int i = 1; i <= length; i++)
{
try
{
// 这两句是连接某个网页的。
WebRequest myRequest = WebRequest.Create(url);
WebResponse myResponse = myRequest.GetResponse();
myResponse.Close();
}
catch
{
txtBoxReport.Text = "网络连接有误!";
return;
}
progressBar.PerformStep();
process = i / length;
show = (int)process * 100;
}
progressBar.Visible = false;
toolStripStatusLabel.Text = "已就绪";
txtBoxReport.Text = "连接 " + url + " " + length + "次。";
end = DateTime.Now;
interval = end - rightNow;
txtBoxReport.Text += "\r\n共耗时" + interval.TotalMilliseconds + "毫秒。";
btnRun.Enabled = true; }
这是个按钮的实现方法,一旦按下,就会执行代码段中的内容。程序自动连接到某个网页,然后关闭,以此来作为计数,测试进度条是否正常。
这次,就以我自己的博客做小白鼠了,呵呵。结果当然是明显了,大家看看我的访问数量就知道了……可能测试进度条的目的变味了,不过还是要说明一下,写这个软件的目的只是作为学习,没有增加点击率,扰乱网络秩序的意思。如果有,就不是500,而是5000000了,这样更能看清楚进度条的走动。PS:尽管该软件叫VisitCheat。
运行情况如下:
进度条会慢慢走到终点,程序设计方法正常。
展开全部
this.progressBar1.Value = 0;程序开始
this.progressBar1.Maximum=最大值;
this.progressBar1.Value++;放在最后
这样,进度条的值从0慢慢增大到最后面,都满了。
你可以试一下的。
例如:
private void button1_Click(object sender, EventArgs e)
{
this.progressBar1.Value = 0;
this.progressBar1.Maximum = 10000;
for (int i = 0; i < 10000; i++)
{
this.progressBar1.Value++;
}
}
this.progressBar1.Maximum=最大值;
this.progressBar1.Value++;放在最后
这样,进度条的值从0慢慢增大到最后面,都满了。
你可以试一下的。
例如:
private void button1_Click(object sender, EventArgs e)
{
this.progressBar1.Value = 0;
this.progressBar1.Maximum = 10000;
for (int i = 0; i < 10000; i++)
{
this.progressBar1.Value++;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做法是这样的:
用线程和委托,一个主线程,一个子线程。
子线程的工作:
①收集下载文件的信息:下载文件的名字、当前下载的是第几个文件、总共有多少文件。
②下载文件
③结合委托,实现子线程把收集的现在文件信息异步返回给主线程的某个指定方法。
主线程工作:
①设立一个指定的方法接受子线程返回来的信息
②将返回来的信息反映在滚动条上,决定进度条该前进多少长度。
顺便说一下,开启子线程是为了保证在下载文件的过程中,主线程的操作可以正常运行,不会出现卡死的情况。
用线程和委托,一个主线程,一个子线程。
子线程的工作:
①收集下载文件的信息:下载文件的名字、当前下载的是第几个文件、总共有多少文件。
②下载文件
③结合委托,实现子线程把收集的现在文件信息异步返回给主线程的某个指定方法。
主线程工作:
①设立一个指定的方法接受子线程返回来的信息
②将返回来的信息反映在滚动条上,决定进度条该前进多少长度。
顺便说一下,开启子线程是为了保证在下载文件的过程中,主线程的操作可以正常运行,不会出现卡死的情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UpdateProgress
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用它的value值关联啊 赋值给value 至于你怎么得到这个值还要根据不同情况另做工作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询