2016-11-13 5 views
6

C:\Users\Public\DocumentsフォルダにOpenFileDialogを起動する方法はありますか?C: Users Public DocumentsでDotNetのOpenFileDialogを起動できますか?

私はDotNetフレームワークを使用してC#アプリケーションを作成しています。私はOpenFileDialogInitialDirectory"C:\\Users\\Public\\Documents\\"FileName"world.txt"と打ち上げようとしています。残念ながら、OpenFileDialogC:\Users\Public\Documentsの代わりにDocumentsのショートカットに入れています。

期待される結果
私は> This PC > Windows7_OS (C:) > Users > Public > Documentsを示す上面テキストボックスとworld.txtを示す底面テキストボックスで、OpenFileDialogオープンを見て期待しています。一番上のテキストボックスをクリックすると、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:\C:\Users\C:\Users\PublicC:\Users\Public\Documents\cdC:\WINDOWS\System32\cmd.exeを使用。 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を使用すると、C:\Users\Public\Documentsを含む予想通りにフォルダ間にcdが表示されます。

私は、Microsoft Visual C#を使用して、2015年私のオペレーティングシステムをマイクロソフトのVisual Studioのコミュニティ2015バージョン14.0.23107.0 D14RELを実行しています
私の環境では、Windows 10プロです。

+0

特典がありますか?管理者としてvsを実行しようとしましたか? – Noctis

+1

私は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

+0

'Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)'を使ってディレクトリを取得しようとしましたか? –

答えて

関連する問題