Çözüldü listBox'a verileri kaydetme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

YusufYlmz

Hectopat
Katılım
12 Temmuz 2020
Mesajlar
201
Çözümler
1
Merhaba, yazılım ile ilgili çok bir bilgim yok basit bir uygulama yapmam gerekiyor. listBoxa uygulama çalışır vaziyetteyken kelimeler giriyorum butona bastığımda rastgele bir kelime labelde çıkıyor (Buraya kadar hallettim.). Ancak uygulamadan çıktığımda listBox'daki kelimelerin kaydedilmesi gerekiyor, nasıl yapabilirim?

2.PNG
1.PNG
 
Son düzenleyen: Moderatör:
Çözüm
Bunun için 3 işlem yapman gerekiyor.

Girdi çıktı işleri için gerekli kütüphane.
C#:
using System.IO;

Global alana bir dosya ismi belirtmen lazım.
C#:
string path_file = "readfile.txt";

1. Form açılırken verileri getirmen gerekiyor.
C#:
private void Form1_Load(object sender, EventArgs e){
    if (File.Exists (path_file)){
        using (StreamReader sr = new StreamReader(path_file)){
            string row;
            while ((row = sr.ReadLine()) != null){
                listBox1.Items.Add(row);
            }
 
        }
    }
}

2. Butona tıklayınca veriyi ListBox'a aktarman gerekiyor.
C#:
private void button1_Click(object sender, EventArgs e){
    listBox1.Items.Add(textBox1.Text.Trim());
}

3. Programı kapatırken verileri dosyaya aktarma işlemini yapman gerekiyor.
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e){
    StreamWriter writer = new StreamWriter(path_file);
    for (int a = 0; a <= listBox1.Items.Count - 1; a++){
        writer.WriteLine(listBox1.Items[a].ToString());
    }
    writer.Close();
}
Bunun için 3 işlem yapman gerekiyor.

Girdi çıktı işleri için gerekli kütüphane.
C#:
using System.IO;

Global alana bir dosya ismi belirtmen lazım.
C#:
string path_file = "readfile.txt";

1. Form açılırken verileri getirmen gerekiyor.
C#:
private void Form1_Load(object sender, EventArgs e){
    if (File.Exists (path_file)){
        using (StreamReader sr = new StreamReader(path_file)){
            string row;
            while ((row = sr.ReadLine()) != null){
                listBox1.Items.Add(row);
            }
 
        }
    }
}

2. Butona tıklayınca veriyi ListBox'a aktarman gerekiyor.
C#:
private void button1_Click(object sender, EventArgs e){
    listBox1.Items.Add(textBox1.Text.Trim());
}

3. Programı kapatırken verileri dosyaya aktarma işlemini yapman gerekiyor.
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e){
    StreamWriter writer = new StreamWriter(path_file);
    for (int a = 0; a <= listBox1.Items.Count - 1; a++){
        writer.WriteLine(listBox1.Items[a].ToString());
    }
    writer.Close();
}
 
Son düzenleme:
Çözüm
Bunun için 3 işlem yapman gerekiyor.

Girdi çıktı işleri için gerekli kütüphane.
C#:
using System.IO;

Global alana bir dosya ismi belirtmen lazım.
C#:
string path_file = "readfile.txt";

1. form açılırken verileri getirmen gerekiyor.
C#:
private void Form1_Load(object sender, EventArgs e){
 if (File.Exists (path_file)){
 using (StreamReader sr = new StreamReader(path_file)){
 string row;
 while ((row = sr.ReadLine()) != null){
 listBox1.Items.Add(row);
 }

 }
 }
}

2. butona tıklayınca veriyi Listbox'a aktarman gerekiyor.
C#:
private void button1_Click(object sender, EventArgs e){
 listBox1.Items.Add(textBox1.Text.Trim());
}

3. programı kapatırken verileri dosyaya aktarma işlemini yapman gerekiyor.
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e){
 StreamWriter writer = new StreamWriter(path_file);
 for (int a = 0; a <= listBox1.Items.Count - 1; a++){
 writer.WriteLine(listBox1.Items[a].ToString());
 }
 writer.Close();
}

Hocam anladığım kadarıyla yaptım ama olmadı gibi gözüküyor :) hataların sebeplerini söyleme şansınız var mıdır acaba?
(Burada söylemek ne kadar doğru bilmiyorum ama deprem nedeniyle hayatını kaybedenlere Allah'tan rahmet diliyorum)
 

Dosya Ekleri

  • eror.PNG
    eror.PNG
    96,8 KB · Görüntüleme: 27
Kodları bire bir kopyalama yapmışsınız. Form Load, Button Click gibi işlemleri Form üzerinden siz çift tıklayıp yapmanız lazım. Ardından benim size vardigim kodların içeriğini ilgili alanlara eklemeniz yeterli.

Hocam form load için Form'a, button Click için butona çift tıklıyorum ama formclosingi nasıl yapacağımı bulamadım.
 
Ek olarak path_file string değişkenini Namespace dışına yazmışsınız. Onu içeriye alın. Yani public partial yazan kısmın içine.

Hocam çok teşekkürler dediğiniz gibi yaptım her şeyi şu an çalışıyor ama son bir sorum olacak. Bu kelimeler formu her kapattığımda kaydediliyor. Bunları istediğim zaman kaldırabilir miyim listeden?
 
Programın olduğunu dizin içinde readfile.txt dosyası oluşturuyor program. O dosyaya müdahale ederek silebilirsiniz. Veya Listbox üzerinden seçilen veriyi silme yapabilirsiniz. Onun için ek buton ekleyin ve şu kodu girin;

C#:
listBox1.Items.Remove(listBox1.SelectedItem)
 

Geri
Yukarı