私はコードビハインドで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();
}
InitialDirectoryが空の文字列であるか、有効なパス名ではない場合のOFDの動作について説明しました。最も一般的には、アプリの設定が絶対パスではなく相対パス名(「c:\ foo \ bar」ではなく「bar」など)であるためです。 –