Basit Saat Uygulaması
Her uygulamada olabileceği gibi bir saat yapalım kendimize..
Ok başlıyoruz. Visual Studio'yu açıp (veya Ctrl + R yapıp çalıştır'a "devenv" de yazabiliriz) hemen Ctrl + N yapıp yeni bir Windows Form Application açıyoruz. İsminede siz karan verin artık
Şimdi saat uygulamasının mantığı şöyle çalışır; Her 1000milisaniye yada 1sn de bir ekrana o an Windows'un saat'ini yazdırırsınız. Böylece sanki saat ilerliyormuş gibi görünür.
Saatimizi bir Label gösterelim. Ozaman hemen Toolbox'tan bir Label'ı alıp form'umuza koyuyoruz.Label ilk eklendiğinde AutoSize'ı "True" gelir.F4'e basıp, o Control'un özellikler kısmına geçip AutoSize'ını "False" yapıyoruz ki boyutuyla oynayabilelim. Şimdi biraz kenarından çekin uzatın büyütün, saatimiz büyük olsun .)
Font kısmından istediğiniz yazı tipini arka plan rengini ayarlayabilirsiniz. Yine Özelliklerde TextAlign özelliği; Label'ın içindeki Text'in nerede duracağını bize söyler. Bunuda TopLeft'ten MiddleCenter yapıyoruz. (Ortada dursun, akıllı olsun)
Ok design kısmını hallettik. Şimdi geldi sıra kod yazmaya. Peki bu kod diğer örneklerdeki gibi Button'la tetiklenmiyor, peki nasıl tetiklenecek? nereye tıklayacağız kod yazmak için?
Ne demiştik başta saatin çalışma mantığına; Her 1 saniyede bir ekrana o an ki saati yazacak değil mi? Ok ozaman böyle bir şeyi hangi Controlle yaparız? Cevap basit Timer. Hemen ToolBox'ın Components sekmesinden en altta Timer'ı form'umuza ekliyoruz. Timer'da Label gibi ilk eklendiğinde belli bazı değerleri kendi otomatikman alır. Bunları görmek için F4'e basabiliriz. Burada en önemli kısım Enable ve Interval kısmıdır. Enable'ın "True" olması Timer'ın uygulama başlayınca hemen başlaması anlamına gelir. Bazı durumlarda False istediğimiz zamanda başlamasını sağlayabiliriz. Interval kısmı ise; Timer'ın hangi süre aralığında Event'ini (yani olayını Tick Event'ini) gerçekleştireceğini ayarlamamıza yarar.
Enable'ı "True" ve Interval'i "1000" (yani 1sn, interval'in birimi milisaniyedir) yapıyoruz.
Peki bir soru daha.Uygulama hangi Event'le (Olay'la) çalışıyor. Yani yazılan kod'un gerçekleşeceği event hangisi? Cevap yine Timer. Timer her 1sn de bir kendi Event'ini gerçekleştirecek.Bu yüzden kod tarafına geçmek için timer'a çift tıklıyoruz. Ok sonunda kod tarafı :)
Eveet şimdi gördüğünüz gibi timer1_tick event'i karşımıza geldi. Bunun mantığı şudur. timer1 her 1sn de bir bizim yazdığımız kodları gerçekleştirecek. Ozaman yazalım
label1.Text = DateTime.Now.ToLongTimeString();
DateTime C#'ta tarih, saat gibi parametrelerle çalışılırken kullanılır. Buradaki "Now" kısmı, şimdiki saati ver anlamına gelir. Ve "ToLongTimeString()" kısmı ise formatını belirler.
Tamam çalıştırıp görelim bakalım ne olmuş? Ctrl + Shift + B yapıp Build ettikten sonra F5'e basıp çalıştırıyoruz.
Evet çalıştı... Ama ilk geldiğinde hala saati yazmamış label'ın adını yazmıştı öyle değil mi? Bunun sebebi basit, Timer Control'ü ilk çalıştığında daima kendi Interval süresi kadar gecikir. Yani ilk tick (ilk çalışma) 1sn sonra gelir. Bu durumu düzeltmek için Form'un ilk açıldığı ana aynı kod'u tekrar yazabiliriz. Bunun için form'umuzun boş bir yerine çift tıklayarak (veya form'un F4 ile özellikler penceresinden Event sekmesine (Yukarıda sağda, şimşek şeklinde bir ikonu var) Load kısmına çift tıklayarak) kod tarafına geçiyoruz ve timer'ın kodlarını orayada yazıyoruz. Böylelikle Uygulama ilk açıldığında hemen saati gösterecektir.
Evet nur topu gibi bir saatimiz oldu... Görüşmek üzere.
KOD:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace blogSaat
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToLongTimeString();
}
}
}
Hiç yorum yok:
Yorum Gönder