2016-09-16 24 views
0

私はコードビハインドでC#を使用してWPFアプリケーションを開発中です。 私のアプリでは、app.configに保存されているパスにあるXMLファイルを開いて保存することができます。 私はXMLファイルを開くときにOpenFileDialogのInitialDirectoryプロパティを設定からフォルダパスに設定します。 初めて正常に動作します。 しかし、別のフォルダパスを開き、XMLファイルフォルダをもう一度開く場合は、OpenFileDialogで別のフォルダパスを取得します。OpenFileDialogのInitialDirectoryが別のフォルダに変更した後に機能しない

何が欠けていますか?

private void openXMLFile(object sender, RoutedEventArgs e) 
    { 
     System.Windows.Forms.OpenFileDialog fileDialog = new System.Windows.Forms.OpenFileDialog(); 
     fileDialog.InitialDirectory = System.Configuration.ConfigurationManager.AppSettings["SerializedXmlFolderPath"].ToString(); 
     fileDialog.Filter = "xml files (*.xml)|*.xml"; 
     fileDialog.FilterIndex = 1; 

     if (fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { 
      string fileNameWithType = fileDialog.SafeFileName.Trim(); 
      if (fileNameWithType == null || fileNameWithType.Length < 5 || !fileNameWithType.EndsWith(".xml")) { 
       MessageBox.Show("This is not a file name, that can be used!"); 
       return; 
      } 
      formularsCommonName = fileNameWithType.Substring(0, fileNameWithType.Length - 4); 
      directory = Path.GetDirectoryName(fileDialog.FileName) + Path.DirectorySeparatorChar; 
      string fileName = directory + formularsCommonName + ".xml"; 
      loadXMLFile(fileName); 
     } 
     fileDialog.Dispose(); 
    } 
+0

InitialDirectoryが空の文字列であるか、有効なパス名ではない場合のOFDの動作について説明しました。最も一般的には、アプリの設定が絶対パスではなく相対パス名(「c:\ foo \ bar」ではなく「bar」など)であるためです。 –

答えて

0

私はそれを見つけました。 コードは正しいですが、私はapp.configの設定で間違いを犯しました。 パスでは、 "\"の代わりに "\"を書きました。 パスが正しくないため、VSがInitialDirectoryの代わりに最後のパスを取得しました。

1

あなたはRestoreDirectoryプロパティで再生しようとすることができます。

fileDialog.RestoreDirectory =はtrue。

https://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.restoredirectory(v=vs.110).aspx

プロパティ値型:可能System.Boolean真のファイルを検索しながら、ユーザー がディレクトリを変更した場合、ダイアログボックスは、以前に選択したディレクトリに カレントディレクトリを復元した場合。それ以外の場合はfalseです。 のデフォルト値はfalseです。

+0

trueとfalseのどちらも機能していません。何かがキャッシュされているかもしれませんか? –

関連する問題