2011-10-15 55 views
1

我正在處理我的小應用程序,我需要從listview中獲取項目並將它們寫入到txt文件。有人知道該怎麼做嗎?請幫幫我。MultiColumn列表查看項目到文件

============================================== ===================================

例如: 在列表視圖

Name  | Password 
Me  | YesNoYesNo 
You  | NoYesNoYEs 
Everybody| YESNoYESNo 

在文件:

ME|YesNoYesNo \r\n 
You|NoYESNoYES \r\n 

...

編輯:個 傢伙,我忘了告訴你,我正在使用WPF。抱歉。

回答

2

這裏做並獲得包括在文件中的分隔符的一個老同學的方式:

using (StreamWriter writer = new StreamWriter(@"C:\Desktop\test.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); 
    } 
} 
+0

謝謝,但請看編輯。 – user35443

+0

你可以使用相同的想法。 WPF列表視圖更復雜。我無法確切知道你是如何組織你的專欄的。 –

1

這個怎麼樣......我希望它會幫助你....

在任何事件將觸發您節省:打開文件,在列表中的內容寫文本文件,然後關閉迭代文件。收盤當然可以通過使用來完成:

using (var tw = new StreamWriter(filename)) { 
    foreach (ListViewItem item in listView.Items) { 
    tw.WriteLine(item.Text); 
    } 
} 
+0

謝謝,但請看編輯。 – user35443

0

你可以寫兩行或字節明智的,關閉文件,否則有時更改不會反映:

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(); 
+0

好吧....怎麼可能我讀的數據?沒有分隔符。 – user35443

+0

使用的StreamWriter和WriteLine,我在上面的代碼給了,它會在一個新行寫的每一個項目,因此,儘管從文件中讀取行讀回一行 – shiv

+0

是的,但是我怎麼可以用這個上多列的ListView ??? – user35443