MSDNでプロパティについて読みましたが、それが何をするのかまだわかりません。
ダイアログボックスが閉じる前に現在のディレクトリを復元するかどうかを示す値を取得または設定します。
それは正確にはどういう意味ですか?現在のディレクトリの「復元」は実際に何をしますか?助けてくれてありがとう。
MSDNでプロパティについて読みましたが、それが何をするのかまだわかりません。
ダイアログボックスが閉じる前に現在のディレクトリを復元するかどうかを示す値を取得または設定します。
それは正確にはどういう意味ですか?現在のディレクトリの「復元」は実際に何をしますか?助けてくれてありがとう。
IIRCは、Windows XPでは、ファイルが保存されている(または開かれている)ディレクトリを(または)を押すSave
と、新しい現在の作業ディレクトリ(内のディレクトリ)として設定されます。SaveFileDialog
Open
OpenFileDialog
Environment.CurrentDirectory
を設定するFileDialog.RestoreDirectory = true
と、閉じるとFileDialog
元の作業ディレクトリが復元されます。
Windows Vista / Sevenでは、動作は常に次のようFileDialog.RestoreDirectory = true
になります(falseに設定した場合でも...)。
元の実装の厄介な癖は、選択を行った後、アプリの現在のディレクトリがそのフォルダーに変更されたことです。つまり、ファイル操作がアプリフォルダーに関連していると予想した場合、失敗しました。
つまり、ダイアログを使用する前に現在のフォルダをキャプチャし、後で復元するコードを追加するのが一般的な方法でした。
これは修正されたので、これを行うことができますが、デフォルトの動作を変更すると、癖に依存していたコードが壊れた可能性があります。したがって、このプロパティを使用して手動で有効にする必要があります。
ダイアログボックスを使用するときにディレクトリを選択できる場合、ダイアログを次に使用すると、最後に使用したディレクトリで開きます。このオプションを使用すると、元のディレクトリが復元されます。
trueに設定されている場合、ファイルダイアログは常にデフォルトのファイルパス(InitialDirectoryプロパティ)を開きます。
ここでは、WinForms FileDialogについてのみ説明していますが、WPFFileDialogの動作は異なる場合があります。
Win XPの場合、ダイアログの使用中に現在のディレクトリが変更されます。
マルチスレッドアプリケーションの場合、これに注意する必要があります。別のフォルダに切り替えるときに、ダイアログの使用中に現在のディレクトリが変更されているかどうかを確認するために、新しいスレッドでループを実行することで簡単に証明できます。
Win 7 / monoの場合、ダイアログの使用中または使用後に現在のディレクトリは変更されません。
したがって、Win 7 / mono:RestoreDirectoryプロパティは必要ありません。