C# Formlar Arası Veri Nasıl Gönderilir? yazımız ile C#’a devam edelim. C# formlar arası veri aktarımı 4 farklı yöntemden bashedeceğim. Tabi önermediğim yöntemlerde var bu 4 yöntem arasında. Ancak ne var ki bazen kullanmamız gerekebiliyor. Bu sebeple en az bir kere kullandığım formlar arası veri gönderme ile ilgili tüm yöntemleri yazacağım.
C# hakkındaki diğer derslerim için tıklayabilirsiniz.
1. YOL – SQL ile formlar arası veri gönderme
İşte bu yolu sürekli kullanmamanızı öneririm. İlla ki gereken bir işleminiz olabilir. O zamanki durum farklı bir durum. Bu yöntemin nasıl yapılacağını kod ile göstermeme gerek yok sanırım. Sql de bir tablo açarsınız. Aktarılacak verileri o kısma yazarsınız ve diğer formlardan çağırırsınız. Önermememin sebebi ise performans açısından büyük sıkıntılar doğuracağıdır. Bu c# formlar arası veri aktarımı daha çok exe ler yani programlar arasında veri göndermede yaygın kullanılır.
2. YOL – Form açarken formlar arası veri gönderme
Bu yöntem belki de en çok kullanacağımız c# formlar arası veri alışverişi yöntemdir. Bu kısa bir kod ile hemen gösterelim. Tabi bir iki küçük işlemimiz daha var. İlk olarak veriyi alacak olan (Form2 diyelim) formda bir public değişken tanımlıyoruz.
Public string KullaniciAdi = string.empty;
Şimdi de veriyi gönderecek olan formdan, veriyi alacak olan formu açalım.
//Yazım Şekli 1 Form2 fr = new Form2(); fr.KullaniciAdi = AlinanKullaniciAdi; //Değişkeni gönderecek olan formda public değişkene gerek yoktur. //Normal bir değişken gönderebiliriz. fr.ShowDialog(); //Yazım Şekli 2 Form2 fr = new Form2() { KullaniciAdi = AlinanKullaniciAdi }; fr.ShowDialog();
Yukarıdaki örnekte gördüğünüz gibi gayet kısa ve kolay bir işlemdir. Ayrıca örnekte iki farklı yazım şeklini verdim. Ben hep yazım şekli 2 olanı kullanıyorum.
3. YOL – Form kapatırken formlar arası veri gönderme
Bu c# ta formlar arası veri aktarımı işlemi 2. Yolun tersi gibidir. Bu yöntemi genellikle işlem formu açıp işlem sonunda önceki forma veri göndermek için kullanırız.
Örnek vermek gerekirse; Bir personel listeniz var. Bu listeden bir ismi kontrol ettiniz baktınız yok. Eklemeniz lazım. Bu liste formu üzerinden (button yada contexmenustrip) kayıt ekleme formunu açtınız. Kaydı yaptınız. Ancak kayıt ekranı kapandığında personel ekleme işlemi yapıldıysa listeyi güncellememiz gerekir değil mi? Peki bunu nasıl yapacağız? İşte kayıt formu kapanırken liste formuna veri göndermemiz gerekiyor ki o veriye göre bir kontrol yapıp listeyi güncelleyelim.
Bu yöntemde veri göndereceğimiz formda (yani liste formu) public değişken tanımlamamıza gerek yok. Bu sefer veriyi gönderecek formda (yani kayıt formu) public değişken olması lazım.
Yukarıda verdiğimiz senaryoya göre kodlarımızı yazalım.
PersonelKayit fr = new PersonelKayit() { PersonelKodu = YeniPersonelKodu //PersonelKodu değişkeni PersonelKayit formunda açtığımız pıblic değişkendir. }; fr.ShowDialog(); texbox1.Text = fr.PersonelKodu; textbox2.Text = fr.PersonelAdi; // kayıt işleminden sonra personel kodunu texbox1' e, personel adini textbox2' ye yazdırdık.
Ancak bu yöntem formu
ShowDialog();
yöntemi ile açarsak çalışacaktır.
Show();
ile açarsak çalışmaz.
Örnekteki kodları açıklarsak; Personeli kaydettik ve kaydettiğimiz personelin kodunu ve adını liste formundaki textbox’lara yazdırdık. Liste yenileme işlemini de bir if ile kolaylıkla yapabilirsiniz. Eğer personel adı ve kodu boş değilse liste yenile gibi… ;)
4. YOL Class kullanarak form arası veri gönderme
Heh. Yine karşımıza çıktı bu class :) Class’lar c# ta form arası veri aktarımı içinde kullanılabilir. Öncelikle bu yöntem için bir class tanımlıyoruz. Adına da GlobalClass diyelim. Sonraki işimiz bu class public yapıyoruz.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Uygulamam { class GlobalClass { } }
İlk açtığımızda class dosyası yukarıdaki gibi olur. Class public değildir. Bu class’ı her formdan erişilebilmesi için pubic yapalım.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Uygulamam { public class GlobalClass { } }
Yukarıdaki örnekteki gibi class’ı public yaptık. Şimdi bu class içerisinde her yerde kullanabileceğimiz değişkenleri tanımlıyoruz.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Uygulamam { public class GlobalClass { public string KullaniciAdi = string.Empty; public int KullaniciKodu = 0; } }
Yukarıdaki kodlarda gördüğünüz gibi tanımladığımız iki public değişken var. Bu değişkenlere projemizdeki tüm formlar ve diğer classlardan erişebileceğiz.
Bu değişkenlere elbette değer atamamız gerekiyor. Yani Örneğin Login formunuzda giriş yapan kullanıcının adını ve diğer bilgilerini bu classtaki değişkene bir değer atamalısınız. Bu atamayı yaptıktan sonra bu class içerisindeki verileri her yerde kullanabilirsiniz. Tabiki, bu değişkenlere başka veri ataması yapmamalısınız.
Burada dikkat edilmesi gereken şey;
Eğer public değişkenleri olduğu gibi bırakırsak yani yukarıdaki gibi olursa, bu değişkenlere ulaşmak için önce class tanımlaması yapmamız gerekecektir.
//form1 GlobalClass glb = new GlobalClass(); private void Form1_Load(object sender, EventArgs e) { this.Text = glb.KullaniciAdi; }
Gördüğünüz gibi, ilk satırda class tanımlaması yaptık. Yaptığmız tanımlamaya verdiğimiz isim ile değişkenimize ulaştık
Eğer bu public değişkenleri static yaparsak yukarıdaki örnekte olduğu gibi class tanımlaması yapmamıza gerek kalmayacaktır. Önce class sonra kullanımını verelim
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Uygulamam { public class GlobalClass { public static string KullaniciAdi = string.Empty; public static int KullaniciKodu = 0; } }
//form1 private void Form1_Load(object sender, EventArgs e) { this.Text = GlobalClass.KullaniciAdi; }
Gördüğünüz gibi bu sefer class tanımlaması yapmadık. Class adı ile class içerisindeki değişkene ulaşabildik.
NOT: Buradaki farkı sağlayan şey değişenlerin Static olmasıdır. Değişkenler Static olduklarından direk ulaşabiliyoruz.
İlk yöntem ile ikinci yöntemi aynı anda kullanamazsınız. Değişkenler statik olmadan ilk kullanım şeklinde görünmez. Statik yaparsanız da ikinci kullanım şeklinde görünmezler.
C# Formlar Arası Veri Nasıl Gönderilir? yazımın sonuna geldik dostlar. Gördüğünüz gibi kullanabileceğiniz (benimde en az bir kere kullandığım) 4 adet c# form arası veri gönderme yöntemi bulunmaktadır. İşin aslı yapacağınız işe göre bu yöntemleri çoğaltabilirsiniz. Mesela bir ini dosyasını yaparak ve verileri ini dosyasına yazdıktan sonra diğer formlardan çekebilirsiniz. Dediğim gibi amaca göre yöntemler çeşitlendirilebilir.
C# hakkındaki diğer derslerim için tıklayabilirsiniz.
C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.
Sağlıcakla ve takipte kalın.