場所にハードコードすることなく、ターゲットの場所にファイルをwinformで保存する方法を知りたいと思っています。
現在、私の保存方法は次のようになっています。
public void GenereateSettingsFile(List<Node> nodeList)
{
string filePath = "Desktop\\Save.xml";
_rootNode.RemoveChild(_userNode);
_userNode = _xmlDoc.CreateElement("Display_Settings");
_rootNode.AppendChild(_userNode);
foreach (Node n in nodeList)
{
foreach (XmlElement e in n.GenerateXML(_xmlDoc))
{
_userNode.AppendChild(e);
}
}
_xmlDoc.Save(filePath);
}
public void SaveXML(string location)
{
_xmlDoc.Save(location);
}
これは、次のように保存ボタンを押すと呼び出されます。
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
foo.GenereateSettingsFile(_nodeList);
}
今、関数として保存すると、新しいウィンドウがポップアップし、次のコードでファイルを保存したい場所を参照できます。
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog dialog = new SaveFileDialog())
{
dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
dialog.FilterIndex = 2;
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
// Can use dialog.FileName
using (Stream stream = dialog.OpenFile())
{
// Save data
inmo.GenereateSettingsFile(_nodeList);
}
}
}
}
しかし、これはまだ古い保存機能を呼び出しており、プログラムにデスクトップに保存するように指示しています。ウィンドウが生成するファイルの場所を保存機能に渡す方法はありますか?