C# Form Closing ile Formlar Arası Geçiş

Uzun zamandan beri Csharp ile ilgili bir yazı hazırlamadım. Bu problemi ortadan kaldırmak adına bu yazıyı hazırlamaya karar verdim. Eğer C# ile program yazıyorsanız belki de en çok kullanacağınız yapılardan biri olan formclosing özelliği ve sonrasında Windows Formları arasında nasıl geçiş yapılacağı hakkında bilgi vereceğim.

FormClosing Olayı Ne İşe Yarar?

Eğer geliştirmekte olduğunuz C# uygulamasında aktif olan form ekranını kapatırken veya birden fazla form kullanacaksanız ve bu formlar arasında geçişler yaparak programı çalıştıracaksanız FormClosing event özelliğini kullanmak zorundasınız.

Bu özelliğin anlamı tam olarak ilgili form kapatılırken şu satırları çalıştır demektir. Aşağıdaki kod mantığıyla çalışır.

void f2_FormClosing(object sender, FormClosingEventArgs e)
{

}

FormClosing ile FormClosed olayları birbirleri ile karıştırılır. İkisi arasındaki en önemli fark FormClosing ile form kapatılırken yapılmak istenilen kodlar çalıştırılır. FormClosed ile form kapatıldıktan hemen sonra yapılmak istenilen kodlar çalıştırılır.

Ayrıca FormClosing özelliği genellikle başka bir form üzerinden çalıştırılır. Ya da MessageBox özelliği kullanılır. FormClosing ve FormClosed özelliklerinin çalışması için kapatma butonu olan X işaretine basılması gerekir.

C# Formlar Arası Geçiş Nasıl Yapılır?

İki Windows formu arasında geçiş yapmak istediğimiz zaman aktif olan form sayfası üzerinden diğer sayfaya geçiş yapmak gerekir. Bu işlemi gerçekleştirmek için diğer form sayfasını aktif olan sayfada tanımlamak gerekir. Bu işlem için aşağıda gösterdiğim gibi public sınıfı içinde açılacak forma özel bir isim atıyoruz. Ben burada açılacak formun ismini f2 olarak belirledim.

public Form1()
{
InitializeComponent();
}
Form2 f2;

Yukarıdaki işlemi gerçekleştirdikten sonra ilk form üzerinde ikinci formu çalıştırabilirim. Bu işlem için bir adet buton kullandım. Buton burada click edildiği anda açık form sayfasını kapatıp diğer formu açacak şekilde programlandı.

private void btnform1_Click(object sender, EventArgs e)
{
this.Hide();
f2 = new Form1();
f2.FormClosing += f2_FormClosing;
f2.ShowDialog();
}

Hide özelliği ile açık sayfa gizlenir.(Kapatılmaz. İstenildiği zaman tekrar aktif edilebilir.)

Public kısmında tanımladığımız f2 ile ise yeni Form sayfası aktif edilir. Sonrasında ShowDialog ile yeni sayfa aktif hale getirilir.

f2.FormClosing += f2_FormClosing; satırı ile f2 formclosing yapısı ile f2 üzerinden f1 formunu kapatabiliriz.

FormClosing içine kod yazmak için f2.FormClosing +=  yazdıktan sonra iki kez tab tuşuna bastıktan sonra alt satırda şu satırlar oluşur.

void f2_FormClosing(object sender, FormClosingEventArgs e)
{
throw new NotImplementedException();
}

Bu satırın içine f2 formu kapatılırken çalışmasını istediğiniz kodları yazabilirsiniz. Bu aşamada genellikle DialogResult ile formun kapatılmak istenilip istenilmediği sorulur. Yada diğer formlar çalıştırılır yada kapatılır.

void f2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Close();
}

Ben yukarıda gördüğünüz gibi Form2’nin FormClosing olayı içine Form1’i kapatacak kodu yani this.close(); yazdım. Bu satır ile Form2 kapatıldıkdan sonra hide durumunda olan Form1’i kapatarak programın tamamen sonlandırılmasını sağlıyorum. Eğer bu son kodu yazmasaydım her iki Form sayfası gözükmüyor olsa da Form2 kapatıldığında Form1 gizli olarak çalışıyor olacağından program sonlanmamış olacaktı.

Bu örnek ile ilgili problemleriniz yada sorularınız varsa yorum kısmından sorabilirsiniz. Ayrıca aşağıda bu yazıyı hazırlarken yaptığım ilgili basit programı paylaşıyorum. Bu sayede anlatmak istediklerimi daha iyi anlayabilirsiniz.

Formlar Arası Geçiş İçin Örnek Uygulama

Yorumlar (7)

  1. akın 16 Aralık 2013
  2. Dilan YILMAZ 19 Aralık 2013
  3. Dinçer ÖZGÜR 23 Mart 2014
  4. suat aslan 20 Ağustos 2015
  5. Diji 17 Ocak 2016
  6. Hamid 20 Şubat 2017

Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.