C# Dersleri 58 - ProgressBar Kullanımı

     Hazırladığımız yazılımlarda bazı işlemler uzun sürebilir. Böyle durumlarda kullanıcı, program dondu / hata verdi zannetmesin diye, işlemin devam ettiğini belli edecek bazı fonksiyonlar eklemeliyiz. Web sitelerde genellikle "Yükleniyor" yazan veya bunu belli eden gifler kullanarak geliştirdiğimiz bu özelliği windows form uygulamalarında progressbar kullanarak yapabiliriz.

     Bir Windows Form uygulaması oluşturup örnek üzerinde bakalım.

C# ProgressBar Kullanımı

     Butona her tıklandığında progressbar'ın değerini 10 arttıralım :     

private void button1_Click(object sender, EventArgs e)
{
    progressBar1.Value += 10;
}

     Bu programı çalıştırdığınızda bir problem farkedeceksiniz. İlk 10 tıklamada progressbar sorunsuz çalıştığı halde; 11. tıklamada yani değer 100'ü geçtiği zaman uygulamamız runtime error verir. Burada ya progressBar1'in değerini sürekli kontrol edip ona göre arttırabiliriz, ya da :     

private void button1_Click(object sender, EventArgs e)
{
    progressBar1.Step = 10;
    progressBar1.PerformStep();
}

     Burada progressBar1'in Step değerine atama yapıyoruz. PerformStep() methodunu her çağırdığımızda, progressBar1'ın değeri, Step değeri kadar arttırılıyor. Ancak bu sefer toplam değer 100'ü geçse de hata almıyoruz. Bu açıdan kullanışlı bir method PerformStep(). Step değerini tabi ki burada tanımlamak zorunda değiliz. Direkt progressBar1'in özelliklerinde bu değeri tanımlayabilir ya da formun Load() methodunda, constructor'da tanımlamayı yapabiliriz. 

     Bu örnekte progressBar1'ın değerleri 0 ile 100 arasında. Ancak bunlar değiştirilebiliyor.

private void Form1_Load(object sender, EventArgs e)
{
    progressBar1.Minimum = 10;
    progressBar1.Maximum = 240;
}

     Devam eden işlemin ne kadar süreceğini hesaplayabiliyorsak yukarıdaki örnekler mantıklı. Ancak bazen hem işlemin ne kadar süreceğini bilemiyoruz, hem de kullanıcıya programın donmadığını anlatmaya çalışıyoruz. Bu durumda progressbar'ın tipini değiştirebiliriz.

     Marquee ProgressBar

     progressBar1'in özelliklerinden, Style özelliğini "Marquee" seçersek, Windows'un klasik kendi kendine gidip gelen progressbar'ını göstermiş oluruz.     

private void button1_Click(object sender, EventArgs e)
{
    progressBar1.MarqueeAnimationSpeed = 100;
}

private void Form1_Load(object sender, EventArgs e)
{
    progressBar1.MarqueeAnimationSpeed = 0;
}

     Marquee tipindeki progressbarda, MarqueeAnimationSpeed özelliği, gidip gelen barın hızını belirler. Başlangıçta 0 olarak atıyoruz ki hemen çalışmaya başlamasın. Butona tıkladığımızda MarqueeAnimationSpeed değerini değiştirdiğimizde aşağıdaki gibi progressbar çalışmaya başlıyor.

Marquee ProgressBar

     Görünce tanıdınız değil mi? Biliyorum kullanıcı olarak onu görmek sinir bozucu ancak programın tamamen donduğunu zannetmekten iyidir. İşlem bittiğinde marquee progressbarı sıfırlamak istersek, tekrar MarqueeAnimationSpeed değerini 0'a eşitleyebiliriz.

YORUMLAR
Email Adresi *
Görüntülenecek İsim *
Yorum *
Paylaş
  • f