5

我有一个 XDocument 类,其中包含已经制作的 XML 内容。我基本上想打开一个 SaveFileDialog,让用户选择一个文件夹(不是文件),在其中将内容保存为 .xml 文件。

我这样做有一些困难:

a) 如何使用 SaveFileDialog 提示用户选择文件夹?我只能用它来让用户选择一个文件。

b) 如何从 SaveFileDialog 中提取所选路径?

c) 有了路径后,如何保存 XDocument 的内容?有一种称为 Save 的方法需要 Stream - 如何使用路径构建流?(这可能是个基本问题,我几乎没有IO经验)

4

3 回答 3

6

a) 您不想选择文件夹,而是选择文件名 (Save* File *Dialog)

b) SaveFileDialog.FileName

c) 查看不同的重载:您有 XDocument.Save(string fileName)。不需要流,你可以有一个文件名(哦,你在 SaveFileDialog 中得到它)

编辑:您的意思是用户不能更改文件名?然后

a) 文件夹浏览器对话框

b) FolderBrowserDialog.SelectedPath

c) XDocument.Save(FolderBrowserDialog.SelectedPath + "/" + THENAMEOFYOURFILETHATUSERCANTCHANGE)

编辑 2:Path.Combine 在 c) 中更优雅)。

于 2012-04-07T19:31:29.437 回答
3

A & B(来自重复问题的示例代码):

C(要保存的最少代码XDocument):

XDocument document = new XDocument();
document.Add(new XElement("my_root"));
// Save(): there are 6 overloads; the 2nd one takes a path
document.Save(filePathFromSaveDialog); 
于 2012-04-07T19:31:48.590 回答
0

确保您将 SaveFileDialog 添加到表单并签署了 FileOk 事件(可以通过 SaveFileDialog 的属性完成),然后以下代码应该适用于您:

private void button1_Click(object sender, EventArgs e)
{
    // When user clicks button, show the dialog.
    saveFileDialog1.ShowDialog();
}

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    // Get file name.
    string name = saveFileDialog1.FileName;
    // Write to the file name selected.
    xDocumentYouHave.Save(name);
}
于 2012-04-07T19:33:13.177 回答