Vb.net 文件夹浏览器替换

Vb.net 文件夹浏览器替换,vb.net,file-management,download-manager,Vb.net,File Management,Download Manager,我希望能够添加多个下载链接,并让它们进入由用户在文件夹浏览器对话框中选择的单个文件夹 您在下面看到的代码除了一个文件外工作得很好。我已尝试将所有“savefiledialog1”改为“folderbrowserdialog1”。然而,这导致我点击下载,即使只输入了一个链接,也不会发生任何事情 Private Sub BtnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click If (Save

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

您在下面看到的代码除了一个文件外工作得很好。我已尝试将所有“savefiledialog1”改为“folderbrowserdialog1”。然而,这导致我点击下载,即使只输入了一个链接,也不会发生任何事情

 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
我希望文件夹浏览器对话框只是一个普通的保存路径,下载的文件被放在该文件夹中,但是我得到了一个错误。 上面的代码可以工作,但只适用于单个文件


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

您可以使用FolderBrowser对话框。获得路径后,将其与下载的每个文件名组合。使用
System.IO.Path.Combine()

Private Sub BtnBrowse\u Click(发送者作为对象,e作为事件参数)处理BtnBrowse。单击
将fbd用作新的FolderBrowserDialog()
如果fbd.ShowDialog()=DialogResult.OK,则
txtSave1.Text=fbd.SelectedPath
btnDownload.Enabled=True
如果结束
终端使用
端接头
私有子BtnDownload\u单击(发送者作为对象,e作为事件参数)处理BtnDownload。单击
尝试
btnDownload.Enabled=False
txtSave1.Enabled=False
btnBrowse.Enabled=False
btnDownload.Enabled=False
Dim exceptionMessages作为新列表(字符串)
使用client=newwebclient()
'根据需要在此处配置客户端,即添加凭据
对于链接中的每个链接
尝试
client.DownloadFileAsync(新Uri(链接),Path.Combine(txtSave1.Text,链接))
特例
例外消息添加(例如消息)
结束尝试
下一个
终端使用
If exceptionMessages.Any()然后MessageBox.Show($“Exception{If(exceptionMessages.Count>1,“s”和“)}:{String.Join(Environment.NewLine,exceptionMessages)}”)
最后
txtSave1.Enabled=True
btnBrowse.Enabled=True
btnDownload.Enabled=True
结束尝试
端接头
请注意,如果没有使用
(在大多数情况下),我不会发布带有IDisposable对象的答案,因此FolderBrowserDialog和WebClient都使用
。下载之前,您可能需要向WebClient添加其他配置

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

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

最后,这项工作是在一个UI线程上完成的,这可以从按钮点击处理程序中的一个线程得到证明。即使没有阻塞,也应该将其从UI中移出。这超出了问题的范围