C# ile kronometre yapımı

Daha önceki yazılarımızda C# form temel bileşenleri olan Button, Textbox, Listbox, Radio Button, Checkbox, Combobox gibi nesneleri kullanmıştık. Bu temel nesneler üzerine eksikleriniz varsa yazı sonundaki uygulamalarına bakabilirsiniz.

Bu yazımızda C# programlama dili ile form nesnelerinden timer nesnesi kullanarak kronometre yapımını inceleyeceğiz. Aşağıdaki gibi bir form oluşturunuz. Burada Timer nesnesi görünmemektedir, bu nesneyi ToolBox'tan Components grubnu içinden bulup forma sürükleyiniz.



Yukarıdaki tasarımı yaptıktan sonra saniye: santisaniye şeklinde bilgi yazacağız. Buradaki santisalise saniyenin yüzde biridir, yani 100 santisalise=1 saniyedir. Buna göre Timer nesnesinin Interbal özelliğini 10 olarak ayarlıyoruz ama testlerde görünmediği için 100 yaparak kontrol ettim. Aşağıdaki gibi nesnelerin özelliklerini ayarlayalım.

Nesne Name Text
Button btnBaslat Başlat
Button btnDurdur Durdur
Button btnSifirla Sıfırla
Timer timer1  
Label labSayac  
Form Form1 Kronometre

labSayac isimli label nesnesinin BackColor ve ForeColor değerini istediğiniz renk yapabilirsiniz. Font tipini Arial Rounded 29 punto yaptık.

ilk önce form class'ının hemen altında aşağıdaki değişkenleri tanımlayıp ilk değerlerini verelim.

string sayac = "00:00";
string saniyeStr, santisaniyeStr;
int santisaniye, saniye;

Daha sonra Başlat düğmesine çift tıklayıp aşağıdaki kodu yazalım.

      private void btnBaslat_Click(object sender, EventArgs e)
        {
            
            saniye = 0;
            santisaniye = 0; //1 saniyenin 100'de biri
            timer1.Enabled = true;
        }

Sonra Form üzerinde boş bir alana çift tıklayıp ya da Events kısmından Form_Load() olayına gelelim ve aşağıdaki kodu yazalım.

   private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            labSayac.Text = "00:00";
            timer1.Interval = 10; // 1 santisalise için 10, 1000 yazarsak 1 saniyeye ayarlarız.
 
        }
Daha sonra Durdur diğmesine çift tıklayıp aşağıdaki şekilde yazalım

 private void btnDurdur_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
            {
                timer1.Enabled = false;
                btnDurdur.Text = "Devam";
            }
            else
            {
                timer1.Enabled = true;
                btnDurdur.Text = "Durdur";
            }
 
            labSayac.Text = sayac.ToString();
        }
 
Timer nesnesinin Tick olayına (Events'dan) gelip aşağıdaki kodu yazalım. Buradaki algoritma çok önemli, santisaiye 99 dan küçükse bir artırıyoruz, 99'a eşitse sıfırlayıp, saniye değerini bir artırıyoruz. Güzel görünmesi için de santisalise ve saniye değeri 10 dan küçükse önüne 0 ekliyoruz. 

Durdur düğmesine tıkladığınızda timer durdurulur ve btnDurdur butonunun etiketi Devam Et olarak değiştirilir, tekrar Devam et butonuna tıklanırsa timer nesnesi tekrar başlatılır ve buton etiketi tekrar Durdur olarak değiştirilir.

     private void timer1_Tick(object sender, EventArgs e)
        {
            if (santisaniye<99)
            santisaniye++;
 
            else if (santisaniye == 99)
            {
                santisaniye = 0;
                saniye++;
            }
            saniyeStr = saniye.ToString();
            santisaniyeStr = santisaniye.ToString();
         
           if (saniye < 10)
                saniyeStr = "0" + saniyeStr;
         
           if (santisaniye < 10)
                santisaniyeStr = "0" + santisaniyeStr;
         
            sayac = saniyeStr + ":" + santisaniyeStr;
            labSayac.Text = sayac;
        }
 
 


namespace Kronometre_Otas
{
    public partial class Form1 : Form
    {
        string sayac = "00:00";
        string saniyeStr, santisaniyeStr;
        int santisaniye, saniye;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnBaslat_Click(object sender, EventArgs e)
        {
            
            saniye = 0;
            santisaniye = 0; //1 saniyenin 100'de biri
            timer1.Enabled = true;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            labSayac.Text = "00:00";
            timer1.Interval = 10; // 1 santisalise için 10, 1000 yazarsak 1 saniyeye ayarlarız.
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (santisaniye<99)
            santisaniye++;
 
            else if (santisaniye == 99)
            {
                santisaniye = 0;
                saniye++;
            }
            saniyeStr = saniye.ToString();
            santisaniyeStr = santisaniye.ToString();
            if (saniye < 10)
                saniyeStr = "0" + saniyeStr;
            if (santisaniye < 10)
                santisaniyeStr = "0" + santisaniyeStr;
            sayac = saniyeStr + ":" + santisaniyeStr;
            labSayac.Text = sayac;
        }
 
        private void btnDurdur_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
            {
                timer1.Enabled = false;
                btnDurdur.Text = "Devam";
            }
            else
            {
                timer1.Enabled = true;
                btnDurdur.Text = "Durdur";
            }
 
            labSayac.Text = sayac.ToString();
        }
 
        private void btnSifirla_Click(object sender, EventArgs e)
        {
            sayac = "00:00";
            santisaniye = 0;
            saniye = 0;
            labSayac.Text = sayac.ToString();
            
        }
    }
}
 


Diğer Örnekler
C# ile üç sayının en büyüğünü bulan metod
C# ile Rastgele Sayı Üretip Ortalamasını Alma
Bir dizideki elemanları diğer Dizide Arama
C# Form ile İş Listesi (To-Do-List Uygulaması)
C# ile Türkçe İngilizce Sözlük Yapımı
C# ile Rastgele Sayı Üretip Tahmin Etme Oyunu

Mutlu Kodlamalar,
Oğuzhan TAŞ
Aralık 2023
Bookmark and Share