58 C# Görsel Programlama 58 ShowDialog Kullanımı

Merhabalar herkese. Bu yazımda sizlere başlıkta da gördüğünüz gibi ShowDialog metodu nedir nasıl kullanılır ne için kullanılır bunlardan bahsetmeye çalışacağım.

Bizler bir form üzerinde çalışırken projelerimizde birden fazla formumuz varsa bu formlar arasında geçişler yaparız. Farklı bir formu açarken kullandığımız iki metod vardır. Biri Show diğeride ShowDialog metodudur. Burada ShowDialogdan bahsedeceğim. 

Öncelikle bir forma yeni form nasıl eklenir onu görelim.

Solution Explorer da projemiz adı üzerine sağ tıklayıp aşagıdaki işaretleri işlemleri sırası ile uygulayalım.



Gelen ekranda Windows Forms eklicemizi belirttik. İstersek Name kısmından adını değiştirebiliriz. Add dedik ve ekledik. 


Görüldüğü gibi projemize yeni bir form eklenmiş oldu.



Şimdi projemizi görelim kısaca.



İlk formda Form Aç butonuna tıklandığında ikinci formumuz açılacak ve ikinci formda da kapat dediğimizde form kapansın isteyeceğiz.

Öncelikle kısaca bir kaç bilgi vereyim.

Form nesnesi bu şekilde projeye dahil edildiği anda dahil edilen bu sınıf System.Windows.Forms uzayındaki Form sınıfının bir mirascısıdır ve tüm özelliklerini taşıyacaktır.

Buradan bu nesnenin öncelikle new anahtarı ile oluşturulması gerekir.



Form2 nin özelliklerini taşıyacak frm2 diye bir form nesnesini ürettiğimizi söyledik. Bundan sonra frm2 yi her çağırdığım yerde Form2 yi getirecektir bana.

Öncelikle direk işlem yapalım Show ile form2 yi açalım.




Bu şekilde bir kullanım ile Form Aç butonuna tıkladığımızda Form2 yi açacaktır. Ama Form1 de aynen ekranda kalacaktır.

Görelim.


Tabi bu durum bizim için bir handikap ortaya çıkarıyor. Buton içine her defasında yeniden formu üretme kodlarını yazdığımız için Form1 in açık kalması biz programcılar için büyük sıkıntı olacaktır. Kullanıcı yeniden Form Aç dediği sürece istediği kadar form ekranda açılacaktır.


Buda büyük bir proje yaptığınızı düşünürseniz büyük sorunlar ortaya çıkaracaktır.

Gelin adım adım kodlarımızı optimize edelim.

Öncelikle tekrar tekrar form açmanın önüne geçelim.

Bunun için işte ShowDialog metodu imdadımıza koşuyor. Bu metodumuz DialogResult türünde bir değer döndürür geriye. İlk önce nasıl açılmasına izin vermediğini görelim.


Bu halde iken Form Aç desekte açmayacaktır. 

Çünkü ShowDialog un çalışma mantığı kendisi diğer formdan kapatma olayını almadan bir önceki form üzerinde işlem yapılmasına izin vermeyecektir. Sadece buda değil diğer form üzerinde ShowDialog altına farklı kodlarda yazılmış olsa öncelikle diğer formun kapatılması beklenir o kodların çalışması için. Bu arada ShowDialog geriye sadece e parametresinden Cancel olayını almaktadır. 


Biraz daha profesyonel bir işe doğru ilerleyelim. Form 1 nesnemizi öncelike Hide ile gizleyelim..




Böylelikle formumuz gizlendi. Ama bu şekilde bırakır isek çok büyük hatalarıda beraberinde almış olacağız. Çünkü gizlediğimiz ilk form hala açık ve program çalışıyor vaziyette kaldı. Tekrar build edersek exe çalıştığı için build etmeyecektir. O zaman diğer form kapatıldıkran sonra ilk formu görünür hale getirmeliyim.


Bu şekilde yazdığımızda ise hiç bir problem yaşamadan formlar arasında geçiş işlemlerini tamamlamış olacağız.

Böyle bir durumda bellekte gizlenen bu formlar silinmeyecektir. Bir örnekleri hep bellekte tutulacaktır. Ama bir kontrol ile hem nasıl geriye DialogResult türünde değer döndürdüğünü görelim hemde kapatılan formu bu kontrolü sağlayarak kapatılan formu bellektende silelim.

Şunuda belirteyim zaten geriye tek değer dönmektedir o yüzden aslında kontrole gerek yoktur ama yinede göstermek için bunu yapacağım. Yoksa direk altına kod olarak yazsak aynı işlemi yaptırabiliriz.




ShowDialogun avantajlarından ve kullanımından bahsetmeye çalıştım umarım faydalı bir yazı olmuştur. Yorumlarınızla destek olursanız sevinirim. İyi çalışmalar. Selametle.

Murat Bilginer

Yorumlar