{"id":173,"date":"2009-10-29T00:35:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=173"},"modified":"2009-10-29T00:35:00","modified_gmt":"1970-01-01T00:00:00","slug":"csharp-ile-progress-bar-kontrolunun-kullanimi","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2009\/10\/29\/csharp-ile-progress-bar-kontrolunun-kullanimi\/","title":{"rendered":"C# ile Progress Bar Kontrol\u00fcn\u00fcn Kullanimi"},"content":{"rendered":"<p>\n\tUygulamalarimizda yaptigimiz bir islemin ne kadarinin tamamlandigini g&ouml;stermek i&ccedil;in .NET kontrollerinde olan progressbar kontrol&uuml;n&uuml; kullaniyoruz.&nbsp; Progress bar kullanmanin birka&ccedil; farkli y&ouml;ntemi var. Islem yapilan kod blogu i&ccedil;erisinde Application.DoEvent fonksiyonunu kullanarak progress bar degerini degistirebilecegimiz gibi bir timer i&ccedil;inde de o anki durumu g&ouml;re progress barin degerini degistirebiliriz. Iki y&ouml;ntemle de basit &ouml;rnekler vermeye &ccedil;alisacagim.<br \/>\n\t<br \/>\n\tProgressBar kontrol&uuml;n&uuml;n bilmemiz gereken 3 adet &ouml;zelligi vardir bunlar: Minimum,Maximum ve Value &ouml;zellikleridir.<\/p>\n<h4>\n\t&Ouml;rnek 1:<\/h4>\n<p>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><br \/>\n\tIlk olarak bir window projesi a&ccedil;alim ve asagidaki ekrandaki gibi formu d&uuml;zenleyelim. Bu &ouml;rnegimizde baslangi&ccedil; ve bitis araligi verilen sayilarin arasinda kalan t&uuml;m sayilari toplayarak sonucu ekranda g&ouml;sterecegiz. Toplama islemi sirasinda ise islemin y&uuml;zde ka&ccedil;inin tamamlandigini Progressbarda g&ouml;sterecegiz.<br \/>\n\t<br \/>\n\tForm bilesenlerini asagidaki gibi yerlestirdik. Butona basinca baslangi&ccedil; degerinden bitis degerine kadar olan t&uuml;m sayilari toplayip sonu&ccedil; kisminda g&ouml;sterecegiz. Bu esnada islemin y&uuml;zde ka&ccedil;inin tamamlandigini progress barda g&ouml;sterecegiz.<\/p>\n<p>\n\t<img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yazilimmutfagi.com\/yuklenendosyalar\/image\/progressbar\/resimpb1.jpg\" style=\"width: 505px; height: 264px;\" \/><\/p>\n<p>\n\tProgress Bar i&ccedil;in baslangi&ccedil; degerini 0 bitil degerinide 100 olarak belirliyoruz. (minimum,maximum). &Ccedil;&uuml;nk&uuml; islem durumunu y&uuml;zde olarak g&ouml;sterecegimiz i&ccedil;in her % 1 lik&nbsp; dilime bir deger gelecek sekilde ayarlamamiz lazim. Ayrica progress barin step &ouml;zelligini 1 olara ayarliyoruz.<\/p>\n<pre class=\"brush:csharp\">\nprogressBar1.Minimum = 0;\nprogressBar1.Maximum = 100;\nprogressBar1.Step = 1;<\/pre>\n<p>\n\tButona bastigimiz zaman islem bitmeden yeniden basilamasin diye butonun bulundugu groupbox&rsquo;i disable ediyoruz, progress barin degerini resetliyoruz ve sayilari toplamak i&ccedil;in gerekli fonksiyonumuzu &ccedil;agiriyoruz. Daha sonra groupbox&rsquo;i yeniden enable yapiyoruz.<\/p>\n<pre class=\"brush:csharp\">\nprogressBar1.Value = 0;\ngroupBox1.Enabled = false;\nSayilariTopla1();\ngroupBox1.Enabled = true;<\/pre>\n<p>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n<p>\n\tSayilari topladigimiz fonksiyon basit bir toplama islemi aslinda. Baslangi&ccedil; degerinden bitis degerine kadar bir d&ouml;ng&uuml; kurup sayilari ardi ardina topluyoruz. Her toplama isleminde s&uuml;recin durumunu progress barda g&ouml;stermek i&ccedil;in value &ouml;zelligini kullaniyoruz.<\/p>\n<pre class=\"brush:csharp\">\nprivate void SayilariTopla1()\n{\n    long toplam = 0;\n    int bas = Convert.ToInt32(basUD.Value);\n    int bit = Convert.ToInt32(bitUD.Value);\n    if (bas &gt;= bit)\n    {\n        MessageBox.Show(&quot;Baslangi&ccedil; Sayisi bitisten B&uuml;y&uuml;k Olamaz&quot;);\n        return;\n    }\n\n    int fark = bit - bas;\n    for (int i = bas; i &lt; bit + 1; i++)\n    {\n        toplam = toplam + i;       \n        decimal tamamlanmaYuzdesi = ((decimal)(i - bas)\/(decimal)fark)*100;\n        Application.DoEvents();\n        progressBar1.Value = (int)tamamlanmaYuzdesi;\n        sonucLbl.Text = toplam.ToString();\n    }\n\n    sonucLbl.Text = toplam.ToString();\n}<\/pre>\n<p>\n\tYukarida dikkat ederseniz d&ouml;ng&uuml;n&uuml;n her adiminda Application.DoEvents() kullandik bu sayede form &uuml;zerinde bulunan kontrollerdeki degisiklikleri g&ouml;re biliriz. Aksi halde d&ouml;ng&uuml; bitene kadar formda bir degisiklik g&ouml;r&uuml;lmez. Islem bittikten sonra progress bar bir anda dolar ya da b&uuml;y&uuml;k par&ccedil;alar halinde dolar.<br \/>\n\t<br \/>\n\tUygulamayi &ccedil;alistirip butona bastigimizda &ccedil;alisma s&uuml;recinde asagidaki gibi bir g&ouml;r&uuml;nt&uuml; elde ederiz. Kaynak kodlari sayfa sonundaki linkten indirebilirsiniz.<\/p>\n<p>\n\t<img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yazilimmutfagi.com\/yuklenendosyalar\/image\/progressbar\/resimpb2.jpg\" style=\"width: 505px; height: 265px;\" \/><\/p>\n<h4>\n\t&Ouml;rnek 2<\/h4>\n<p>\n\tProgress bar kontrol&uuml;n&uuml; bir timer ile kullanacagimiz basit bir &ouml;rnek yapalim. Ilk olarak formumuza iki adet progress bar ve 2 adet timer ekleyelim.<br \/>\n\t<br \/>\n\tForm loadda timer ve progress bar bilesenlerimizin &ouml;zelliklerini ayarlayalim.<\/p>\n<pre class=\"brush:csharp\">\nprogressBar1.Minimum = 0;\nprogressBar1.Maximum = 100;\nprogressBar1.Step = 1;\n \nprogressBar2.Minimum = 0;\nprogressBar2.Maximum = 800;\nprogressBar2.Step = 1;\n\ntimer1.Interval = 400; \/\/0.5 saniye\ntimer2.Interval = 100; \/\/0.1 saniye<\/pre>\n<p>\n\t<span style=\"font-size: 10pt; line-height: 115%; font-family: &quot;Segoe UI&quot;,&quot;sans-serif&quot;;\">Timer her &ccedil;alistiginda zaman progress barin degerini bir arttirmak ve max degere ulastiginda timeri durdurmak i&ccedil;in timerlarin tick eventlarina asagidaki kodlari yazalim<a href=\"http:\/\/www.yazilimmutfagi.com\">.<\/a><\/span><\/p>\n<pre class=\"brush:csharp\">\nprivate void timer1_Tick(object sender, EventArgs e)\n{\n    if (progressBar1.Value == progressBar1.Maximum)\n    {\n        timer1.Enabled = false;\n        return;\n    }\n\n    progressBar1.Value += 1;\n}\n\nprivate void timer2_Tick(object sender, EventArgs e)\n{\n    if (progressBar2.Value == progressBar2.Maximum)\n    {\n       timer2.Enabled = false;\n        return;\n    }\n\n    progressBar2.Value += 1;\n}<\/pre>\n<p>\n\t<img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yazilimmutfagi.com\/yuklenendosyalar\/image\/progressbar\/resimpb3.jpg\" style=\"width: 534px; height: 219px;\" \/><\/p>\n<p>\n\t&Ouml;rnegimizde ekledigimiz progress barlarin farkli hizlarda doldugunu g&ouml;r&uuml;rs&uuml;n&uuml;z.<br \/>\n\t<br \/>\n\t<a href=\"http:\/\/www.yazilimmutfagi.com\/yuklenendosyalar\/file\/ProggressBarDemo.rar\">&Ouml;rnek&nbsp; kaynak kodlar (iki &ouml;rnekte tek proje altindadir)<\/a><br \/>\n\t<br \/>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# uygulamalarimizda arka planda &#231;alisan bir isin veya o anda yaptigimiz bir islemin y&#252;zde ka&#231;inin tamamlandigini g&#246;rsek olarak g&#246;stermek i&#231;in progressbar bileseni kullaniriz.<\/p>\n","protected":false},"author":517,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[417],"tags":[3882,4651,4868,4129],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/173"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":0,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}