5

XMLコンテンツがすでに作成されているXDocumentクラスがあります。基本的に、SaveFileDialogを開き、コンテンツを.xmlファイルとして保存するフォルダー(ファイルではない)をユーザーに選択してもらいます。

私はそうするのにいくつかの困難を抱えています:

a)SaveFileDialogを使用して、ユーザーにフォルダーの選択を求めるにはどうすればよいですか?私はそれを使用して、ユーザーにファイルを選択させることしかできませんでした。

b)SaveFileDialogから選択したパスを抽出するにはどうすればよいですか?

c)パスを取得したら、XDocumentの内容を保存するにはどうすればよいですか?ストリームを必要とするSaveというメソッドがあります-パスを使用してストリームを構築するにはどうすればよいですか?(これは基本的な質問かもしれませんが、IOの経験はほとんどありません)

4

3 に答える 3

6

a) フォルダではなく、ファイル名を選択したい (保存*ファイル*ダイアログ)

b) SaveFileDialog.FileName

c) さまざまなオーバーロードを見てください: XDocument.Save(string fileName) があります。ストリームを持つ必要はありません。fileName を持つことができます (ああ、SaveFileDialog で取得できます)。

編集:ユーザーがファイルの名前を変更できないということですか?それから

a) FolderBrowserDialog

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 に答える