- Katılım
- 30 Temmuz 2019
- Mesajlar
- 3.632
- Çözümler
- 23
Daha fazla
- Cinsiyet
- Erkek
- Meslek
- Öğrenci
Arkadaşlar merhaba, Bilgisayar Programcılığı öğrencisiyim ve bir tane projem var. Şuan için 1 tane anasayfa formu olmak üzere toplam 5 tane formdan oluşan bir projem var. Sorunumun neyden kaynaklandığını buldum fakat bir türlü çözüme kavuşturamadım. Sorunum:
Anasayfa formumun FormClosed eventinde "Programı kapatmak istediğinize emin misiniz?" sorusu çıkan şıklı bir MessageBox oluşturdum. Eğer programı çalıştırır çalıştırmaz çıkış yapmaya çalışırsam sıfır sıkıntı bir şekilde tek seferde programı kapatabiliyorum fakat eğer programı açtıktan sonra başka bir forma geçiş yaparsam sonra o formu kapatıp Anasayfa formuma geçiş yapıp programı kapatmaya çalıştığımda açılmış olan form sayısı kadar döngüye giriyor MessageBox ekranı. Yani burada eğer yanılmıyorsam diğer formlar, Anasayfamın FormClosed eventini tekrar tekrar tetikliyor bu yüzden de döngüye giriyor. Sorunun bu olduğunu düşünüyorum fakat bir türlü sorunumu çözüme kavuşturamadım. Şunu da ekleyeyim: Diğer formlarımın FormClosed Eventsleri şu şekilde; diğer formlarımı kapatınca Anasayfa formumun açılmasını istiyorum. O yüzden buna uygun olacak şekilde kodlamaya çalıştım.
Anasayfa formum hariç diğer formlarımın FormClosed Eventsleri:
Normalde formAnasayfa.Show(); şeklinde kullanıyordum fakat sorunumu çözmek için chatGPT'den yardım aldığım sırada chatGPT bu şekilde düzeltmişti o yüzden bu şekilde kaldı. Burada kullanmış olduğum "this.Hide();" kodu yüzünden bu sorunla karşılaştığımı düşünüyorum. Sonuçta bu kod mevcut formu sadece gizliyor, kapatmıyor diye biliyorum. Kapatmak için nasıl bir kod kullanmam gerekiyor onu da bilmiyorum. "this.Close();" denedim fakat yine aynı sorunla karşılaştım. "Application.Exit();" yazsam zaten bu direkt programı kapatmak için kullanılan bir kod bunu istemiyorum.
Anasayfa formumun FormClosing Eventsi:
Benim yazdığım kod normalde bu gördüğünüz kodun "isExiting" bayrak ifadesi olmayan hâliydi. Bu isExiting bayrak ifadesini de yine aynı şekilde chatGPT'den yardım aldığım sırada chatGPT'nin bana önerdiği çözüm yoluydu fakat bu da çözüm olmadı maalesef.
Yani uzun lafın kısası sorunun kaynağını biliyor gibi hissediyorum; diğer formlarım kapatılamadığı için eğer o formları çalıştırırsam ve Anasayfa formumda programdan çıkış yapmaya çalışırsam, daha önce çalıştırmış olduğum form sayısı kadar program döngüye giriyor. Yani her döngüye girdiğinde ve "Evet"e tıkladığımda aslında önce diğer formlarımı kapatıyor. Bundan dolayı bu sorunla karşılaştığımı düşünüyorum fakat çözüme bir türlü ulaşamadım. Yardımcı olabilir misiniz?
Sorun aslında kafamda çok basit fakat kelimelere dökememiş gibi hissediyorum
Umarım anlaşılır olmuştur..
Anasayfa formumun FormClosed eventinde "Programı kapatmak istediğinize emin misiniz?" sorusu çıkan şıklı bir MessageBox oluşturdum. Eğer programı çalıştırır çalıştırmaz çıkış yapmaya çalışırsam sıfır sıkıntı bir şekilde tek seferde programı kapatabiliyorum fakat eğer programı açtıktan sonra başka bir forma geçiş yaparsam sonra o formu kapatıp Anasayfa formuma geçiş yapıp programı kapatmaya çalıştığımda açılmış olan form sayısı kadar döngüye giriyor MessageBox ekranı. Yani burada eğer yanılmıyorsam diğer formlar, Anasayfamın FormClosed eventini tekrar tekrar tetikliyor bu yüzden de döngüye giriyor. Sorunun bu olduğunu düşünüyorum fakat bir türlü sorunumu çözüme kavuşturamadım. Şunu da ekleyeyim: Diğer formlarımın FormClosed Eventsleri şu şekilde; diğer formlarımı kapatınca Anasayfa formumun açılmasını istiyorum. O yüzden buna uygun olacak şekilde kodlamaya çalıştım.
Anasayfa formum hariç diğer formlarımın FormClosed Eventsleri:
C#:
private void FormTamGunPersonel_FormClosed(object sender, FormClosedEventArgs e)
{
this.Hide();
formAnasayfa.ShowDialog();
}
Normalde formAnasayfa.Show(); şeklinde kullanıyordum fakat sorunumu çözmek için chatGPT'den yardım aldığım sırada chatGPT bu şekilde düzeltmişti o yüzden bu şekilde kaldı. Burada kullanmış olduğum "this.Hide();" kodu yüzünden bu sorunla karşılaştığımı düşünüyorum. Sonuçta bu kod mevcut formu sadece gizliyor, kapatmıyor diye biliyorum. Kapatmak için nasıl bir kod kullanmam gerekiyor onu da bilmiyorum. "this.Close();" denedim fakat yine aynı sorunla karşılaştım. "Application.Exit();" yazsam zaten bu direkt programı kapatmak için kullanılan bir kod bunu istemiyorum.
Anasayfa formumun FormClosing Eventsi:
C#:
private void FormAnasayfa_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
if (isExiting) return;
DialogResult result = MessageBox.Show("Programı Kapatmak İstediğinize Emin misiniz?", "Çıkış",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question
);
if (result == DialogResult.No)
{
e.Cancel = true;
}
else
{
isExiting = true;
Application.Exit();
}
}
catch (Exception ex)
{
MessageBox.Show("Program Kapatılırken Hata Oluştu.." + ex.Message);
}
finally
{
baglanti.Close();
}
}
Benim yazdığım kod normalde bu gördüğünüz kodun "isExiting" bayrak ifadesi olmayan hâliydi. Bu isExiting bayrak ifadesini de yine aynı şekilde chatGPT'den yardım aldığım sırada chatGPT'nin bana önerdiği çözüm yoluydu fakat bu da çözüm olmadı maalesef.
Yani uzun lafın kısası sorunun kaynağını biliyor gibi hissediyorum; diğer formlarım kapatılamadığı için eğer o formları çalıştırırsam ve Anasayfa formumda programdan çıkış yapmaya çalışırsam, daha önce çalıştırmış olduğum form sayısı kadar program döngüye giriyor. Yani her döngüye girdiğinde ve "Evet"e tıkladığımda aslında önce diğer formlarımı kapatıyor. Bundan dolayı bu sorunla karşılaştığımı düşünüyorum fakat çözüme bir türlü ulaşamadım. Yardımcı olabilir misiniz?
Sorun aslında kafamda çok basit fakat kelimelere dökememiş gibi hissediyorum