无法在Visual Basic中将OpenFileDialog初始目录设置为Downloads

时间:2016-12-24 02:39:00

标签: vb.net

我正在尝试将初始目录设置为downloads文件夹,但它不起作用,即使它是一个完全有效的路径。这是我正在使用的代码:

Private Sub btn_AddMod_Click(sender As Object, e As EventArgs) Handles btn_AddMod.Click 'This brings up the file dailoge
    Dim Downloads As String = "\Downloads" 'A variables called \Downloads
    Dim UserprofilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) 'This finds the directory to the User profile environment variable
    Dim Downloadspath As String = UserprofilePath.Insert(0, "") + Downloads 'This adds \downloads to userpath
    OpenFileDialog1.InitialDirectory = Downloadspath 'This sets the Open File Dialog to go to the users downloads 
    txt_setmodname.Text = Downloadspath 'This is used for debugging, it sets a textbox to the path
    OpenFileDialog1.ShowDialog() 'This opens the Dialog
End Sub

当我复制输出文本时,路径完全有效,但不是带我到路径,而是带我到MyDocuments

2 个答案:

答案 0 :(得分:2)

那里有一些古怪的代码。我不确定为什么它不起作用而且我对发现并不太感兴趣。我刚测试了这个,它可以按你的要求工作:

Using ofd As New OpenFileDialog
    ofd.InitialDirectory = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
    ofd.ShowDialog()
End Using

显然,您可以使用在设计器中创建的OpenFielDialog,而不是在代码中创建。

顺便说一句,应该注意用户的下载文件夹不一定在该位置。我在我的D:驱动器上,而我的个人文件夹在我的C:驱动器上。对于保留C:仅针对系统文件的人,他们所有的库等都可能位于辅助驱动器上。不幸的是,没有简单的方法来获取Downloads文件夹的路径,就像Documents和其他文件一样。我猜测路径存储在注册表等中,但我不知道在哪里。

答案 1 :(得分:0)

我进一步研究了它,发现下载路径有一个注册表项,所以我使用了它,这似乎有效,我的代码如下。

Private Sub btn_AddMod_Click(sender As Object, e As EventArgs) Handles btn_AddMod.Click
    Using ofd As New OpenFileDialog
        Dim DownloadsPath = My.Computer.Registry.GetValue(
            "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\", "{374DE290-123F-4565-9164-39C4925E467B}", Nothing)
        ofd.InitialDirectory = DownloadsPath
        ofd.ShowDialog()
    End Using

我不确定为什么其他方法无法正常工作,因为某些原因它总是把我带到MyDocuments文件夹。