C# Program to Download File From URL With Progressbar GUI Desktop App Full Project For Beginners

  • Post author:
  • Post category:c#
  • Post comments:0 Comments






using System.Diagnostics;
using System.IO;
using System.Net;

WebClient webClient;               // Our WebClient that will be doing the downloading for us
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);
        // The variable that will be holding the url address (making sure it starts with http://)
        Uri URL = urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ? new Uri(urlAddress) : new Uri("http://" + urlAddress);
        // Start the stopwatch which we will be using to calculate the download speed
            // Start downloading the file
            webClient.DownloadFileAsync(URL, location);
        catch (Exception ex)
// The event that will fire whenever the progress of the WebClient is changed
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    // Calculate download speed and output it to labelSpeed.
    labelSpeed.Text = string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00"));
    // Update the progressbar percentage only when the value is not the same.
    progressBar.Value = e.ProgressPercentage;
    // Show the percentage on our label.
    labelPerc.Text = e.ProgressPercentage.ToString() + "%";
    // Update the label with how much data have been downloaded so far and the total size of the file we are currently downloading
    labelDownloaded.Text = string.Format("{0} MB's / {1} MB's",
        (e.BytesReceived / 1024d / 1024d).ToString("0.00"),
        (e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00"));
// The event that will trigger when the WebClient is completed
private void Completed(object sender, AsyncCompletedEventArgs e)
    // Reset the stopwatch.
    if (e.Cancelled == true)
        MessageBox.Show("Download has been canceled.");
        MessageBox.Show("Download completed!");

Leave a Reply