首页 > 解决方案 > C# 从 ListBox 按钮保存结果?

问题描述

我在 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 作为文件格式,能够输入文件名并自动选择桌面作为文件保存位置,同时仍然能够更改文件的位置应该被保存?

标签: c#visual-studiosavesavefiledialog

解决方案


            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.'

推荐阅读