form2 yeniform= new form2();
yeniform.ShowDialog(); //modal olarak göster
// form2 de istenen butona basıldığında
//this.DialogResult = DialogResult.OK;
//dersen bu form üzerinde
if (yeniform.DialogResult==DialogResult.OK)
Messagebox.Show("Ok butonuna basıldı");
//şeklinde kontrol edebilirsin.
// dialog olarak gösterilen form köşedeki çarpı işaretinden kapatılırsa DialogResult.Cancel olarak gelir.
//form2.free de sanırım yeniform.Dispose(); şeklinde oluyodu
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.
İ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.
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.
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 alınabilir. Aşağıda verilen koddu bu işlemi yaptım. Bu şekilde tanımlanan değişken formdaki bütün yordamlarda kullanılabilinir.
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.