C# 将列表框的项目保存到文本文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2293298/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Saving the items of a listbox to a text file
提问by roller
How can I save the contents of my listbox
items to a text file using a SaveFileDialog
?
如何listbox
使用SaveFileDialog
? 将项目的内容保存到文本文件中?
I also want to add additional information to the text file and also add a MessageBox
saying saved when it's been successful.
我还想在文本文件中添加其他信息,并添加MessageBox
成功时保存的说法。
回答by Asad
To Save
保存
// fetch the selected Text from your list
string textToRight = listBox1.SelectedItem.ToString();
// Write to a file
StreamWriter sr = File.CreateText(@"testfile.txt");
sr.Write(textToRight);
sr.Close();
Message
信息
// display Message
MessageBox.Show( "Information Saved Successfully" );
回答by Tanzelax
A SaveFileDialog
is used with ShowDialog()
to show it to the user, and if it's successful, using its OpenFile()
to get the (File)Stream
that you write to. There's an example on the msdn page.
ASaveFileDialog
用于将ShowDialog()
其显示给用户,如果成功,则使用它OpenFile()
来获取Stream
您写入的(文件)。msdn 页面上有一个示例。
A ListBox
can be accessed through its Items
property, which is simply a collection of the items on it.
AListBox
可以通过它的Items
属性访问,它只是它上面的项目的集合。
回答by Paul Kohler
You have a few things going on there - make sure you split them up, e.g.
你有一些事情在那里 - 确保你把它们分开,例如
- Get list box contents
- Append Info
- Write File
- 获取列表框内容
- 附加信息
- 写文件
Please note!!There is a myriad of exceptions you can get while saving a file, see the docs and handle them somehow...
请注意!!在保存文件、查看文档并以某种方式处理它们时,您可以获得无数异常...
// Get list box contents
var sb = new StringBuilder();
foreach (var item in lstBox.Items)
{
// i am using the .ToString here, you may do more
sb.AppendLine(item);
}
string data = sb.ToString();
// Append Info
data = data + ????....
// Write File
void Save(string data)
{
using(SaveFileDialog saveFileDialog = new SaveFileDialog())
{
// optional
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
//saveFileDialog.Filter = ???;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFileDialog.Filename);
MessageBox.Show("ok", "all good etc");
}
else
{
// not good......
}
}
}
回答by nbushnell
this should do it.
这应该这样做。
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog f = new OpenFileDialog();
f.ShowDialog();
ListBox l = new ListBox();
l.Items.Add("one");
l.Items.Add("two");
l.Items.Add("three");
l.Items.Add("four");
string textout = "";
// assume the li is a string - will fail if not
foreach (string li in l.Items)
{
textout = textout + li + Environment.NewLine;
}
textout = "extra stuff at the top" + Environment.NewLine + textout + "extra stuff at the bottom";
File.WriteAllText(f.FileName, textout);
MessageBox.Show("all saved!");
}
回答by spajce
var saveFile = new SaveFileDialog();
saveFile.Filter = "Text (*.txt)|*.txt";
if (saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (var sw = new StreamWriter(saveFile.FileName, false))
foreach (var item in listBox1.Items)
sw.Write(item.ToString() + Environment.NewLine);
MessageBox.Show("Success");
}
Also take note the StreamWriter
has a Type of Encoding.
还要注意StreamWriter
有一个 Type of Encoding。