【问题标题】:C# Save Results from ListBox button?C# 从 ListBox 按钮保存结果?
【发布时间】:2020-06-08 21:17:45
【问题描述】:

我在 Windows Forms App (.NET Framework) 中创建了一个新项目,这是我拥有的代码:

private void SaveProxyResults_Click(object sender, EventArgs e)
{
    SaveFileDialog dlg = new SaveFileDialog();

    if (dlg.ShowDialog() == DialogResult.OK)
    {
        StreamWriter writer = new StreamWriter(dlg.FileName);

        for (int i = 0; i < GatheredProxies.Items.Count; i++)
        {
            writer.WriteLine((string)GatheredProxies.Items[i]);
        }

        writer.Close();
    }

    dlg.Dispose();
}

使用当前代码,保存文件菜单会弹出,但它不会自动转到您的桌面,也没有自动选择文件类型,我也无法将其另存为 .txt,因为它给了我一个错误。

如何编辑代码以使其自动选择 .txt 作为文件格式,能够输入文件名并自动选择桌面作为文件保存位置,同时仍然能够更改文件的位置文件应该保存在哪里?

【问题讨论】:

  • 您是否阅读了SaveFileDialog FileDialog - WinForms 中的文档?有许多属性可让您完成所需的一切。
  • 1) 错误是什么? 2) 我可以建议使用 FolderBrowserDialog 而不是 FileSaveDialogIO.File.CreateText(Path from your Folde),这也解决了 .txt 问题。阅读Create Text FileFolderBrowser
  • System.IO.IOException: '进程无法访问文件'C:\Users\JP\Desktop\Scraped Proxies123',因为它正被另一个进程使用。'

标签: c# visual-studio save savefiledialog


【解决方案1】:
            Stream myStream;
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            dlg.FilterIndex = 2;
            dlg.RestoreDirectory = true;

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = dlg.OpenFile()) != null)
                {
                    StreamWriter writer = new StreamWriter(dlg.FileName);

                    for (int i = 0; i < GatheredProxies.Items.Count; i++)
                    {
                        writer.WriteLine((string)GatheredProxies.Items[i]);
                    }

                    writer.Close();
                }

                dlg.Dispose();
            }

给我错误:

System.IO.IOException: 'The process cannot access the file 'C:\Users\JP\Desktop\Scraped Proxies123' because it is being used by another process.'

【讨论】:

  • 请将此信息添加到您的原始答案中(使用编辑链接)并删除此答案。这不是一个答案。
  • 您在调用dlg.OpenFile()时已经打开了文件,因此出现了错误。尝试将 myStream 传递给 StreamWriter 构造函数而不是文件名。
【解决方案2】:

根据你的描述,你希望它自动选择.txt作为文件格式

并且能够输入文件名并自动选择桌面作为文件保存

位置。

你可以试试下面的代码来解决这个问题。

            Stream myStream;
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Title = "";          
            dlg.InitialDirectory = @"C:\Users\username\Desktop";// Use the absolute path of your computer desktop
            dlg.Filter = "txt files (*.txt)|*.txt";
            dlg.FilterIndex = 1;
            if (dlg.ShowDialog() == DialogResult.OK)
            {       
                if ((myStream = dlg.OpenFile()) != null)
                {
                    myStream.Close();
                    StreamWriter writer = new StreamWriter(dlg.FileName);

                    for (int i = 0; i < GatheredProxies.Items.Count; i++)
                    {
                        writer.WriteLine((string)GatheredProxies.Items[i]);
                    }

                    writer.Close();
                }

            }

            dlg.Dispose();

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多