7 Mayıs 2014 Çarşamba

53 C# Görsel Programlama 53 C# da Formlar Arası Geçiş

Merhabalar herkese. Bu yazımda sizlere C# da formlar arası geçiş olayını anlatmaya çalışacağım.

O zaman Bismillah diyelim ve başlayalım.

Yazdığımız pek çok programda birden fazla form ögesi kullanmamız gerekebilmektedir. Bu da bize bir form açıkken diğer forma nasıl geçiş yapabilirim sorununu doğurmaktadır. Şimdi detaylı olarak bunu incelemeye çalışacağız.

Çalışma yapacağımız formumuzu görelim.


Form1 ve Form 2 şeklinde iki formumuz mevcut. Öncelikle şuna bakalım bir C# projesine yeni bir form nasıl eklenir bundan bahsedeyim. Bir C# projesi açtığımızda aşağıdaki resimdeki yolları takip ederek projemize yeni formlar dahil edebiliriz.




2. resmimizde formumuza istediğimiz ismi verebiliriz ve verdiğimiz bu isim bizim için biraz anahtar niteliği taşıyacak. Bu isimle bir form nesnesi oluşturmuş olacağız ve eğer bu formdan nesneler türetmek istersek bu isim ile nesne üretme işlemi yapacağız.

Şu şekilde ayarladığım Form2 de projemize dahil oldu artık.



Hangi forma geçiş yapacaksak öncelikle ilk yapmamız gereken o formdan yeni bir nesne türetmektir. O işlemi de şu şekilde yapacağız.

Burada frm2 dediğim nesnemize verdiğimiz özel isim bundan sonra bu isimle nesnemize ulaşacağız. İstediğimiz şekilde, isimlendirme kurallarına uyarak bu tanımlama işlemini yapabiliriz.

Şimdi yapacağımız işlem ise şu Form2 ye geç tuşuna bastığımızda bizi Form2 ye geçirecek kodları yazmak.

O kodlarda şöyle olacaktı. İlk görelim sonrada tek tek açıklayalım.



Evet yeni bir forma geçiş yapacağımız için mevcut formu öncelikle ortadan kaldırmalıyız. Bu işlemede nesneleri gizleyen görünmez kılan Hide(); metodu ile yaparız. Üzerinde çalıştığımız form ile ilgili işlemler yapıyorsak o formdan this diye bahsederiz bunu unutmamalıyız. İlk kodumuz ile mevcut formu gizledik. Daha sonra görünmesini istediğimiz formu ShowDialog(); Metodu ile görünür yapıyoruz. Bu Form2 nin açılmasını sağlıyor.

Aklımıza şu sorular gelebilir niçin ShowDialog kullandık Show kullansakta olmaz mıydı? Niçin son kod ile ilk formu gösterme gereksinimi duyuyoruz?

Form geçişlerinde en yaygın yapılan hatalardan birini anlatacağım şimdi. 

Olaya şöyle bakalım, eğer ilk kodumuz ile formumuzu gizledik formun gizlenmiş olması onun sadece görünmez olduğunu gösterir tamamen sonlandığını göstermez. Daha sonra ben eğer ShowDialog ile değilde sadece Show ile diğer forma geçiş yapsaydım ve son kodu da kullanmasaydım şu olacaktı. 2. forma geçiş yapılacaktı ama kullanıcı o formu exit yani çarpıdan kapattığı anda o form kapanmış olacaktı. Ama proje hale çalışır vaziyette kalacaktı. Çünkü gizlemiş olduğumuz ilk form hala çalışır durumdadır. Görünür kılmadığımız için programı normal yollardan kapatma fırsatımız da olmayacaktı. 

Biz program kapandı sanacaktık. Daha sonrasında programı yazmaya bir şeyler daha eklemeye devam ettiğimizde ve programı tekrar derlediğimizde görecektik ki eklediğimiz yeni özellikleri göremiyoruz eski hali geliyor. Veri tabanına kayıt yapıyoruz ama sonra bir bakıyoruz o kayıtlar silinmiş. İşte bu sorunların tek sebebi programın altta hala çalışıyor olmasıdır. Exe si çalışan bu program üzerinde de Visual Studio sizin yeni değişiklikler yapmanıza izin vermeyecektir.

İşte bu sorunu aşmak için ShowDialog ile formumuzu açıyoruz. Daha sonra 2. formu kapatınca ShowDialogun kaldığı yerden kodları çalıştırmaya devam edecektir. Ve son kodumuz ile Form1 i tekrar görünür yaptık. Böylelikle oluşabilecek tüm hataların önüne geçmiş oluyoruz.

Şimdi tabi bizler büyük projelerle uğraşırken ne yazık ki tek form ile işleri tamama erdiremiyoruz. Birden çok form varsa ve sürekli geçişler mevcut olacaksa şöyle bir problemle karşı karşıya kalıyoruz. Her defasında aynı kodları tekrarlamak gibi bir problem oluşuyor. Biz programcılar programlarımız da aynı kodların tekrarına tahammül edemeyiz o zaman biz bu işimiz için bir metod yazmalıyız fikri doğuyor. Şimdi bir metod ile formlar arasında geçişi görelim ve bu dersimizin sonuna gelelim.

Yazacağımız metoda parametre olarak bir Form değişkeni göndereceğiz. Bu değişken üzerinden de işlem gerçekleşecek.

Metodumuz;


Metodu aşağıdaki gibi de çağırıyoruz.


Son olarak yaptığımız işi görelim.



İşte bu kadardı arkadaşlar. Umarım yararlı bir yazı olmuştur. Çalışan arkadaşlarıma kolaylıklar dilerim.Vesselam.


Murat Bilginer











Hiç yorum yok:

Yorum Gönder