C# - WPF APPLICATION'DA TIMER OLAYI

Merhabalar bugün size wpf application'da kronometre olayını göstereceğim. Biraz karışık bir konu ama tabiki de bir mantığı var.
İnternetten timer nesnesine baktığınızda form application'da timer nesnesinin mevcut olduğunu göreceksiniz. Ama maalesef wpf application'da timer nesnesi yok. Bu yüzden, biz timer nesnesini kendimiz oluşturup kullanacağız. 


Bu window'umuzun görüntüsü. Visual Studio 2012'de görüntü kalitesine daha çok önem verilmiş. Yazının kalınlığına kadar ayarlayabilirsiniz.

00 yazan yer label. Label seçili iken properties'den content yerini 00 olarak değiştirin. Sonra 3 tane buton ekleyin, bunu biliyorsunuz zaten.


İşte kodlarımız. Öncelikle, en üstte altı çizili olan using System.Windows.Threading yazan yer, bizim timer nesnesi oluşturmamız için gerekli. 

En üstte yer alan using ile başlayan komutlar bizim kütüphanelerimiz. Bütün komutlarımız o kütüphanelerin içinde gizli. O kütüphaneler olmasa biz komutlarımızı kullanamayız. Yani, intelsense'de çıkan tüm komutlar, using System kütüphanelerimizde gizli.

Bizim timer nesnemiz windows.threading kütüphanemizin içinde saklı. Onu yazınca timer nesnemizi kullanılır hale getiriyoruz dostlarım.

MainWindow : Window yazan yerin hemen altındaki kodlar;

Dispatcher Timer timer; = timer nesnesini oluşturup adını timer yapmak. Sondaki timer nesnenin adıdır, buna didem de diyebiliriz.
int saniye = 0; = saniyeyi sıfırlıyoruz.

Main window'un altına yazmamızın sebebi, tüm class'larda tanınır ve geçerli olmasıdır.

Önce baslat_click'i anlatacağım. timer adında nesnemizi oluşturuyoruz. Sonra timer.Interval ile aralık seçiyoruz. Peki bu ne demek? Interval aralık anlamına geliyor. Yani kronometremiz ne kadar aralıkta artacak. Bunu ayarlıyoruz. Time.Span.FromSeconds(1) demek, 1 saniye aralıkla artsın demek. Siz isterseniz eğer, 1 dakika da ya da bir saat aralığı seçebilirsiniz. Zaten Time.Span. yazdığınız anda intelsensede saniye,dakika,saat,gün komutları çıkıyor. İstediğinizi seçin. Kronometre 1 saniyede artsın diye ben seconds'u seçiyorum.

timer.Tick olayını gerçekleştiriyoruz. new EventHandler bir olay. Olayımızın adı (timer_tick). += ise timer_Tick sınıfından dönen saniye değeriyle bağlamak anlamına geliyor. Daha ayrıntılı anlatacağım. 
timer.Start ise kronometreyi çalıştırmak. Zaten amacımız da bu.

durdur_click'e gelelim. Burada sadece kronometreyi durduracağız. timer.Stop durdurmaktır.

sıfırla_click'e geldik. Burada önce kronometreyi durduruyoruz, sonra saniye'yi sıfırlıyoruz. Böylece kaça kadar sayarsa saysın, saniye'nin içi resetleniyor. Sonra label'ın içine 00'ı gönderiyoruz ki sıfırlandığı anlaşılsın. 

Geldik timer_Tick'e. Burada biz yeni bir sınıf oluşturduk. Public ile genel hale getirdik, yani her yerden ulaşılabilir bir sınıf oldu. Asıl işi burada yapıyoruz. Program çalışıp, baslat_click de timer_Tick yazan yere geldiği anda kodlar timer_Tick sınıfına gider. Sonra saniye++ ile saniye 1'er 1'er arttırılır. FromSeconds dediğimiz yerin katkısı ile, 1 saniyede 1 artar. Eğer saniye = saniye+2 deseydik 1 saniyede 2 'şer artıp 2 4 6 olarak giderdi. 

saniye arttıkça label'ın içine yazılır. Tabiki öncesinde string'e çevrilir. 

Timer.tick += yapılan yer, timer_Tick sınıfından gelen saniye bilgisini baslat butonunun altında kullanmak içindir. FromSeconds bu sayede kullanılır. 


Başlattım

Durdurdum


Sıfırladım

İşte kodlar bu kadar. Karışık bir yapısı var ama anlayınca o kadar da fena değil. Bu arada, kronometre 60 dan sonra 61 olarak devam ediyor. Yani 59 saniyeden sonra sıfırlanmıyor. Bunu da eğer yapabilirsem size de öğreteceğim. Sizinde uğraşmanızı istiyorum ve iyi günler diliyorum...

Bu blogdaki popüler yayınlar

DONANIMSAL BİLGİ (ANAKART)

VB.NET'TE VERİTABANI İŞLEMLERİ

C# - WPF APPLICATION - LISTBOX KULLANIMI