文件夹浏览器替换



我希望能够添加多个下载链接,并将它们放入用户在文件夹浏览器对话框中选择的单个文件夹中

您在下面看到的代码除了单个文件外,效果很好。我尝试将所有"保存文件对话框1"更改为"文件夹浏览器对话框1"。但是,这导致我单击下载,即使只输入了一个链接,也没有任何反应。

Private Sub BtnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
If (SaveFileDialog1.ShowDialog() = DialogResult.OK) Then
txtSave1.Text = SaveFileDialog1.FileName
btnDownload.Enabled = True
End If
End Sub

' ------------ DOWNLOADING SECTION ------------
Private WithEvents HTTPCLIENT As WebClient
Private Sub BtnDownload_Click(sender As Object, e As EventArgs) Handles 
btnDownload.Click
btnDownload.Enabled = False
txtSave1.Enabled = False
btnBrowse.Enabled = False
btnDownload.Enabled = False
HTTPCLIENT = New WebClient
Dim Download As String
Download = Links(i)
Dim User = Environment.UserName
Dim Save As String = txtSave1.Text
Try
HTTPCLIENT.DownloadFileAsync(New Uri(Download), Save)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

我希望文件夹浏览器对话框只是一个通用的保存路径,其中正在下载的文件被放入该文件夹,但是我得到了一个错误。 上面的代码有效,但仅适用于单个文件。

我有代码可以检索下载名称和扩展名,一旦我弄清楚这部分,我计划将其添加到路径中。

您可以使用 FolderBrowserDialog。获得路径后,将其与要下载的每个文件名组合在一起。使用System.IO.Path.Combine()

Private Sub BtnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
Using fbd As New FolderBrowserDialog()
If fbd.ShowDialog() = DialogResult.OK Then
txtSave1.Text = fbd.SelectedPath
btnDownload.Enabled = True
End If
End Using
End Sub
Private Sub BtnDownload_Click(sender As Object, e As EventArgs) Handles btnDownload.Click
Try
btnDownload.Enabled = False
txtSave1.Enabled = False
btnBrowse.Enabled = False
btnDownload.Enabled = False
Dim exceptionMessages As New List(Of String)
Using client = New WebClient()
' configure client here as needed i.e. add Credentials
For Each link In Links
Try
client.DownloadFileAsync(New Uri(link), Path.Combine(txtSave1.Text, link))
Catch ex As Exception
exceptionMessages.Add(ex.Message)
End Try
Next
End Using
If exceptionMessages.Any() Then MessageBox.Show($"Exception{If(exceptionMessages.Count > 1, "s", "")}: {String.Join(Environment.NewLine, exceptionMessages)}")
Finally
txtSave1.Enabled = True
btnBrowse.Enabled = True
btnDownload.Enabled = True
End Try
End Sub

请注意,我不会在没有Using的情况下发布带有IDisposable对象的答案(在大多数情况下(,因此FolderBrowserDialog和WebClient都在Usings中。在下载之前,您可能需要向 Web 客户端添加其他配置。

此外,您可能不希望为每个异常(如果有(提供单独的消息。因此,可以一次缓存和显示所有消息。

我插入了一个Finally,供您在完成后将控件状态设置回默认值。这取决于你。

最后,这项工作是在 UI 线程上完成的,因为它是按钮单击处理程序中的一个。即使未阻止,也应将其移出 UI。这超出了问题的范围。

最新更新