none
MessageBox üst üste uyarı vermesi RRS feed

  • Soru

  • Form1 'den form2yi Showdialog ile getirmekteyim.Form2 shown kısmına şu messagebox kodunu yazdım

    if(stokuyari == "Aktif")
                            {
                                string sonucc;
                                DateTime baslangic = Convert.ToDateTime(DateTime.Now.ToString("yyyy.MM.dd"));
                                DateTime gelentarih = Convert.ToDateTime(dateTimePicker1.Text);
                                TimeSpan Sonuc = baslangic - gelentarih;
                                sonucc = Sonuc.TotalDays.ToString();
                                if (Convert.ToInt32(sonucc) >= stoktarih)
                                {
                                    DialogResult cevap;
                                    cevap = MessageBox.Show("Ürün 6 Ay'dan Fazla Güncellenmemiş!\nLütfen Ürünü Güncelleyiniz!", "UYARI!", MessageBoxButtons.OK, MessageBoxIcon.Question);
    
                                }
                            }

    Ancak şu şekilde sorun var : Form1den veriye tıkladığımda form2 showdialog ile açılmakta eğer üstteki sonuç varsa uyarı vermekte.Form2yi kapattığımda form1den tekrar form2yi açtığımda bu sefer eğer yine sonuç varsa 2 defa aynı messagebox uyarıyı vermekte bu şekilde üst üste devam ediyor nasıl çözebilirim?

    30 Mayıs 2018 Çarşamba 22:07

Tüm Yanıtlar

  • Merhaba,

    Form2 yi 2.defa açıtğınızda messagebox uyarısı 2 defa mı çıkıyor, yoksa form2 yi her kapatıp açmanızda bu uyarı bir defaya mahsus olarak mı çıkıyor 


    31 Mayıs 2018 Perşembe 06:04
  • @Algının sorduğu gibi ; eğer form2 yi her show ettiğinde çıkıyorsa bu mantıklıdır. Ama her show ettiğinde messagebox sayısı 1 artıyorsa bu mantıksızdır. Siz hangisini soruyorsunuz ? 


    Altan Özdemir

    31 Mayıs 2018 Perşembe 07:13
  • Form2yi Showdialog ile açmaktayım. Şu şekilde söyliyim Form2yi açıp kapattıktan sonra tekrar açarsam 1'er kez arttırarak gidiyor yani her açmamda birer arttırıyor ancak Show ile açtığımda böyle bişey yok sadece 1 kez veriyoruz uyarıyı geçiyor.
    31 Mayıs 2018 Perşembe 08:12
  • Çünkü ShowDialog() metodu, form kapatıldığı zaman otomatik olarak Dispose() metodunu çağırmaz. Show() durumunda ise form kapatıldığı zaman yani Close() metodu çağrıldığı zaman otomatik olarak Dispose() metodu da çağrılır. Ayrıca ShowDialog() ile pencereler hide olur, memory de çalışmaya da devam eder. 

    Şu şekilde deneyebilirsiniz.

    using (Form2 f1 = new Form2())
    {
    if (ff1m.ShowDialog() == DialogResult.OK)
        //İşlem1
    else
        //İşlem2
    }
    31 Mayıs 2018 Perşembe 10:21
  • Bu benim işime pek yaramadı gibi metot göndermeye çalışıyorum çünkü Form2 açıldığı zaman form2de bulunan örnek olarak 

    public void kayitbul()

    metodunu çağırmam gerekiyor shown olurken o yüzden teşekkür ederim.


    31 Mayıs 2018 Perşembe 10:51
  • Form1 den Form2 ye method mu göndermeye çalışıyorsunuz, 

    Yoksa form2 deki bir metodu load event'a mı yazdınız, 

    Form1 den method göndermek yerine bu tip işlemler için ayrı bir class oluşturup oradaki fonksiyonlara parametreler ile ulaşıp çalıştırmanız daha sorunsuz olur, 

    Mesela bir Class oluşturun, ortak veya sık kullanacağınız veya kullandığınız methodları oraya kodlayıp, o classı

    ilgili forma çağırın ve oluşturduğunuz methodu parametre vererek yeni formda kullanın, böylece formlar arasında gidip gelmek zorunda kalmazsınız ve daha güvenli olur, OOP ye göre de bu şekilde çalışmak gerekli.

    Parametre vermek için Class get ve set değerleri alacak bir değişken atayın



    TANER ALGIN

    31 Mayıs 2018 Perşembe 11:13
  • Class oluşturmayı denedim ancak veriye başka formlardan farklı şekilde form2ye gönderiyorum o yüzden her birine ayrı ayrı yazmak zorundayım.

    Şu şekilde çalışıyorum Form1den verinin idsini alıyorum form2 açıldığı zaman form2 bulunan kayitbul() metoduna gönderiyorum ve çalıştırıyorum yani

    Form2 f2 = new Form2();
    

    Button1_Click f2.Shown += f2_Shown; f2.ShowDialog(); F2_Shown f2.textBox1.Text = textBox1.Text; f2.KayitBul();




    • Düzenleyen DarkPas 31 Mayıs 2018 Perşembe 11:22
    31 Mayıs 2018 Perşembe 11:21
  • Breakpoint ile izlediğinde MessageBox.Show event nerede tekrarlıyor bakabildiniz mi

    TANER ALGIN

    31 Mayıs 2018 Perşembe 13:08