Winform另存为文件位置

Posted

技术标签:

【中文标题】Winform另存为文件位置【英文标题】:Winform saveas file location 【发布时间】:2013-05-22 13:51:19 【问题描述】:

我想知道您是如何将 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);
            
        
    

但是,这仍然在调用我的旧保存函数,它告诉我的程序保存在桌面中。有没有办法可以将我的另存为窗口生成的文件位置传递给我的保存功能?

【问题讨论】:

【参考方案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);

【讨论】:

【参考方案2】:

试试

dialog.InitialDirectory = myPreferredDirectory;

更多信息请见SaveFileDialog.InitialDirectory

【讨论】:

以上是关于Winform另存为文件位置的主要内容,如果未能解决你的问题,请参考以下文章

请教:C# winform Rtf另存为图片时不能保存原图片大小的问题

C# 使用保存对话框将图片框另存为 jpeg

C# Winform怎么弹出保存对话框?

另存为,winforms(c#)[重复]

另存为提示位置但使用单元格中的文件名

当用户在“另存为”对话框中指定位置时,如何将文本写入文件?