有沒有辦法在C:\Users\Public\Documents
文件夾中啓動OpenFileDialog
?我可以在C: Users Public Documents中啓動DotNet的OpenFileDialog嗎?
我正在寫一個C#應用程序,使用DotNet框架。我正在嘗試啓動OpenFileDialog
,InitialDirectory
的"C:\\Users\\Public\\Documents\\"
和FileName
的"world.txt"
。不幸的是,OpenFileDialog
將我放入Documents
快捷方式,而不是C:\Users\Public\Documents
。
預期結果
我期望看到的OpenFileDialog開放,與顯示> This PC > Windows7_OS (C:) > Users > Public > Documents
頂部文本框,顯示world.txt
底部文本框。我希望如果我點擊頂部文本框,它會顯示C:\Users\Public\Documents
。
實際結果
打開OpenFileDialog。頂部文本框顯示> This PC > Documents
,底部文本框顯示world.txt
。如果我點擊頂部文本框,它會顯示Documents
。顯示的文件夾內容是而不是,與C:\Users\Public\Documents
的內容相同。
事情我已經試過
我已經停止在Visual Studio調試器的代碼下面的代碼行後:
OpenFileDialog dlg = new OpenFileDialog();
在立即窗口,我已經執行的代碼如下所示:
dlg.FileName = "world.txt"
? dlg.FileName
dlg.InitialDirectory = "C:\\NonExistentDirectory\\";
dlg.ShowDialog();
dlg.InitialDirectory = "C:\\";
dlg.ShowDialog();
dlg.InitialDirectory = "C:\\Users\\";
dlg.ShowDialog();
dlg.InitialDirectory = "C:\\Users\\Public\\";
dlg.ShowDialog();
dlg.InitialDirectory = "C:\\Users\\Public\\Documents\\";
dlg.ShowDialog();
我取消了每個對話框。
我用C:\WINDOWS\System32\cmd.exe
到cd
C:\
和C:\Users\
和C:\Users\Public
和C:\Users\Public\Documents\
之間。事情
結果我都試過
當
dlg.InitialDirectory = "C:\\NonExistentDirectory\\"
,對話框的文件夾最初顯示爲This PC > Documents > Visual Studio 2015 > Projects > SimpleGame > Controller > bin > Debug"
。點擊文本框會導致它顯示C:\Users\Owner\Documents\Visual Studio 2015\Projects\SimpleGame\Controller\bin\Debug
。因此,我假設OpenFileDialog
通過不更改目錄來靜默地處理無效的InitialDirectory
。在這種情況下,它默認爲我項目的裝配箱的Debug
文件夾。當
dlg.InitialDirectory
是"C:\\"
或"C:\\Users\\"
或"C:\\Users\\Public\\"
該對話框的行爲與預期相同。點擊頂部文本框分別產生C:\
或C:\Users
或C:\Users\Public
。當
dlg.InitialDirectory = "C:\\Users\\Public\\Documents\\"
對話框行爲不正確。頂部文本框顯示> This PC > Documents
,底部文本框顯示world.txt
。如果我點擊頂部文本框,它會顯示Documents
。顯示的文件夾內容是而不是,與C:\Users\Public\Documents
的內容相同。使用
cmd.exe
讓我cd
與預期的文件夾之間,包括到C:\Users\Public\Documents
。
我的環境
我正在運行Microsoft的Visual Studio 2015年的社區版本14.0.23107.0 D14REL,使用Microsoft Visual C#2015年,我的操作系統是Windows 10專業版。
可能是一個特權的東西?你有沒有試過以管理員身份運行vs? – Noctis
我也在使用Windows 10 Pro,並可以確認此行爲。請注意,如果您使用'dlg.InitialDirectory =「C:\\ Users \\ Public \\ Music \\」;'或'dlg.InitialDirectory = $「C:\\ Users \\ {Environment.UserName} \\ Documents \\「;'然後對話框將打開到相應的庫。但是,如果您指定了作爲自定義庫一部分的目錄的路徑,則該對話框將打開到該物理目錄。當打開一個包含['KNOWNFOLDERID'](https://msdn.microsoft.com/library/windows/desktop/dd378457.aspx)的庫的目錄時,對話框可能會變得「聰明」。 – BACON
您是否嘗試過使用'Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)'檢索目錄? –