Forum
Merhaba
Öncelikle c# da bir proje yapmaya çalışıyorum.
Form closing olayı ile applicationumu sonlandırmak istiyorum. Fakat form üzerinde birden cok form arası geçiş bulunmakta. Mesela form1 den form 2 ye yada form 1 den form3 e geçişler oluyor program kullanımı için. Ana formum giriş yani login ekranım. Kullanıcı login id ve şifresi ile giriş yapıyor. Sonraki karşılayan formum sıklıkla kullanılan form1. Şöyle bir problemim var form 1 de closing olayını kullandığımda applicationu direk exit yapmıyor ne kadar form 3 veya form2 den form1 donus yapıldıysa o kadar soruyor. Form1_closing kodu şöyle;
private void stok_giris_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Gerçekten programı kapatmak istiyor musunuz?", "Program Kapanıyor..", MessageBoxButtons.YesNo, MessageBoxIcon.Stop) == DialogResult.Yes)
{
Application.Exit();
}
}
Ne kadar form1 ziyaret edildiyse o kadar kapatılıcak diye Mbox geliyor.Sanki arka planda birden fazla form açıkmış ama gözükmüyormuş gibi.
Formlar arası geçiş içinde
private void stokKayıtToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
yeni_kayit frm = new yeni_kayit();
frm.Show();
}
kullanıyorum.
Bu closing olayına daha düzgün çalışan bir kod varmıdır. Çok araştırdım ama hep yüzeysel bilen varsa destek olursa çok sevinirim.
İyi çalışmalar.
Merhaba,
Aşağıdaki şekilde tüm formları kapatan bir procedure oluşturun. Ana pencere hariç tüm formları kapatsın. Sonra bu procedure'ü FormClosing eventinin en üstünde kullanın.
private void CloseAllOpenForms()
{
for (i = System.Windows.Forms.Application.OpenForms.Count - 1; i >= 1; i += -1) {
Form frm = System.Windows.Forms.Application.OpenForms(i);
if (frm.name != Form1.name)
form.Close();
}
}
Application.Exit(); yerine System.Environment.Exit(1); deneyebilirsiniz.
https://msdn.microsoft.com/en-us/library/system.environment.exit.aspx