2011-02-26 27 views
3

我打開一個基於用戶定義路徑的初始目錄的SaveFileDialog。我想確保此路徑在傳入並打開對話框之前有效。現在我有這樣的:驗證InitialFileDialog的SaveFileDialog?

Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog(); 

if (!string.IsNullOrEmpty(initialDirectory) && Directory.Exists(initialDirectory)) 
{ 
    dialog.InitialDirectory = initialDirectory; 
} 

bool? result = dialog.ShowDialog(); 

然而,似乎\被滑倒,造成當我調用ShowDialog的崩潰。是否有其他值可能導致崩潰? InitialDirectory屬性需要遵循哪些規則?

+0

你爲什麼要解決一個bug?修復錯誤。 – 2011-02-26 18:42:16

+0

這就是我正在做的事情......但首先我需要知道如何在將它發送到SaveFileDialog之前驗證用戶輸入。 – RandomEngy 2011-02-26 18:47:44

+0

SaveFileDialog已經爲你做好了,沒有必要親自去做。同樣,不要通過避免設置InitialDirectory屬性來隱藏錯誤。 *例外是*有用*,它告訴你代碼是borked,需要你的注意。 – 2011-02-26 19:17:02

回答

7

快速和簡單的方法來解決它會得到充分的路徑:

dialog.InitialDirectory = Path.GetFullPath(initialDirectory); 

這將擴大到絕對那些在SaveFileDialog預期相對路徑。這將擴展幾乎任何類似於通往完整,根源路徑的路徑。這包括諸如「/」(變成當前文件夾設置爲的任何驅動器的根目錄)和「」(變成當前文件夾)之類的東西。