C# Form 1'deki Timer'ın Form 2'de çalışması nasıl sağlanır?

ozguroztunc

Hectopat
Katılım
21 Mart 2020
Mesajlar
80
Çözümler
1
Arkadaşlar şu anda timer'in sonuna geldim sayılır. Timer istediğim gibi çalışıyor ama form ikide çalışsın isityorum ama form ikideki lblsaniye ve lbldakika labellerine yazdıramıyorum, timer_tickte görünmüyorlar. O yüzden sadece kendi formundaki labellerde çalışıyor. Resimde de gösterdiğim gibi form ikideki lbldakika ve lblsaniyeyi görmüyor
 

Dosya Ekleri

  • countdown - Microsoft Visual Studio 16.09.2023 19_08_09.png
    155,6 KB · Görüntüleme: 91
 

Denedim ama yapamadım olmuyor timer orada sadece yazdığım sayıyı yazıyor işleme geçmiyor diğer ekranda çalışıyor ama timer.
 
Denedim ama yapamadım olmuyor timer orada sadece yazdığım sayıyı yazıyor işleme geçmiyor diğer ekranda çalışıyor ama timer.

Timer değerini string değere çevir sonra diğer forma gönder oradan gelen timer değerini label a yazdır.
 
Nasıl yapacağım onu?

Timer değerini bir değişkene eşitle ilk adım olarak, sonra veri gönderme için attığım yönergedeki gibi sayısal veri gönderiyormuşçasına gönderin.

http://m.mustafakarsli.com/makale/84/C-Sharp/Form-1-den-Form-2-ye-Değer-Gonderme.html
Buradaki gibi.
 
Son düzenleyen: Moderatör:

Burada hata nerede kanka direk labeller görünmüyor neden.
 

Dosya Ekleri

  • countdown - Microsoft Visual Studio 16.09.2023 19_40_52.png
    114,2 KB · Görüntüleme: 39
Yaptığın işlem baştan yanlış. Bir lokal değişken, dışarıdan erişilemez. Dışarıdan erişebileceğin bir şeyle yönetmeyi denemelisin. Şimdi mantığını anladım senin ben. Form1'den sanırım dakika ve saniyeyi alıp form2'yi açıyorsun ve açtığın form2'deki dakika saniyeyi label ile azaltmak istiyorsun. Bunun gibi bir şey.

Öncelikle açtığın form2 lokal bir form ve onun içindeki labellara eşitlediğin değerler sadece o an formu açarken verdiğin değerler. Yani onlar güncellenmeyecek. Bir referans vermedin. Dolayısıyla herhangi bir değişiklik gerçekleştiğinde textboxlarda, orada bir değişiklik olmayacak.

Eğer illa timer'ın Form1'den açılması gerekiyorsa form2yi oluştururken functionda local olarak değil classta oluşturman lazım.

Örneğin;
C#:
class Form1() {
    Form2() fr;
    
    private void button_click(object sender, EventArgs e) {
        fr = new Form2();
        //sonrasında ne değer veriyorsan içerideki labelları buraya yazarsın
    }
    
    private void Timer1_tick(object sender, EventArgs e) {
        //zamanı geriye sayma işlemi yine burada gerçekleşir.
    }
}

Not: Eğer formu oluşturmadan timer'ı çalıştırırsan hata alacaksın.
 
Timer nesnesini Form2'de yaratıp Form1 den de erişebilirsiniz:



Form1:Button1_Click
C#:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.label1.Text = Convert.ToInt32(textBox1.Text).ToString();
frm2.timer1.Interval = 1000;
frm2.timer1.Start();
frm2.ShowDialog();
}

Form2:Timer_Tick

C#:
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = (Convert.ToInt32(label1.Text) - 1).ToString();
if (Convert.ToInt32(label1.Text) < 0) this.Close();
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…