winform 下载文件显示进度和百分比

        /// <summary>
        /// 下载完成
        /// </summary>
        private void DownloadFileCompleted()
        {
            IsComlate = true;
        }
        /// <summary>
        /// 显示进度
        /// </summary>
        /// <param name="val"></param>
        private void DownloadProgressChanged(int val)
        {
            progressBar1.Value = val;
            Persent.Text = val.ToString() + "%";
            progressBar1.PerformStep();
        }
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="url"></param>
        /// <param name="savefile"></param>
        /// <param name="downloadProgressChanged"></param>
        /// <param name="downloadFileCompleted"></param>
        private void DownloadFile(string url, string saveFile, Action<int> downloadProgressChanged, Action downloadFileCompleted)
        {
            WebClient client = new WebClient();
            client.Proxy = null;
            if (downloadProgressChanged != null)
            {
                client.DownloadProgressChanged += delegate(object sender, DownloadProgressChangedEventArgs e)
                {
                    this.Invoke(downloadProgressChanged, e.ProgressPercentage);
                };
            }
            if (downloadFileCompleted != null)
            {
                client.DownloadFileCompleted += delegate(object sender, AsyncCompletedEventArgs e)
                {
                    this.Invoke(downloadFileCompleted);
                };
            }
            client.DownloadFileAsync(new Uri(url), saveFile);
        }
     /// <summary>
     /// 点击下载
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private void button1_Click(object sender, EventArgs e)
     {
         DownloadFile("http://www.111cn.net/update.zip", @"F:update.zip", DownloadProgressChanged, null);
     }    
原文地址:https://www.cnblogs.com/a849788087/p/7085245.html