【问题标题】:Winform saveas file locationWinform另存为文件位置
【发布时间】: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);
            }
        }
    }
}

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

【问题讨论】:

    标签: c# winforms save-as


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2018-02-24
        • 2014-03-06
        • 2023-04-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        • 2021-01-08
        相关资源
        最近更新 更多