FileBrowseコントロールを使用してファイルをロードするフォームを作成しました。問題は、ファイルをロードした後、アプリケーションが「デバッグ」ディレクトリ(ファイルがあるべき場所)ではなく、選択したパスでファイルを探すことです。
どうすればそれを回避できますか?それは正常な動作ですか?
FileBrowseコントロールを使用してファイルをロードするフォームを作成しました。問題は、ファイルをロードした後、アプリケーションが「デバッグ」ディレクトリ(ファイルがあるべき場所)ではなく、選択したパスでファイルを探すことです。
どうすればそれを回避できますか?それは正常な動作ですか?
現在のディレクトリが何であるかに依存しないことで、これを回避できます。アプリケーションへのショートカットを作成し、スタートアップディレクトリを変更するとどうなるかを考えてみてください。
アプリケーションが存在するディレクトリが必要な場合、なぜ現在のディレクトリを探すのですか?次の方法でアプリケーションのディレクトリを取得できます。
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
これがWindowsフォームアプリケーションの場合は、はるかに簡単に入手できます。
Application.StartupPath
この動作はWindowsCommonControls(OpenFileDialog
)の一部であり、アプリケーションの構成とは関係ありません。
ただし、アプリケーションで初期ディレクトリを設定できます。
ここで回答:OpenFileDialogが作業ディレクトリを変更するのはなぜですか?
そしてここで:Windows XPで[ファイルを開く]ダイアログを使用すると、現在の作業ディレクトリが変わるのはなぜですか?
RestoreDirectoryというプロパティのコントロールを確認してください。これはTrueに設定されていますか?はいの場合は、falseとして試してください。