C# WPF Listbox İçindeki İtemleri Kaydetmek

Durum
Mesaj gönderimine kapalı.

Hello

Hectopat
Katılım
2 Temmuz 2014
Mesajlar
555
Makaleler
2
Daha fazla  
Cinsiyet
Erkek
Merhaba. Şimdi kullanıcı openFileDialog ile Listbox'a item ekliyecek ve eklediği itemlerin doya yolunu alıcak. Programı kapatıp açınca ListBox içerisinde yer alan itemlerin kaydedilmiş olması lazım. Listbox'da seçilen iteme tıklanıncada aldığı dosya yolu ile openFileDialog yardımıyla açtığı dosyayı açması lazım. 2 gündür bu konu hakkında araştırmalar yapıyorum ama nafile. Hiçbirinden sonuç alamadım. Yardım ederseniz çok iyi olucak. @Fatih Apaydın @AhmetAksoy
 
Gecikme için kusuruma bakmayın. Bu ara oldukça yoğun çalışıyorum. Ara ara foruma katkıda bulunmaya çalışıyorum.

Biraz nostalji yapıp çözümü Windows Forms ile yaptım. Formunuza toolboxtan bir openfiledialog kontrolü ekleyin. Ayrıca kodun using kısmında "using System.Xml.Serialization;" satırını da ilave etmeyi unutmayın. Dosya adlarını kaydetmek için benim favorim olan xml serileştirme kullandım. Umarım işinize yarar.
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

         //Birden fazla yerde kullandığımdan bu değişkeni global yaptım
        string kaydedilecekDosyaYolu = System.AppDomain.CurrentDomain.BaseDirectory + "\\dosyaAdlari.xml";


        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                //Uygulamadan çıkarken kaydettiğimiz dosya adlarını listboxa ekleyelim
                List<string> dosyaAdlari = new List<string>();

                using (System.IO.StreamReader okuyucu = new System.IO.StreamReader(kaydedilecekDosyaYolu))
                {
                    XmlSerializer deSerilestirici = new XmlSerializer(typeof(List<string>));
                    dosyaAdlari = (List<string>)deSerilestirici.Deserialize(okuyucu);
                }

                for (int i = 0; i < dosyaAdlari.Count; i++)
                {
                    listBox1.Items.Add(dosyaAdlari[i]);
                }
            }
            catch//Kaydettiğimiz dosya yoksa sessizce hatayı fırlat. Boş bir listbox demek bu
            {
           
            }
        }


        private void btnDosyaEkle_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if (!String.IsNullOrWhiteSpace(openFileDialog1.FileName))
                {
                    listBox1.Items.Add(openFileDialog1.FileName);
                }
            }
        }



        //listboxdan dosya adını seç ve çalıştır
        private void btnCalistir_Click(object sender, EventArgs e)
        {
            var secilenDosya = listBox1.SelectedItem as string;

            if (secilenDosya != null)
            {
                System.Diagnostics.Process.Start(secilenDosya);
            }
        }

         //Çıkışta dosya adlarını xml dosyasına kaydediyoruz.
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //listboxdaki tüm dosya adlarını kaydetmek için almalıyız.

            List<string> dosyaAdlari=new List<string>();

            for (int i = 0; i < listBox1.Items.Count; i++)
            {
             dosyaAdlari.Add(listBox1.Items[i].ToString());
            }
            //Çıkışta dosyaları xmle kaydedelim
            using (System.IO.StreamWriter yazici = new System.IO.StreamWriter(kaydedilecekDosyaYolu))
            {
                XmlSerializer serilestirici = new XmlSerializer(typeof(List<string>));
                serilestirici.Serialize(yazici, dosyaAdlari);
            }
           
        }

    



    }
}
 
@Fatih Apaydın hocam çok teşekkür ederim. Kaç gündür araştırıyorum sonunda kesin bir çözüm buldum. Kodlarda bir sorun olursa ileteceğim, olacağini sanmıyorum ama.

Hocam kodu WPF'ye uyarladım sorunsuz ve tam olarak istediğim gibi çalıştı. Çok mutlu oldum gerçekten 2 gündür kafayı yiyecektim. Allah razı olsun. @MF konu çözüldü kapanabilir.
 
Durum
Mesaj gönderimine kapalı.
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…