Forum

Formclosing veya Fo...
 
Bildirimler
Hepsini Temizle

Formclosing veya Formclosed

3 Yazılar
3 Üyeler
0 Reactions
5,606 Görüntüleme
(@selahattinacikgoz)
Gönderiler: 65
Estimable Member
Konu başlatıcı
 

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.

 
Gönderildi : 22/01/2017 03:36

(@enginkulac)
Gönderiler: 118
Estimable Member
 

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();
}

}

 

 
Gönderildi : 23/01/2017 11:44

(@volkanalkilic)
Gönderiler: 137
Estimable Member
 

Application.Exit(); yerine System.Environment.Exit(1); deneyebilirsiniz.

https://msdn.microsoft.com/en-us/library/system.environment.exit.aspx

 

 
Gönderildi : 23/01/2017 13:00

Paylaş: