Show() ve ShowDialog() Methodları

Bu yazımda Windows Form Uygulamalarında her zaman kullandığımız Show() ve ShowDialog() methodları arasındaki ince ama önemli çizgiye değinelim.

Şimdi farkı bir örnek yaparak inceleyelim. Bir adet proje oluşturup ardından yeni bir form daha ekleyiniz. Artık projenizde iki adet Form mevcut. Birinci forma iki adet Button kontrolü sürükleyiniz.

Birinci butonun click eventine;

C#
private void button1_Click(object sender, EventArgs e)
{
Form2 yeni = new Form2();
yeni.Show();
}

VB
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim yeni As New Form2()
yeni.Show()
End Sub
İkinci butonun click eventine;

C#
private void button1_Click(object sender, EventArgs e)
{
Form2 yeni = new Form2();
yeni.ShowDialog();
}

VB
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim yeni As New Form2()
yeni.ShowDialog()
End Sub

Bu methodlar her ne kadar aynı işlevi görüyor gibi olsa da aslında çok önemli bir fark vardır aralarında. Show methodu çalıştığı zaman Form2 için yeni bir kanal açar. Yani hem Form1 deki kodlar hem de Form2’deki kodlar eş zamanlı çalışabilir. Kodlara aşağıdaki eklemeleri yaparsanız olay çok daha net anlaşılacaktır.

Birinci butonun click eventine;

C#
private void button1_Click(object sender, EventArgs e)
{
Form2 yeni = new Form2();
yeni.Show();
MessageBox.Show(“Form2 ve Form1 eş zamanlı çalışabilir.”);
//Diğer kodlar
}

VB
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim yeni As New Form2()
yeni.Show()
MessageBox.Show(“Form2 ve Form1 eş zamanlı çalışabilir.”)
End Sub
İkinci butonun click eventine;

C#
private void button1_Click(object sender, EventArgs e)
{
Form2 yeni = new Form2();
yeni.ShowDialog();
MessageBox.Show(“Form2’yi kapatmadığın sürece bu mesaj çalışmaz.”);

}

VB
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim yeni As New Form2()
yeni.ShowDialog()
MessageBox.Show(“Form2’yi kapatmadığın sürece bu mesaj çalışmaz.”);
End Sub