public DownloadListItem(DownloadTask downloadTask)
     : this()
 {
     this.downloadTask = downloadTask;
     downloadTask.DownloadProgressChanged += DownloadProgressChanged;
     downloadTask.DownloadStatusChanged += DownloadStatusChanged;
 }
        private void addBtn_Click(object sender, EventArgs e)
        {
            string uriName = urlInput.Text;
            Uri uriResult;
            bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp;
            if (result)
            {
                if(!Directory.Exists(downloadDirectory))
                {
                    Directory.CreateDirectory(downloadDirectory);
                }
                string outfileName = GetAvailableOutputName(downloadDirectory + Path.DirectorySeparatorChar + Path.GetFileName(uriResult.LocalPath));
                Console.WriteLine("outfile " + outfileName);

                DownloadTask downloadTask = new DownloadTask(uriName, outfileName);
                downloadTasks.Add(downloadTask);

                DownloadListItem downloadListItem = new DownloadListItem(downloadTask);
                downloadListItem.Text = Path.GetFileName(outfileName);
                downloadListItem.DownloadItemRemoved += downloadListItem_DownloadItemRemoved;
                flowLayoutPanel1.Controls.Add(downloadListItem);
                downloadTask.StartDownload();
            }
            else
            {
                MessageBox.Show("Invalid Url");
            }
            urlInput.Text = "";
        }
 public DownloadListItem(DownloadTask downloadTask) : this()
 {
     this.downloadTask = downloadTask;
     downloadTask.DownloadProgressChanged += DownloadProgressChanged;
     downloadTask.DownloadStatusChanged   += DownloadStatusChanged;
 }