2. Formu Ekrana Getirmek - C#

 Birden fazla forma sahip projelerde 2. veya 3. formun nasıl ekrana getirildiğini anlatmak için komut verip projeye Form2 adında 2. bir form dahil ettim. Ardından ilk forma “Goster” adında bir düğme yerleştirip bu düğmenin Click yordamına aşağıda verdiğim satırı yazdım.

private void Goster_Click(object sender, EventArgs e)
{
   Form2 Yeni_form = new Form2();
}

İlk formun üzerindeki düğmenin Click yordamına yazdığım bu satır ile Form2’den yola çıkılarak “Yeni_Form” adında bir form nesnesi hazırlanmaktadır. Bu şekilde hazırlanan nesne Show() metoduna parametre olarak verilirse Form2 ekrana getirilir.

 

private void Goster_Click(object sender, EventArgs e)
{
  Form2 Yeni_form = new Form2();
  Yeni_form.Show();
}

Yukarıda değişken tanımlama veya nesne hazırlama satırını düğmeye ait Click yordamına yazdım. Bu nedenle çalışma anında ekranda Form2 varken Form1’deki düğme 2. kez tıklanırsa aynı nesne tekrar oluşturulur ve Form2 tekrar ekrana getirilir.

 

Ekranda 2. form varken yukarıda verilen kod işletildiğinde aynı formun 2. veya 3. kopyalarının hazırlanıp ekrana gelmesini engellemek için kullanılabilinecek değişik teknikler olmakla birlikte ilk aklıma geleni buraya yazacağım. Bu amaçla “Göster” düğmesi için hazırladığım kodu aşağıda verilen şekilde düzenleyip Show metodu yerine ShowDialog metodunu kullandım.

private void Goster_Click(object sender, EventArgs e)
{
  Form2 Yeni_form = new Form2();
  Yeni_form.ShowDialog();
}

 ShowDialog metodu ile ekrana getirilen form kapatılmadan projenin ana formuna geçilemez. Bu sorunun önüne geçmek, başka bir deyişle 2. formu hem Show metodu ile ekrana getirmek hem de ekranda aynı anda 2. kopyasının olmasını engellemek için değişken tanımlama satırı düğmeye ait Click yordamının dışına alabilir. Aşağıda verilen koddu bu işlemi yaptım. Bu şekilde tanımlanan değişken formdaki bütün yordamlarda kullanılabilinir.

Form2 Yeni_form = new Form2();
private void Goster_Click(object sender, EventArgs e)
{
   Yeni_form.Show();
}

Bu şartlarda “Göster” düğmesini tekrar tekrar tıklasanız bile Form2 tekrar ekrana getirilmez. Ancak bu şekilde ekrana getirdiğiniz 2. formu kapattıktan sonra Show metodu ile tekrar ekrana getirmek istemeniz halinde hata meydana gelir. Bu sorunun önüne geçmek formu oluşturup Show metodu ile ekrana getiren satırları aynı yordama yazdım ama formu tekrar new metodu ile oluştururken mevcut olup olmadığını araştırdım. 

Form2 Yeni_form;
private void Goster_Click(object sender, EventArgs e)
{
  if(Yeni_form == null || Yeni_form.IsDisposed)
   {
     Yeni_form = new Form2();
     Yeni_form.Show();
   }
}