Formlar Arası Geçiş İşlemi

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

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

  1. akın diyor ki:

    İnternette çok arama yapmama rağmen sadece sizin yaptığınız örnek aradığım şey olarak karşıma çıkıyor. Yani asıl istediğim bu kodlardı. Ancak yaptığınız örneği indiremiyorum tekrar yükler misiniz? ve de çok teşekkürler.

  2. Dilan YILMAZ diyor ki:

    teşekkürler çok yardımcı oldunuz.

  3. Dinçer ÖZGÜR diyor ki:

    Teşekkür ederim. Aradığım şey tam olarak buydu.

  4. suat aslan diyor ki:

    verdiğiniz bilgiler için çok teşekkür ederim.

  5. Diji diyor ki:

    Merhabalar emeğiniz için çok teşekkürler. Benim sorunum Form1 den geçiş yaptığım Form2 de uygulamayı kapatınca (Sağ üstteki kapatma tuşu ile) uygulamanın arka planda çalışmaya devam etmesiydi. İngilizce ya da Türkçe çok yerde aradım bir çok farklı yöntem denedim ya tam olarak uygulayamadım ya da yöntemler işe yaramadı ama bu kısa kod bütün soru çözdü. Teşekkürler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir