1

場所にハードコードすることなく、ターゲットの場所にファイルを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);
            }
        }
    }
}

しかし、これはまだ古い保存機能を呼び出しており、プログラムにデスクトップに保存するように指示しています。ウィンドウが生成するファイルの場所を保存機能に渡す方法はありますか?

4

2 に答える 2

1

filePathのパラメータになるようにプロモートするだけですGenereateSettingsFile

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, dialog.FileName);
            //}
        }
    }
}

public void GenereateSettingsFile(List<Node> nodeList, string filePath)
{
    //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);
}
于 2013-05-22T14:06:29.480 に答える