miercuri, 8 iunie 2016

C#25 Progress bar, Timer

Progress Bar

 Acesta este un control care afișează progresul unei activități lente sub forma unei bare orizontale. Proprietatea Value reprezintă progresul activității și parcurge în timp plaja de valori dintre Minimum și Maximum cu pasul Step.  Minimum, maximum și step se vor configura la design time din panoul proprietăți.  Efectuarea unui pas este dată de execuția metodei PerformStep() ca în acest exemplu:

for(int i=p.Minimum; i=p.Maximum; i+=p.Step)
{
      p.PerformStep();
}

unde p este un obiect progressBar.

Timer

 Acesta este un cronometru care emite evenimente de tip Tick la intervale programabile, multiplu de 1 milisecundă.


Aplicația

Utilizează un control  Timer care declanșează un eveniment Tick la fiecare 2 secunde, timp de  20 de secunde. Numărul de secunde scurse se afișează într-un control Label, iar progresul se vizualizează într-o bară de progres. Cronometrul se oprește după 20 de secunde și poate fi repornit cu butonul Start.  Acest Timer îl vom denumi winTimer.
Al doilea control Timer afișează ora curentă.  Îl vom denumi SystemTimer. Vom seta din proprietăți proprietatea Enabled pe true (implicit pleacă dezactivat).
Ambele Timere vor avea proprietatea Interval setată pe 1000 (un Tick la o secundă).
Utilizăm două etichete Label al căror text afișat (Text din Properties) îl ștergem. Va fi afișat prin program un text special.
 Aducem un buton pe care scriem Start și pe care îl programăm cu metoda Click din aplicația următoare.
Aducem în formă un progressBar pe care îl configurăm astfel: Maximum = 20, Step = 2.
Mai creăm o variabilă membru în clasa Form1 numită time, de tip întreg, care va contoriza impulsurile de la 0 la 20, apoi  va fi resetată:

private int time = 0;


namespace Timer
{
    public partial class Form1 : Form
    {
        private int time = 0;
        public Form1()
        {
            InitializeComponent();

        }

        private void progressBar1_Click(object sender, EventArgs e)
        {

        }

        private void winTimer_Tick(object sender, EventArgs e)
        {
            time += 2; //incrementeaza contorul  la 2 secunde
            // afisam contorul secundelor (cronometrul)  in eticheta
            label2.Text = string.Format("{0}",time);
            //incrementarea barei de progres
            progressBar1.PerformStep();
            if(time==20) //daca s-au scurs 20 secunde cronometrul se opreste
            {
                winTimer.Stop();
                progressBar1.Enabled = false; //oprim
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            winTimer.Enabled = true;
            if(time==20)
            {
                time = 0;
                progressBar1.Value = 0;
            }
        }

        private void SystemTimer_Tick(object sender, EventArgs e)
        {
            //proprietatea Now a clasei dateTime returneaza ora exacta
            label5.Text = System.DateTime.Now.ToLongTimeString();
        }
    }
}

Niciun comentariu:

Trimiteți un comentariu