Bonjour,

Ok merci beaucoup, ça fonctionne :-).
J'ai ajouté pas mal de nouvelles fonctions comme une progressBar, d'autres vérifications (notamment d'URL).
Je voudrais pouvoir annulé le téléchargement en cours lorsque je clique sur le bouton "button_annuler" mais myWebClient n'est pas accessible car il est déclaré dans la fonction download.
Je suis débutant en C#, donc comment faire en sorte que la portée soit universelle ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace downloader
{
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox_path.Enabled = false;
            button_path.Enabled = false;
            button_annuler.Enabled = false;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string lien_clipboard = Clipboard.GetText();
            textBox_lien.Text = lien_clipboard;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox_lien.Text.Length != 0 && textBox_path.Text.Length != 0)
            {
                download_launch(textBox_lien.Text, textBox_path.Text);
            }
            else if (textBox_lien.Text.Length == 0 || textBox_path.Text.Length == 0)
            {
                MessageBox.Show("Un champ est vide !");
            }
            else
            {
                MessageBox.Show("Une erreur est survenue.");
            }
        }
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            string path;
            folderBrowserDialog1.ShowDialog();
            path = folderBrowserDialog1.SelectedPath;
            string url = textBox_lien.Text;
            if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
            {
                string nomAvecExtension = url.Substring(url.LastIndexOf('/'));
                path = path + nomAvecExtension;
                string path_new = path.Replace("/", "\\");
                Console.WriteLine("path =" + path + " url=" + url + " nomAvecExtension=" + nomAvecExtension);
                textBox_path.Text = path_new;
            }
            else MessageBox.Show("Mauvaise URL !");
 
        }
 
        private void textBox_lien_TextChanged(object sender, EventArgs e)
        {
            if (textBox_lien.Text.Length != 0)
            {
                textBox_path.Enabled = true;
                button_path.Enabled = true;
            }
            else
            {
                textBox_path.Enabled = false;
                button_path.Enabled = false;
            }
        }
        public void download_launch(string url, string path)
        {
            try
            {
                if (System.IO.File.Exists(path))
                {
                    var result = MessageBox.Show("Le fichier que vous avez sélectionné existe déjà, il sera supprimer. Voulez-vous continuer ?", "ok",
                                MessageBoxButtons.YesNo,
                                MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        download(url, path);
                    }
                }
                else download(url, path);
            }
            catch
            {
                MessageBox.Show("L'adresse que vous avez entré est introuvable ou innaccessible.");
            }
        }
        public void download(string url, string path)
        {
            WebClient myWebClient = new WebClient();
            myWebClient.DownloadFileAsync(new Uri(url), path);
            button_download.Enabled = false;
            button_download.Text = "En cours...";
            myWebClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(myWebClient_DownloadProgressChanged);
            myWebClient.DownloadFileCompleted += new AsyncCompletedEventHandler(myWebClient_DownloadFileCompleted); 
        }
        private void myWebClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
        private void myWebClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Téléchargement terminé !");
            button_annuler.Enabled = false;
            button_download.Enabled = true;
            textBox_lien.Clear();
            textBox_path.Clear();
            progressBar1.Value = 0;
            button_download.Text = "Télécharger !";
 
        }
 
        public void button_annuler_Click(object sender, EventArgs e)
        {
 
        }
 
 
 
 
    }
}
Merci d'avance.