ProgressBar được sử dụng để hiển thị thời gian thực hiện của một công việc
nào đó.
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
|
Điều khiển Timer
cho phép thực thi lại một hành động
sau một khoảng thời gian xác định.
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 điều khiển Timer
chỉ có một sự kiện đó
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
|
Trong ví dụ này sẽ thực hiện viết một chương trình áp dụng hai điều khiển ProgressBar và Timer, cụ thể sẽ tạo giao diện
cho Form như sau rồi
thực hiện một số sự kiện.
Hình 2.49.
Thiết kế giao diện sử dụng ProgressBar và Timer
Xử lý một số sự kiện sau:
·
Sử dụng Timer
để hiện thị ngày giờ hiện tại.
·
Sử dụng
ProgressBar để hiển thị % công việc
đang thực hiện.
·
Xử lý sự kiện cho nút Button, khi click vào thì
ngày giờ hiện tại sẽ hiện thị ra và thanh ProgressBar sẽ hiển thị % thực hiện công việc. Khi đạt đến
100% thì load Form hai.
Bây giờ chúng ta sẽ bắt đầu tạo giao diện cho Form1 và Form2. Đối với Form1 thì ta cần một số điều khiển
như sau:
·
2 label để hiển thị ngày và
hiển thị giờ.
·
1 ProgressBar để hiển thị thời gian thực hiện công việc.
·
2 Timer, Timer1 để tạo sự kiện hiển thị ngày giờ hiện tại, Timer2
để tạo sự kiện hiển thị % thực hiện công việc.
Sau khi tạo xong giao diện cho 2 Form, bây giờ đến lúc
ta đi xử lý xự kiện cho điều
khiển. Đới với Timer thì ta xử lý trên sự kiện Tick, ta vào Properties của Timer Click double vào sự kiện Tick để
viết.
Trong Timer1 ta sẽ tạo sự kiện hiển thị ngày tháng hiện tại. Ta tạo mới một
DateTime, sau đó sử
dụng String.Format() để format kiểu hiển 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ẽ tạo sự kiện hiển thị % thực hiện công việc và khi đạt đến 100% thì load Form2. Ta sử dụng thuộc tính Maximum để thực hiện điều 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 tạo sự kiện cho ProgressBar và Timer, bây giờ ta sẽ viết sự kiện cho nút Button, khi Click vào thì sẽ bật Timer1 và
Timer 2. Trong trường
hợp ProgressBar đang
ở trạng thái Enabled thì ta cho nó bằng False và ngược lại.
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 "Hiển thị ngày giờ" và sau khi Click.
Hình 2.50.
Kết quả sử dụng ProgressBar và Timer
Đây là hai điều khiển đặc biệt trong C# winform được sử dụng rất nhiều cần luyện tập thêm.