C# Winform另存为文件位置

C# Winform另存为文件位置,c#,winforms,save-as,C#,Winforms,Save As,我想知道你是如何在winform中将文件保存到目标位置的,而不必在该位置进行硬编码的 现在,我的保存方法如下所示: public void GenereateSettingsFile(List<Node> nodeList) { string filePath = "Desktop\\Save.xml"; _rootNode.RemoveChild(_userNode); _userNode = _xmlDoc.CreateElement("Display_

我想知道你是如何在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 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);
            }
        }
    }
}
但是,这仍然在调用我以前的save函数,它告诉我的程序在桌面上保存。有什么方法可以将“另存为”窗口生成的文件位置传递给“保存”功能吗?

试试看

dialog.InitialDirectory = myPreferredDirectory;

有关更多信息,请参见

仅将
文件路径
升级为
GenerateSettingsFile
的参数

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);
}
private void saveAstolStripMenuItem\u单击(对象发送方,事件参数e)
{
使用(SaveFileDialog=newsavefiledialog())
{
dialog.Filter=“txt文件(*.txt)|*.txt|所有文件(*.*)|*.”;
dialog.FilterIndex=2;
dialog.RestoreDirectory=true;
if(dialog.ShowDialog()==DialogResult.OK)
{
//可以使用dialog.FileName
//使用(Stream=dialog.OpenFile())
//{
//保存数据
inmo.generateSettingsFile(_nodeList,dialog.FileName);
//}
}
}
}
public void GenerateSettingsFile(列表节点列表、字符串文件路径)
{
//string filePath=“Desktop\\Save.xml”;
_RemoveChild(_userNode);
_userNode=_xmlDoc.CreateElement(“显示设置”);
_AppendChild(_userNode);
foreach(节点列表中的节点n)
{
foreach(n.GenerateXML(_xmlDoc))中的元素e)
{
_userNode.AppendChild(e);
}
}
_xmlDoc.Save(文件路径);
}
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);
}