C# ComboBox TXT Dosyası ile Doldurma, yazım ile C# eğitim setime devam ediyorum. Bu dersimizde bir metin belgesinde yer alan bilgileri combobox’a doldurma işlemine bakacağız.
C# ComboBox TXT Dosyası ile Doldurma
Bir özel araç servis firması için yaptığım uygulamada araç markalarını sql de bir tablo açmak yerine bir metin belgesine olmasını ve müşterininde bu listeyi dilediği gibi düzenleyebilmesi için böyle bir yola başvurdum.
Yoksa sadece araba markalarını kaydetmek ve değiştirmek için bir sürü işlem yapmam gerekecekti. Bu kadar işlemi yapmak yerine bir metin belgesinden okum işlemi yapmak çok daha kolayıma geldi. Bu dersimde de bu işlemi nasıl yapacağımızı göstereceğim.
Formumuza bir comboBox ekliyoruz ve birde araba markalarını içeren bir metin belgesi hazırlıyoruz.
NameSpace ‘i ekleyelim.
using System.IO;
Ben bu işlemi class üzerinden yaptım. Zaten genel işlemler için kullandığım bir class’ım olduğundan kodlarımı direk class a yazdım. Kodları da buna uygun şekilde vereceğim. Class’lar hakkındaki dersime buradan ulaşabilirsiniz.
public static string AppPath = System.Windows.Forms.Application.StartupPath; // EXE dosyasının yolunu verir. public static void AracMarkalari(ComboBox comboBox1) { string[] lineOfContents = File.ReadAllLines(GlobalClass.AppPath + "\\AracMarkaları.txt", Encoding.GetEncoding("iso-8859-9")); foreach (var line in lineOfContents) { string[] tokens = line.Split('\r'); comboBox1.Items.Add(tokens[0]); } }
Metin belgesinde araç markaları alt alta yazılı olduğundan (Enter) okunan veriyi
line.Split('\r');
Kısmında \r ile splitledik. Programlama da \r = Enter tuşudur.
Ayrıca bu metodumuz parametre olarak ComboBox nesnesi alıyor.
Şimdi bunu nasıl kullanacağımıza bakalım.
Sistem.GlobalClass.AracMarkalari(cmb_arac_marka); // Sistem klasöründe yer alan GlobalClass
Gördüğünüz gibi metoda sadece combobox’un adını yazdık.
Burada ek olarak şu bilgiyi de vermem gerekiyor. Yukarıdaki kod bloğunda
string[] lineOfContents = File.ReadAllLines(GlobalClass.AppPath + "\\AracMarkaları.txt", Encoding.GetEncoding("iso-8859-9"));
satırındaki
Encoding.GetEncoding("iso-8859-9")
Kısmına dikkatinizi çekmek istiyorum.
C# Encoding
Eğer bu şekilde encode etmeden okuma yaparsak Türkçe karakterler soru işareti şeklinde olacaktı.Bu şekilde saçma karakterler çıkmasın diye C# Encode Türkçe Karakter okuma işlemi gerçekleştirdik.. Bu encoding işlemi metin belgesinden yada genel olarak metin içeren bütün dosyalarda geçerlidir. Türkçe karakterleri doğru bir şekilde okumasını istiyorsak yukarıdaki gibi encoding yaparak okumak zorundayız.
Genellikle, C #, varsayılan olarak Unicode kullanarak dizeleri ve dosyaları işler. Yukarıdaki encoding işlemlerinde başka dillerdeki dosyaları okuma konusunda sıkıntılar yaşayabilirsiniz.
Bu yüzden gerçekten başka bir şeye ihtiyacınız yoksa, bunun yerine şunu denemeniz tavsiye edilir.
Metin dosyanızı not defterinde (veya başka bir programda) açın ve UTF-8 dosyası olarak kaydedin . Daha sonra, kodunuzda herhangi bir değişiklik yapmadan beklenen sonuçları almalısınız. Bunun nedeni, C #, kaydettiğiniz kodlamayı kullanarak dosyayı okur. Bu, tercih edilmesi gereken varsayılan davranıştır.
Metin dosyanızı UTF-8 olarak kaydettiğinizde, C # bu şekilde yorumlayacaktır.
C# ComboBox TXT Dosyası ile Doldurma, dersimizde bu kadardı arkadaşlar diğer derslerimizde görüşmek üzere…
C# Eğitim setimizin 124. dersidir. :)
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…Burada da 16. dersimiz oldu. Boş vakitlerimde eski derslerimi de Github Projeme eklemeyi düşünüyorum.
Bu dersimizde bu kadar dostlar. Sağlıcakla ve takipte kalın. ;)
Saatlerdir comboboxtaki karakter probleminin çözümünü arıyordum. Meğer çözüm “Encoding.GetEncoding(“iso-8859-9″)” kod parçacığıymış. Çok teşekkür ederim.
Faydalı olmasına sevindim. Teşekkürler.