none
Metod Geriye Değer Döndürme Problemi RRS feed

  • Soru

  • Merhabalar, yapmak istediğim şu ; Ayrı bir sınıf oluşturdum bu sınıf sadece tarih ve saat ile alakalı olacak bunun için yazmış olduğum kod şudur ;

        static class TimeAndDate
        {
            public static void TarihveSaat()
            {
                Timer timer = new Timer();
                timer.Enabled = true;
                timer.Tick += new EventHandler(Timer_Tick);
    
            }
            public static void Timer_Tick(object sender, EventArgs e)
            {
                DateTime.Now.ToLongTimeString();
            }
        }

    Ben bunu Çağırıp yazdırmak istediğim zaman ;

            private void Form1_Load(object sender, EventArgs e)
            {
                label1.Text = TimeAndDate.TarihveSaat();
               
            }

    Kullanıyorum fakat hata alıyorum... Sanırım metodun geriye değer döndürmesi gerekiyor lakin ilk defa bir DateTime ile çalışıyorum görmedim de örnek. Acaba nasıl geriye değer döndürtüp metodu çağırabilirim ?

    Almış olduğum hata ; Cannot implicitly convert type 'void' to 'string'

    ToString mi kullanacağım ?



    1 Eylül 2019 Pazar 19:52

Yanıtlar

  • Metoda label'ını referans olarak verebilirsin

    TarihVeSaat(Label1);

    İç kısımda tick kısmında bu referansa göre değişiklik yaparsın.

    Fakat bu durumda bağlar çok sıkı olmuş olur bu da OOP'da istemediğimiz bir durumdur.

    İşi bir adım öteye geçirip, sınıfını statik değil normal bir sınıf haline getirip, Tick event'i gibi bir event  oluşturabilirsin.

    TarihVeSaat.Tick += (s,e) => Label1.Text = e.Value;

    İçerideki tick, dışarıdaki tick'i tetikler ve eventargs a mevcut tarihi yazar.

    Bu durumda bağlar biraz daha gevşemiş olur.


    www.cihanyakar.com

    2 Eylül 2019 Pazartesi 06:41

Tüm Yanıtlar

  • Timer timer
    private void Form1_Load(object sender, EventArgs e)
            {
       	timer = new Timer();
    	timer.Tick += (_,__)=> label1.Text = DateTime.Now.ToLongTimeString();
            timer.Enabled = true;
     }


    Goy goy yapacağım. Goy goy sevmiyorsanız okumayın. Programlama ile uğraşacaksanız en baştan başlayın. Doğrudan işe ortadan girmişsiniz. Bilgisayar öğrenin, dili öğrenin, algoritmalar geliştirin, OOP öğrenin sonra penceredir, formdur uğraşın.  Windows Forms'u zaten unutun gitsin yıl olmuş 2019.


    www.cihanyakar.com




    1 Eylül 2019 Pazar 20:54
  • Öncelikle değerli yanıtınız ve eleştiriniz için teşekkür ederim :) Ben de Goy goy karışımı cevap vereyim hocam :)

    Hocam zaten bu şekilde çalıştırmak isteseydim sınıf veya metod ile uğraşmazdım ben bunu yapardım lakin yukarıda ayrı bir sınıf ve metod oluşturdum ben sadece metodu çağırarak bunu yazdıramaz mıyım? Asıl soru bu.


    1 Eylül 2019 Pazar 20:58
  • Metoda label'ını referans olarak verebilirsin

    TarihVeSaat(Label1);

    İç kısımda tick kısmında bu referansa göre değişiklik yaparsın.

    Fakat bu durumda bağlar çok sıkı olmuş olur bu da OOP'da istemediğimiz bir durumdur.

    İşi bir adım öteye geçirip, sınıfını statik değil normal bir sınıf haline getirip, Tick event'i gibi bir event  oluşturabilirsin.

    TarihVeSaat.Tick += (s,e) => Label1.Text = e.Value;

    İçerideki tick, dışarıdaki tick'i tetikler ve eventargs a mevcut tarihi yazar.

    Bu durumda bağlar biraz daha gevşemiş olur.


    www.cihanyakar.com

    2 Eylül 2019 Pazartesi 06:41
  • Metoda label'ını referans olarak verebilirsin

    TarihVeSaat(Label1);

    İç kısımda tick kısmında bu referansa göre değişiklik yaparsın.

    Fakat bu durumda bağlar çok sıkı olmuş olur bu da OOP'da istemediğimiz bir durumdur.

    İşi bir adım öteye geçirip, sınıfını statik değil normal bir sınıf haline getirip, Tick event'i gibi bir event  oluşturabilirsin.

    TarihVeSaat.Tick += (s,e) => Label1.Text = e.Value;

    İçerideki tick, dışarıdaki tick'i tetikler ve eventargs a mevcut tarihi yazar.

    Bu durumda bağlar biraz daha gevşemiş olur.


    www.cihanyakar.com

    Tamamdır hocam çok ama çok teşekkür ederim :) 
    2 Eylül 2019 Pazartesi 22:01