2013-12-15 16 views
5

Gần đây tôi đã rất thích C# và tôi chỉ thử nghiệm với nó nhưng có vẻ như là một phần tôi không nhận được.C# Lưu tất cả các mục trong một ListBox vào tập tin văn bản

Về cơ bản tôi muốn nó để khi tôi nhấp vào nút LƯU, phải lưu tất cả các mục trong hộp danh sách vào một tệp văn bản. Tại thời điểm tất cả nó đi kèm với trong tập tin là System.Windows.Forms.ListBox+ObjectCollection.

Đây là những gì tôi đã có cho đến nay. Với phần SaveFile.WriteLine(listBox1.Items); tôi đã thử đặt nhiều phương pháp khác nhau vào và tôi không thể hình dung ra được. Cũng nên nhớ rằng trong sản phẩm cuối cùng của chương trình của tôi, tôi muốn nó đọc lại tập tin văn bản đó và xuất tập tin văn bản vào hộp danh sách, nếu điều này là không thể thì xấu, tôi mới C# sau khi tất cả;)

private void btn_Save_Click(object sender, EventArgs e) 
{ 
    const string sPath = "save.txt"; 

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
    SaveFile.WriteLine(listBox1.Items); 
    SaveFile.ToString(); 
    SaveFile.Close(); 

    MessageBox.Show("Programs saved!"); 
} 

Trả lời

9

Từ mã của bạn

SaveFile.WriteLine (listBox1.Items);

chương trình của bạn thực sự thực hiện điều này:

SaveFile.WriteLine(listBox1.Items.ToString()); 

Phương pháp .ToString() của bộ sưu tập Items trả về tên loại của bộ sưu tập (System.Windows.Forms.ListBox+ObjectCollection) vì đây là hành vi mặc định .ToString() nếu phương pháp này là không ghi đè.

Để lưu dữ liệu theo cách có ý nghĩa, bạn cần phải lặp máng từng mục và viết theo cách bạn cần. Dưới đây là mã ví dụ, tôi giả sử các mục của bạn có triển khai .ToString() thích hợp:

System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
foreach(var item in listBox1.Items) 
{ 
    SaveFile.WriteLine(item.ToString()); 
} 
6

Items là một bộ sưu tập, bạn nên lặp qua tất cả các mục của bạn để tiết kiệm cho họ

private void btn_Save_Click(object sender, EventArgs e) 
{ 
    const string sPath = "save.txt"; 

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
    foreach (var item in listBox1.Items) 
    { 
     SaveFile.WriteLine(item); 
    } 

    SaveFile.Close(); 

    MessageBox.Show("Programs saved!"); 
} 
Các vấn đề liên quan