您的位置:首页 > 编程语言 > C#

c# 实现进度条下载文件

2013-05-21 09:24 387 查看
使用到的c#控件主要有:Label,ProgressBar,Button

首先引用命名空间

using System.Diagnostics;

using System.IO;

using System.Net;

定义全局变量

WebClient webClient; //下载文件使用

Stopwatch sw = new Stopwatch(); //用于计算下载速度

使用的主要代码:

public void DownloadFile(string urlAddress, string location)
{
using (webClient = new WebClient())
{
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressC
4000
hanged);

try
{
Uri URL;
// 先判断是否包括http://
if (!urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
URL = new Uri("http://" + urlAddress);
else
URL = new Uri(urlAddress);
sw.Start();
// 开始异步下载
webClient.DownloadFileAsync(URL, location);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
try
{
// 显示下载速度
if (labelPerc.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0"))
labelSpeed.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";

// 进度条
if (progressBar.Value != e.ProgressPercentage)
progressBar.Value = e.ProgressPercentage;

// 当前比例
if (labelPerc.Text != e.ProgressPercentage.ToString() + "%")
labelPerc.Text = e.ProgressPercentage.ToString() + "%";

// 下载了多少 还剩余多少
labelDownloaded.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " Mb's" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " Mb's";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

// The event that will trigger when the WebClient is completed
private void Completed(object sender, AsyncCompletedEventArgs e)
{
sw.Reset();
if (e.Cancelled == true)
{
//下载未完成
}
else
MessageBox.Show("下载完毕!");
}
在下载文件时,只需调用DownloadFile方法,如下:
DownloadFile(“下载文件地址”, “文件保存地址”);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  下载 Stopwatch webclient