PROGRESSBAR – TIMER

1.     ProgressBar

ProgressBar đưc s dng đ hin th thi gian thc hin ca mt công vic nào đó.

winforms bai7 01 PNG

Hình 2.47. Điều khiển ProgressBar

Bảng 2.17. Một số thuộc tính của ProgressBar

Thuộc tính

Mô tả

Maximum

Giá trị tối đa của ProgressBar. Khi ProgressBar được lấp đầy nghĩa là ProgressBar đã đạt giá trị Maximum

Minimum

Giá trị nhỏ nhất của ProgressBar. Khi ProgressBar trông rỗng nghĩa là ProgressBar đang có giá trị Minimum

Value

Giữ giá trị hiện tại của ProgressBar, giá trị này nằm trong đoạn Minimum và Maximum

Style

Kiểu hiển thị của ProgressBar

Step

Lượng giá trị thêm vào Value khi phương thức PerformStep() được gọi

Bảng 2.18. Một số phương thức của ProgressBar

Phương thức

Mô tả

PerformStep()

Phương thức giúp tăng ProgressBar. Giá trị tăng là giá trị được thiết lập trong thuộc tính Step

Increment(<giá trị>)

Phương thức giúp tang ProgressBar. Giá trị tăng là tham số đầu vào <giá trị> của phương thức

2.     Timer

Điu khin Timer cho phép thc thi li mt hành đng sau mt khong thi gian xác đnh.

Graphical user interface, application

Description automatically generated

Hình 2.48. Điều khiển Timer

Bảng 2.19. Một số thuộc tính của Timer

Thuộc tính

Mô tả

Interval

Thiết lập giá trị là một số nguyên. Giá trị nguyên này là thời lượng của một chu kì tính

Enable

Thiết lập giá trị True hoặc False. Nếu là giá trị True thì điều khiển Timer hoạt động, nếu là giá trị False thì điều khiển Timer không hoạt động

Bảng 2.20. Một số phương thức thường dùng của Timer

Phương thức

Mô tả

Start()

Start() kích hoạt điều khiển Timer hoạt động. Phương thức này tương ứng với việc thiết lập giá trị thuộc tính Enable là True

Stop()

Dừng hoạt động của điều khiển Timer. Phương thức này tương ứng với việc thiết lập giá trị thuộc tính Enable là False

Trong điu khin Timer ch có mt s kin đó là Tick:

Bảng 2.21. Sự kiện của Timer

Sự kiện

Mô tả

Tick

Tick là sự kiện được gọi trong mỗi chu kỳ Interval

3.     Ví dụ sử dụng các điều khiển ProgressBar và Timer

Trong ví d này s thc hin viết mt chương trình áp dng hai điu khin ProgressBar và Timer, c th s to giao din cho Form như sau ri thc hin mt s s kin.

winforms bai7 01 PNG

Hình 2.49. Thiết kế giao diện sử dụng ProgressBar và Timer

X lý mt s s kin sau:

·       S dng Timer đ hin th ngày gi hin ti.

·       S dng ProgressBar đ hin th % công vic đang thc hin.

·       X lý s kin cho nút Button, khi click vào thì ngày gi hin ti s hin th ra và thanh ProgressBar s hin th % thc hin công vic. Khi đt đến 100% thì load Form hai.

Bây gi chúng ta s bt đu to giao din cho Form1 và Form2. Đi vi Form1 thì ta cn mt s điu khin như sau:

·       2 label đ hin th ngày và hin th gi.

·       1 ProgressBar đ hin th thi gian thc hin công vic.

·       2 Timer, Timer1 đ to s kin hin th ngày gi hin ti, Timer2 đ to s kin hin th % thc hin công vic.

Sau khi to xong giao din cho 2 Form, bây gi đến lúc ta đi x lý x kin cho điu khin. Đi vi Timer thì ta x lý trên s kin Tick, ta vào Properties ca Timer Click double vào s kin Tick đ viết.

Trong Timer1 ta s to s kin hin th ngày tháng hin ti. Ta to mi mt DateTime, sau đó s dng String.Format() đ format kiu hin th.

private void timer1_Tick(object sender, EventArgs e)

        {

            DateTime dt =  DateTime.Now.Add(new TimeSpan());

            lbl_gio.Text = String.Format("{0:hh:mm:ss tt}", dt);

            lbl_ngaythang.Text = String.Format("{0:dd/MM/yyyy}", dt);

        }

Trong Timer2 ta s to s kin hin th % thc hin công vic và khi đt đến 100% thì load Form2. Ta s dng thuc tính Maximum đ thc hin điu này.

private void timer2_Tick(object sender, EventArgs e)

        {

            Form2 frm = new Form2();

 

            progressBar1.Increment(1);

            lbl_complete.Text = "Connecting to from " + progressBar1.Value.ToString() + "%";

            if (progressBar1.Value == progressBar1.Maximum)

            {

                timer2.Enabled = false;

                frm.ShowDialog();

            }

        }

Sau khi to s kin cho ProgressBar và Timer, bây gi ta s viết s kin cho nút Button, khi Click vào thì s bt Timer1 và Timer 2. Trong trưng hp ProgressBar đang trng thái Enabled thì ta cho nó bng False và ngưc li.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

private void button1_Click(object sender, EventArgs e)

        {

            if(progressBar1.Enabled == true)

            {

                progressBar1.Enabled = false;

                timer2.Start();

                timer1.Start();

            }

            else

            {

                progressBar1.Enabled = true;

                timer2.Stop();

                timer1.Stop();

            }

        }

Kết qu: Trưc khi Click vào Button "Hin th ngày gi" và sau khi Click.

winforms bai7 02 PNG

Hình 2.50. Kết quả sử dụng ProgressBar và Timer

4.     Bài tập

Đây là hai điu khin đc bit trong C# winform đưc s dng rt nhiu cn luyn tp thêm.