C# 从 ListBox 按钮保存结果?
Posted
技术标签:
【中文标题】C# 从 ListBox 按钮保存结果?【英文标题】:C# Save Results from ListBox button? 【发布时间】: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 而不是 FileSaveDialog 和IO.File.CreateText(Path from your Folde)
,这也解决了 .txt 问题。阅读Create Text File 和FolderBrowser
System.IO.IOException: '进程无法访问文件'C:\Users\JP\Desktop\Scraped Proxies123',因为它正被另一个进程使用。'
【参考方案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();
【讨论】:
以上是关于C# 从 ListBox 按钮保存结果?的主要内容,如果未能解决你的问题,请参考以下文章
在C#如何实现从左边的listbox控件的内容移到右边的listbox控件
在C#窗体应用程序中怎么在窗口关闭前保存ListBox中的内容?代码是怎样的?