Zapisywanie za pomocą Button

0

Witam,
Mam pytanie a mianowicie chciałabym po naciśnięciu button na form1 zapisać do pliku wartości przekazane do listy w formie2. Zrobiłam tak:

To jest ten form1:

private void button2_Click(object sender, EventArgs e)      // przycisk "Zapisz do pliku"
        {
            List<Document> docs1;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                using (Stream open = File.Open(saveFileDialog1.FileName, FileMode.CreateNew))
                using (StreamWriter save = new StreamWriter(open))
                {
                    save.Write(docs1);
                    save.Close();
                }
            }
        }
 

natomiast lista wygląda tak:

private void button1_Click_1(object sender, EventArgs e)   
        {
            Document add1 = new Document(); 

            add1.nazwa = textBox1.Text;
            add1.data = textBox2.Text;
     
            docs1.Add(dododania);
 

Czy ktoś mógłby mnie naprowadzić? Wydaje mi się, że źle przekazuję tą listę do form1.

0

Ja tu nie widzę abyś cokolwiek przekazywała. Ty tej listy nawet nie inicjujesz.

Musisz przekazać listę do drugiej formy.

class Form1
{
    List<string> list = new List();
    void ShowForm2()
    {
        Form2 f2 = new Form2(list);
     }
}
class From2
{
    List<string> list;
    Form2(List<string> list)
    {
         this.list = list;
     }
     void AddItemToList()
     {
          list.Add("tekst");
      }
}
0

Kod

0

Trzeba zmienić save.Write(docs1); na save.Write(docs); ponieważ to docs wysyłasz do drugiej formy. A docs jest tam chyba tylko marnotrawstwem przestrzeni bo nie jest używany.
A to save.Write(docs1); nie zapiszę Ci listy a jedynie wywoła na niej metodę ToString i to zapisze do pliku. Szukaj hasła serializacja.

@marllen W zasadzie to możesz też zrobić to inaczej. Jako że jesteś początkująca to może dobrą nauką było by dla Ciebie samemu napisanie takiego serializera. Czyli przechodzisz po całej liście pobierasz elementy i każdy obiekt zapisujesz w nowej linii w pliku txt, oddzielając właściwości każdego itemu jakimś znakiem czyli coś typu.
NazwaCzegośTam#NrFaktury#Data#itp
Później wczytując pobierasz linijka po linijce i musisz dodać to z powrotem do listy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1