c# 实现进度条下载文件

来源:互联网 发布:沈阳盘古网络怎么样 编辑:程序博客网 时间:2024/05/21 09:08

使用到的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(ProgressChanged);                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(“下载文件地址”, “文件保存地址”);

原创粉丝点击