#c# #winforms #file #listview #file-io
#c# #winforms #файл #listview #file-io
Вопрос:
Я работаю над своим небольшим приложением, и мне нужно получить элементы из listview и записать их в текстовый файл. Кто-нибудь знает, как это сделать? Пожалуйста, помогите мне.
=================================================================================
Например: в listview
Name | Password
Me | YesNoYesNo
You | NoYesNoYEs
Everybody| YESNoYESNo
В файле:
ME|YesNoYesNo rn
You|NoYESNoYES rn
…
РЕДАКТИРОВАТЬ: Ребята, я забыл сказать вам, что я использую WPF. Извините.
Ответ №1:
Вот старый школьный способ сделать это и включить ваши разделители в файл:
using (StreamWriter writer = new StreamWriter(@"C:Desktoptest.txt"))
{
StringBuilder line = new StringBuilder();
foreach (ListViewItem item in listView1.Items)
{
line.Clear();
for (int i=0; i<item.SubItems.Count; i )
{
if (i > 0)
line.Append("|");
line.Append(item.SubItems[i].Text);
}
writer.WriteLine(line);
}
}
Комментарии:
1. Вы можете использовать ту же идею. Представления списка WPF более сложны. Я не могу точно сказать, как вы организовали свои столбцы.
Ответ №2:
Как насчет этого…Я надеюсь, что это вам поможет….
При любом событии, которое вызовет ваше сохранение: откройте файл, выполните итерацию по содержимому списка, записывая текст в файл, а затем закройте файл. Закрытие, конечно, может быть выполнено с помощью:
using (var tw = new StreamWriter(filename)) {
foreach (ListViewItem item in listView.Items) {
tw.WriteLine(item.Text);
}
}
Ответ №3:
Вы можете записать как строку, так и байт, закройте файл, иначе иногда изменение не будет отражать:
string tmppath = @".....temp.txt";
FileStream writefile = new FileStream(tmppath, FileMode.Open, FileAccess.Write);
//StreamWriter sw = new StreamWriter(writefile);//To write line
if (File.Exists(tmppath))
{
foreach (ListViewItem itm in listView1.Items)
{
writefile.Write(uniEncoding.GetBytes(f.Text), 0,uniEncoding.GetByteCount(itm.Text));
//OR
//sw.WriteLine(itm.Text);
}
writefile.Close();
//OR
//sw.Close();
Комментарии:
1. Используйте streamwriter и writeline, которые я привел в приведенном выше коде, он будет записывать каждый элемент в новую строку, поэтому при чтении из файла считывайте построчно