C3_WindowForm - WordPress.com

advertisement
Chương 3
LẬP TRÌNH GIAO DIỆN
Graphical User Interface (GUI)
1
Nội Dung





Graphical User Interface (GUI)
Event Driven Programming
Ứng dụng Windows Form dùng C#
Khuôn mẫu của ứng dụng Windows Form chuẩn
Cách tạo ứng dụng Windows Form




Tạo ứng dụng Form
Chỉnh sửa form
Thêm component vào form
Viết phần xử lý cơ bản
2
GUI
Command line interface: CLI
Tương tác qua keyboard
Thực thi tuần tự
Text user interface: TUI
GUI dựa trên text
Mức độ tương tác cao hơn
3
GUI
Graphical User Interface: GUI
Tương tác qua giao
diện đồ họa độ
phân giải cao
Đa số các hệ OS hiện
đại đều dùng GUI
Cho phép user dễ dàng
thao tác
4
GUIs

Chương trình hiện đại đều dùng GUI
Graphical: text, window, menu, button…
User: người sử dụng chương trình
Interface: cách tương tác chương trình

Thành phần đồ họa điển hình







Window: một vùng bên trong màn hình chính
Menu: liệt kê những chức năng
Button: nút lệnh cho phép click vào
TextBox: cho phép user nhập dữ liệu text
5
GUI Application

Windows Form là nền tảng GUI cho ứng dụng desktop




(Ngược với Web Form ứng dụng cho Web)
Single Document Interface (SDI)
Multiple Document Interface (MDI)
Các namespace chứa các lớp hỗ trợ GUI trong .NET

System.Windows.Forms:


Chứa GUI components/controls và form
System.Drawing:


Chức năng liên quan đến tô vẽ cho thành phần GUI
Cung cấp chức năng truy cập đến GDI+ cơ bản
6
Event- Driven Programming
Cách truyền thống
Danh sách các lệnh thực thi
tuần tự
Việc kế tiếp xảy ra chính là lệnh
tiếp theo trong danh sách
Chương trình được thực thi bởi
máy tính
Event-Driven Programming
Các đối tượng có thể kích hoạt sự
kiện và các đối tượng khác phản
ứng với những sự kiện đó
Việc kế tiếp xảy ra phụ thuộc vào
sự kiện kế tiếp
Luồng chương trình được điều
kiển bởi sự tương tác UserComputer
7
Event-Driven Programming






Chương trình GUI thường dùng Event-Drive Programming
Chương trình chờ cho event xuất hiện và xử lý
Ví dụ sự kiện:
Firing an event: khi đối tượng khởi tạo sự kiện
Listener: đối tượng chờ cho sự kiện xuất hiện
Event handler: phương thức phản ứng lại sự kiện
8
Event-Driven Programming

Minh họa xử lý trong form
Click
User nhập text vào
texbox -> click
Button để add
chuỗi nhập vào
listbox
invoke
Lấy dữ liệu từ
textbox
Add vào listbox
Button đưa ra sự kiện click
Form có event handler cho click của button
9
Event-Driven Programming
Event

GUI-based events









Mouse move
Mouse click
Mouse double-click
Key press
Button click
Menu selection
Change in focus
Window activation
…
Danh sách
event cho
Form
10
Windows Forms Application
11
Windows Form App



Sử dụng GUI làm nền tảng
Event-driven programming cho các đối tượng trên form
Ứng dụng dựa trên một “form” chứa các thành phần





Menu
Toolbar
StatusBar
TextBox, Label, Button…
Lớp cơ sở cho các form của ứng dụng là Form
System.Windows.Forms. Form
Namespace
Class
12
Minh họa WinForm App
13
Tạo WinForm App
Tạo project: Windows App
14
Tạo WinForm App từ VS. 2005 (3)
2
1
Windows App do
VS.2005 khởi tạo
3
4
1: form ứng dụng
2: control toolbox
3: Solution Explorer
4: Form properties
15
Ứng Dụng WinForm đơn giản
Lớp Form cơ sở
Form1.cs
Control kiểu Label
Thiết kế form & control
Add control vào form
Chạy ứng dụng với
Form1 làm form chính
16
Các bước tạo ứng dụng WinForm cơ bản


Tạo lớp kế thừa từ lớp Form cơ sở
Bổ sung các control vào form


Thêm các label, menu, button, textbox…
Thiết kế layout cho form (bố trí control)

Hiệu chỉnh kích thước, trình bày, giao diện cho




form
Control chứa trong form
Viết các xử lý cho các control trên form và các xử lý khác
Hiển thị Form

Thông qua lớp Application gọi phương thức Run
Nên sử dụng IDE hỗ trợ thiết kế GUI!
17
Form và control


Tất cả các thành phần trên form đều là đối tượng
Các class control





System.Windows.Forms.Label
System.Windows.Forms.TextBox
System.Windows.Forms.Button
…
object
Các control là instance của các
lớp trên.
object
object
object
object
object
18
Các thuộc tính của Form
Property
Description
Default
Name
Tên của form sử dụng trong project
Form1,Form2…
AcceptButton
Thiết lập button là click khi user nhấn Enter
CancelButton
Thiết lập button là click khi user nhấn Esc
ControlBox
Hiển thị control box trong caption bar
True
FormBorderStyle
Biên của form: none, single, 3D, sizable
Sizable
StartPosition
Xác định vị trí xuất hiện của form trên màn hình
WindowsDefaultLocation
Text
Nội dung hiển thị trên title bar
Form1, Form2, Form3
Font
Font cho form và mặc định cho các control
Method
Description
Close
Đóng form và free resource
Hide
ẩn form
Show
Hiển thị form đang ẩn
Event
Description
Load
Xuất hiện trước khi form show
19
Phương thức của lớp Form

Các hành động có thể thực hiện trên form






Activate: cho form nhận focus
Close: đóng và giải phóng resource
Hide: ẩn form
Refresh: tô vẽ lại
Show: cho form show ra màn hình (modeless) và activate
ShowDialog: hiển thị dạng modal


Find Dialog chính là dạng modeless
Font dialog dạng modal
20
Event của Form

Tạo xử lý cho event




Trong cửa sổ properties
Chọn biểu tượng event
Kích đúp vào tên event
Event thường dùng






Load: xuất hiện trước khi form xuất hiện
lần đầu tiên
Closing: xuất hiện khi form đang chuẩn bị
đóng
Closed: xuất hiện khi form đã đóng
Resize: xuất hiện sau khi user resize form
Click: xuất hiện khi user click lên nền form
KeyPress: xuất hiện khi form có focus và
user nhấn phím
Tên event
Trình xử lý
nếu có
21
Event của Form

Ví dụ chương trình sẽ hỏi user xác nhận trước khi đóng
ứng dụng.



Kích đúp vào item FormClosing trong cửa sổ event
Hàm Form1_FormClosing được tạo và gắn với sự kiện
FormClosing
Viết code cho event handler Form1_FormClosing
this.FormClosing += new FormClosingEventHandler( this.Form1_FormClosing );
22
Tổng quan controls

Property & layout của control



Anchor
Docking
Các control
















Label, textbox, button
CheckBox, RadioButton, CheckedListBox,
ListBox, Combobox, CheckListBox
GroupBox, Panel & TabControl
PictureBox, ImageList
TrackBar
NumericUpDown
DomainUpDown
ProgressBar
MaskEditBox
DateTimePicker
MonthCalendar
Timer
ToolTip
Mouse Event handling
Keyboard event handling
23
Tổng quan controls


Control là một thành phần cơ bản trên form
Có các thành phần




Thuộc tính
Phương thức
Sự kiện
Tất cả các control chứa trong namespace:
System.Windows.Forms
24
Windows Form
Fig. 12.3 Components and controls for Windows Forms.
Tổng quan controls

Truy xuất đến thuộc tính của đối tượng
• Cú pháp
<Tên đối tượng>.<Thuộc tính>
26
Tổng quan controls

Gán giá trị cho thuộc tính của đối tượng
• Cú pháp
<Tên đối tượng>.<Thuộc tính> = Giá trị;
27
Tổng quan controls

Một số thuộc tính của control



Text: mô tả text xuất hiện trên control
Focus: phương thức chuyển focus vào control
TabIndex: thứ tự của control nhận focus




Enable: thiết lập trạng thái truy cập của control
Visible: ẩn control trên form, có thể dùng phương thức Hide
Anchor:



Mặc định được VS.NET thiết lập – Tuy nhiên người lập trình có
thể điểu chỉnh
Neo giữ control ở vị trí xác định
Cho phép control di chuyển theo một vị trí khi kích thước của
đối tượng chứa nó thay đổi
Size: xác nhận kích thước của control
28
Thuộc tính controls
Common Properties
Description
BackColor
Màu nền của control
BackgroundImage
Ảnh nền của control
ForeColor
Màu hiển thị text trên form
Enabled
Xác định khi control trạng thái enable
Focused
Xác định khi control nhận focus
Font
Font hiển thị text trên control
TabIndex
Thứ tự tab của control
TabStop
Nếu true, user có thể sử dụng tab để select control
Text
Text hiển thị trên form
TextAlign
Canh lề text trên control
Visible
Xác định hiển thị control
29
Tổng quan controls
Lệnh gọi thực hiện 1 phương thức (method) của đối tượng
 Phương thức của đối tượng dùng để thực hiện một hành
động liên quan đến đối tượng đó
 Cú pháp
<Tên đối tượng>.<Phương thức> ( [ Các tham sô ] )
 Ví dụ

Phương thức di chuyển con trỏ vào 1 đối tượng
<Tên đối tượng>.Focus();
30
Tổng quan controls
Sử dụng thư viện các lớp đối tượng
Thời gian:
 Sử dụng lớp đối tượng DateTime
 Cú pháp
DateTime.<Hàm liên quan đến thời gian> ( [ Các tham số ] )
Ví dụ:
 Lấy ngày giờ hiện hành của máy tính
DateTime.Now
 Lấy giờ hiện hành của máy tính
DateTime.Now. TimeOfDay
31
Tổng quan controls
Sử dụng thư viện các lớp đối tượng
Màu sắc:
 Sử dụng lớp đối tượng Color
 Cú pháp
Color.<Thuộc tính màu sắc>
 Ví dụ





Màu xanh: Color.Blue
Màu đỏ: Color.Red
Màu trắng: Color.White
Màu đen: Color.Black
…
32
Tổng quan controls
Sử dụng thư viện các lớp đối tượng
Màu sắc:
 Cách tô màu nền của Textbox
<Tên Textbox>.BackColor = Color.Màu;
 Cách tô màu chữ của Textbox
<Tên Textbox>.ForeColor = Color.Màu;
33
Tổng quan controls
Các hàm toán học
 Sử dụng lớp đối tượng Math


Cú pháp
Math.<Các hàm tóan học> ( [ Các tham số ] )
Ví dụ






Lấy căn bậc 2: Math.Sqrt(giá trị)
Lũy thừa x^y: Math.Pow(x,y)
Làm tròn số: Math.Round(giá trị)
Tìm Max 2 số: Math.Max(giá trị 1, giá trị 2)
Tìm Min 2 số: Math.Min(giá trị 1, giá trị 2)
…
34
Tổng quan controls
Các hàm thường dùng
 Hàm xuất thông báo


MessageBox.Show (“<Noi dung>”);
Ví dụ:
MessageBox.Show (“Xin chào!”);



MessageBox.Show (“<Noi dung>”, “<Tiêu dê>”);
Ví dụ:
MessageBox.Show (“Xin chào!”, “Welcome”);
Hàm đổi chuỗi thành số nguyên


int.Parse(<chuoi sô>)
Ví dụ: int.Parse (“123”) 123
35
Control Layout - Anchor
None
Sizable
FormBorderStyle
Fixed3D
FixedDialog
FixedSingle
36
Control Layout - Anchor

Khi FormBorderStyle = Sizable, form cho phép thay đổi
kích thước khi Runtime


Sự bố trí của control có thể thay đổi theo
Sử dụng thuộc tính Anchor

Cho phép control phản ứng lại với thao tác resize của form



Control có thể thay đổi vị trí tương ứng với việc resize của form
Control cố định không thay đổi theo việc resize của form
Các trạng thái neo




Left: cố định theo biên trái
Right: cố định theo biên phải
Top: cố định theo biên trên
Bottom: cố định theo biên dưới
37
Control Layout - Anchor
Button được neo biên trái
Vị trí tương đối với biên trái không đổi
Button tự do
Di chuyển tương ứng theo kích thước mới
38
Control Layout - Anchor

Thiết lập Anchor cho control
Chọn các
biên để neo
Biên được
chọn neo,
màu đậm
39
Control Layout - Anchor
Neo theo
bốn phía
40
Control Layout - Docking

Các control có thể gắn (dock) với một cạnh nào đó của
form, hoặc container của control.
Windows Explorer
ListView gắn
bên phải
TreeView gắn
bên trái
41
Control Layout - Docking
Top
Left
Fill
Right
Bottom
None
42
Control Layout - Docking
Dock = None
Dock = Top
TextBox
Dock = Fill
TextBox.Multiline = True
Dock = Bottom
43
Control Layout - Alignment
Ảnh
Ý nghĩa
Canh lề trái, phải, trên, dưới
Canh khoảng cách đều theo chiều dọc,
ngang giữa các control
Canh đều kích thước các control.
 Lưu ý: Kích thước của control được chọn
đầu tiên trong danh sách các control chọn
sẽ quyết định kích thước cho toàn bộ control
44
Control Layout - Alignment
Ảnh
Ý nghĩa
Các control được sắp canh liền tiếp nhau theo
chiều ngang.
Lưu ý: Khoảng cách giữa control đầu và cuối
sẽ được tính sao cho các control còn lại cách
đều
Xóa khoảng cách canh đều sắp liền tiếp nhau
theo chiều ngang
Tăng hoặc giảm khoảng cách canh liền tiếp
nhau theo chiều ngang
45
Control Layout - Alignment
Ảnh
Ý nghĩa
Các control được sắp canh liền tiếp nhau theo
chiều dọc
Xóa khoảng cách canh đều sắp liền tiếp nhau
theo chiều dọc
Tăng hoặc giảm khoảng cách canh liền tiếp
nhau theo chiều dọc
46
Control Layout - Alignment
Ảnh
Ý nghĩa
Canh control ở giữa form theo chiều ngang
(dọc)
Xét control nằm chồng lên hoặc nằm dưới 2
control nằm lên nhau
Thiết lập thứ tự Tab Index cho các control.
Các control sẽ được đánh thứ tự từ 0->N.
Khi người dùng nhấn Tab trong chương trình
thì các control sẽ được focus theo thứ tự qui
định.
47
Các Control
Label, TextBox, Button
48
Label, TextBox, Button

Label

Cung cấp chuỗi thông tin chỉ dẫn


Chỉ đọc
Được định nghĩa bởi lớp Label


TextBox


Thuộc lớp TextBox
Vùng cho phép user nhập dữ liệu


Dẫn xuất từ Control
Cho phép nhập dạng Password
Button


Cho phép cài đặt 1 hành động.
Dẫn xuất từ ButtonBase
49
Labels, TextBoxes and Buttons

Labels (lbl)

Provide text instruction


Read only text, cannot by modified by user.
Defined with class Label1

Derived from class Control
lblMessage
btnPush
btnExit
Label, TextBox, Button
Label
Thuộc tính thường dùng
Font
Font hiển thị của Label
Text
Nội dung text hiển thị
TextAlign
Canh lề chuỗi trình bày trên điều khiển
ForeColor
Màu text
Visible
Trạng thái hiển thị
BorderStyle
Kiểu đường viền của điều khiển
FlatStyle
Kiểu hiển thị điều khiển theo hệ thống hay
chuẩn như đã thiết kế
51
Labels, TextBoxes and Buttons

Labels (lbl)



Khai báo và khởi tạo đối tượng Lable
Cách 1: Thiết kế
Cách 2: Code
void CreateControls()
{
Label lb = new Label();
lb.Text = "This is Lable Object";
this.Controls.Add(lb);
}
lb
btnPush
btnExit
Label, TextBox, Button
TextBox
Thuộc tính thường dùng
Font
Font hiển thị của text
Text
Nội dung text hiển thị
TextAlign
Canh lề text
ForeColor
Màu text
Visible
Trạng thái hiển thị
Enabled
Vô hiệu hóa hay cho phép sử dụng
MaxLength
Số lượng ký tự lớn nhất cho phép nhập
Password
Giá trị được nhập thay thế bởi ký tự bạn
khai báo trong thuộc tính này
Readonly
Giá trị true chỉ cho phép đọc giá trị
WordWrap
Tự động xuống dòng nếu chuỗi giá trị dài
hơn kích thước của điều khiển
53
Label, TextBox, Button
TextBox
Thuộc tính thường dùng
AcceptsReturn
Nếu true: nhấn enter tạo thành dòng mới trong
chế độ multiline
Multiline
Nếu true: textbox ở chế độ nhiều dòng, mặc
định là false
ScrollBars
Thanh cuộn cho chế độ multiline
Event thường dùng
TextChanged
Kích hoạt khi text bị thay đổi, trình xử lý được
khởi tạo mặc định khi kích đúp vào textbox
trong màn hình design view
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
TextBox
54
Label, TextBox, Button

Demo TextBox
Double click vào
textbox để tạo event
handler cho event
TextChanged
Chuyển thành chữ hoa
5
5
Labels, TextBoxes and Buttons

Khai báo và khởi tạo đối tượng Text


Cách 1: Thiết kế
Cách 2: Code
void CreateControls()
{
TextBox txt = new TextBox();
txt.Name = "txtHoLot";
txt.Text = "This is TextBox Object";
this.Controls.Add(txt);
}
lblHoLot
lblHoVaTen
txtHoLot
txtTen
lblTen
btnHoLot
Labels, TextBoxes and Buttons

Button

Derived from ButtonBase

Used to run/activate an Event Procedure
Click event

Ví dụ:
private void btnThoat_Click(object sender, EventArgs e)
{
this.Close();
}
Label, TextBox, Button
Button
Thuộc tính thường dùng
Text
Chuỗi hiển thị trên bề mặt button
FlatStyle
Kiểu đường viền của điều khiển Button
Image
Chọn Image trong phần Resource để
trình bày hình trên điều khiển Button
TextAlign
Canh lề diễn giải trên điều khiển
58
Label, TextBox, Button
Button
Event thường dùng
Click
Kích hoạt khi user kích vào button, khai báo mặc
định khi người lập trình kích đúp vào button trong
màn hình Design View của Form.
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
button bằng chuột
CheckChanged
Xảy ra khi người sử dụng vào điều khiển button
TextChanged
Xảy ra khi giá trị diễn giải trên điều khiển bị thay
đổi
EnabledChanged
Xảy ra khi thuộc tính Enabled thay đổi giá trị
VisibleChanged
Xảy ra khi thuộc tính Visible thay đổi giá trị
59
Labels, TextBoxes and Buttons

Khai báo và khởi tạo đối tượng Button
void CreateControls()
{
}
Button btn = new Button();
btn.Name = "btnSave";
btn.Text = "&Save";
this.Controls.Add(btn);
Thêm control vào form

Kéo thả control vào form
61
Code của phần design

Phần code thiết kế Form1 được tạo tự động
Form1.Designer.cs
Chứa code khởi tạo
control
Khai báo các đối tượng
control trên Form1
62
Code của phần design
InitializeComponent
Tạo đối tượng
Lần lượt khai
báo các thuộc
tính cho các
control
63
Code của phần design
InitializeComponent
Đưa các control vào danh sách
control của Form1
64
Sửa thuộc tính của control
Đổi tên thành
txtNum1
Thay đổi các giá trị qua cửa sổ
properties -> VS tự cập nhật
code
65
Phần xử lý


Khi click vào Add -> cộng 2 giá trị và xuất kết quả
Thực hiện




Button Add cung cấp sự kiện click
Form sẽ được cảnh báo khi Add được click
Form sẽ lấy dữ liệu từ 2 textbox và cộng -> kết quả
Cơ chế event




Button đưa ra sự kiện click: đối tượng publish
Form quan tâm đến sự kiện click của button, Form có sẽ
phần xử lý ngay khi button click.
Phần xử lý của form gọi là Event Handler
Form đóng vai trò là lớp subscribe
66
Khai báo event handler

Kích đúp vào button Add trên màn hình thiết kế cho phép
tạo event handler cho sự kiện này.
event
DClick
Cửa sổ quản lý
event của BtnAdd
67
Khai báo event handler
Event handler cho
button Add
Cùng signature method với System.EventHandler
68
Khai báo event handler
InitializeComponent
Sự kiện click
Trình xử lý được gọi
khi event xảy ra
Delegate chuẩn cho event handler
69
Viết phần xử lý

Phần xử lý của Form1 khi button click

Lấy giá trị của 2 textbox, cộng kết quả và xuất ra MessageBox
70
Kiểm tra dữ liệu nhập


Nếu user nhập vào chuỗi thì chương trình trên sẽ lỗi!
Khắc phục:



Cảnh báo user nhập không đúng dạng
Xóa những ký tự không hợp lệ đó
Sử dụng control ErrorProvider để cảnh báo lỗi khi user
nhập không đúng



Trong Design View: kéo ErrorProvider từ
ToolBox/Component vào form
Chặn xử lý sự kiện TextChanged khi user nhập liệu vào
textbox
Nếu nhập sai thiết lập lỗi cho control ErrorProvider cảnh
báo!
71
Bổ sung ErrorProvider
Kéo thả ErrorProvider vào design view
72
Xử lý sự kiện TextChanged của textBox
Phần kiểm tra
73
ErrorProvider cảnh báo
Icon hiển thị lỗi
Di chuyển chuột vào
icon, tooltip xuất hiện
74
Bài tập 1- Trang 1
lblHoVaTen
txtHoLot
lblHoLot
txtTen
lblTen
btnHoLot
Các Control
CheckBox RadioButton
76
CheckBox

Control đưa ra một giá trị cho trước và user có thể



Chọn giá trị khi Checked = true
Không chọn giá trị: Checked = false
Lớp đại diện CheckBox
Properties
Appearance
Checked
Text
ThreeState
CheckedChanged
77
CheckBox
CheckBox
Thuộc tính thường dùng
FlatStyle
Kiểu đường viền
Appearance
Hình dạng của CheckBox
Checked
Trạng thái chọn(True) hay không (False)
CheckState
Trạng thái của điều khiển CheckBox đang
chọn.
Text
Chuỗi trình bày với diễn giải của tùy chọn
TextAlign
Canh lề chuỗi diễn giải trên điều khiển
ThreeState
Cho phép hay không ba trạng thái Checked,
unChecked, Indeterminate của điều khiển
CheckBox
78
CheckBox
CheckBox
Event thường dùng
CheckChanged
Kích hoạt khi người sử dụng Click vào điều
khiển CheckBox
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
CheckBox
Click
Xảy ra khi người sử dụng Click vào điều khiển
CheckBox
CheckStateChanged
Xảy ra khi thuộc tính CheckState bị thay đổi
TextChanged
Xảy ra khi giá trị diễn giải của điều khiển bị thay
đổi
Enabled
Xảy ra khi thuộc tính Enabled thay đổi giá trị
Visible
Xảy ra khi thuộc tính Visible thay đổi giá trị
79
CheckBox

ThreeState = true : cho phép thiết lập 3 trạng thái:



Checkstate = Indeterminate: không xác định
CheckState= Checked: chọn
CheckState= Unchecked: không chọn
Chưa chọn
80
CheckBox

Khai báo và khởi tạo đối tượng CheckBox
void CreateControl()
{
CheckBox chk = new CheckBox();
chk.Name = "chkID";
chk.Text = "Full Detail";
chk.Checked = true;
this.Controls.Add(chk);
}
81
RadioButton





Cho phép user chọn một option trong số nhóm option
Khi user chọn 1 option thì tự động option được chọn
trước sẽ uncheck
Các radio button chứa trong 1 container (form,
GroupBox, Panel, TabControl) thuộc một nhóm.
Lớp đại diện: RadioButton
Khác với nhóm CheckBox cho phép chọn nhiều option,
còn RadioButton chỉ cho chọn một trong số các option.
Appearance
Checked
Text
CheckedChanged
82
RadioButton
Nhóm RadioButton
thứ 1 chứa trong
GroupBox1
Nhóm RadioButton
thứ 2 chứa trong
GroupBox2
83
RadioButton
RadioButton
Thuộc tính thường dùng
FlatStyle
Kiểu đường viền
Appearance
Hình dạng của RadioButton
Checked
Trạng thái chọn(True) hay không (False)
Text
Chuỗi trình bày với diễn giải của tùy chọn
TextAlign
Canh lề chuỗi diễn giải trên điều khiển
84
RadioButton
RadioButton
Event thường dùng
CheckChanged
Kích hoạt khi người sử dụng Click vào điều
khiển RadioButton
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
RadioButton
Click
Xảy ra khi người sử dụng Click vào điều khiển
RadioButton
CheckChanged
Xảy ra khi người sử dụng Click vào điều khiển
RadioButton
TextChanged
Xảy ra khi giá trị diễn giải của điều khiển bị thay
đổi
Enabled
Xảy ra khi thuộc tính Enabled thay đổi giá trị
Visible
Xảy ra khi thuộc tính Visible thay đổi giá trị
85
RadioButton

Khai báo và khởi tạo đối tượng RadioButton
void CreateControl()
{
RadioButton rd = new RadioButton();
rd.Name = "rdMale";
rd.Text = "Male";
rd.Checked = true;
this.Controls.Add(rd);
}
86
Bài Tập 2-3 trang 6
87
Các Control
ListBox & ComboBox
88
ListBox & ComboBox

ListBox


Cung cấp một danh sách các item cho phép user chọn
ListBox cho phép hiển thị scroll nếu các item vượt quá vùng
thể hiện của ListBox
Items
MultiColumn
SelectedIndex
SelectedItem
Properties
SelectedItems
ListBox
Sorted
Text
89
ListBox & ComboBox

Method & Event
Method
ClearSelected
GetSelected
SetSelected
FindString
ListBox
Event
SelectedIndexChanged
SelectedValueChanged
9
0
ListBox & ComboBox
ListBox & ComboBox
Thuộc tính thường dùng
BorderStyle
Kiểu đường viền
DataSource
Tập dữ liệu vào điều khiển
DisplayMember
Tên của trường tương ứng với chuỗi trình bày
trên điều khiển
MultiColumn
Cho phép trình bày danh sách phần tử trên
điều khiển có nhiều cột
Items
Tập các phần tử trong điều khiển,bạn có thể sử
dụng phương thức Add và AddRange để thêm
chuỗi hay phần tử với khóa và giá trị vào điều
khiển ListBox
ColumnWidth
Chiều rộng của mỗi cột nếu phần tử trình bày
trên điều khiển có nhiều cột
91
ListBox & ComboBox
ListBox & ComboBox
Thuộc tính thường dùng
Sorted
Nếu chọn True thì danh sách xếp tăng dần theo
giá trị
ValueMember
Giá trị ứng với khóa nếu phần tử có khóa và
giá trị
SelectionMode
Cho phép chọn một hay nhiều phần tử cùng
một lúc
SelectedItems
Trả về tập phần tử được chọn
SelectedItem
Gán và lấy giá trị object ứng với phần tử đang
chọn
SelectedValue
Gán hay lấy giá trị ứng với phần tử kiểu object
đang chọn
SelectedIndex
Gán hay lấy giá trị chỉ mục tương ứng với phần
tử đang chọn
92
ListBox & ComboBox
ListBox & ComboBox
Event thường dùng
DoubleClick
Xảy ra khi người sử dụng Double Click trên
phần tử
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
MouseDoubleClick
Xảy ra khi người sử dụng Double Click trên
điều khiển
SelectedIndexChanged
Xảy ra khi chỉ mục của phần tử thay đổi
SelectedValueChange
Xảy ra khi thay đổi giá trị của phần tử
93
ListBox & ComboBox
ListBox & ComboBox
Event thường dùng
DisplayMemberChanged
Xảy ra khi tên cột khai báo trong thuộc tính
DisplayMember thay đổi
ValueMemberChanged
Xảy ra khi tên cột khai báo trong thuộc tính
ValueMember thay đổi
EnabledChanged
Xảy ra khi thuộc tính Enabled thay đổi giá trị
VisibleChanged
Xảy ra khi thuộc tính Visible thay đổi giá trị
Phương thức
Add
Thêm chuỗi hay đối tượng vào điều khiển
AddRange
Thêm tập gồm chuỗi hay nhiều đối tượng vào
điều khiển
94
ListBox & ComboBox

Khai báo và khởi tạo đối tượng ComboBox
void CreateControls()
{
ListBox lst = new ListBox();
lst.Name = "lstMonHoc";
lst.Text = "Lập Trinh C#";
lst.Items.Add("Console");
lst.Items.Add("Window Form");
lst.Items.Add("Hướng đối tượng");
lst.Location = new System.Drawing.Point(200, 300);
this.Controls.Add(lst);
}
9
5
ListBox & ComboBox

Thuộc tính Items cho phép thêm item vào ListBox
Danh sách item
Cho phép thêm item
trong màn hình thiết
kế form
9
6
ListBox & ComboBox

ListBox hiển thị dạng Multi Column
Hiển thị nhiều cột
97
ListBox & ComboBox

Demo ListBox
Kiểm tra xem chuỗi nhập có trong list box?
- Nếu có: select item đó
- Ngược lại: thêm chuỗi mới vào list box
98
ListBox & ComboBox

Sự kiện SelectedIndexChanged
Mỗi khi kích chọn vào item
trong listbox  sẽ xóa item
được chọn tương ứng
SelectedIndexChanged
Demo Frm57
9
9
ListBox & ComboBox

Số phần tử trong ListBox


Lấy giá trị của 1 phần tử trong ListBox


TenListBox.Items.Clear();
Xóa phần tử đầu tiên trong ListBox


TenListBox.Items.Add(txtN.Text);
Xóa tất cả các phần tử trong ListBox


TenListBox.Items[i]
Thêm một phần tử vào ListBox


TenListBox.Item.count
TenListBox.Items.RemoveAt(0);
Xóa phần tử cuối cùng của Listbox

if (TenListBox.Items.Count !=0)

TenListBox.Items.RemoveAt(TenListBox.Items.Count-1);
10
0
ListBox & ComboBox

Xóa 1 phần tử trong ListBox tại vị trí bất kỳ







Chọn 1 phần tử trong listbox


TenListBox.SetSelected(i, true);
Kiểm tra 1 phần tử trong List box có đang chọn hay
không


int i = 0;
while (i < lstlopA.Items.Count)
{ if (lstlopA.GetSelected(i) == true)
lstlopA.Items.RemoveAt(i);
i++;
}
TenListBox.GetSelected(i) == true
Gán giá trị cho 1 phần tử của ListBox

TenListBox.Items[i] = GiaTri.ToString();
10
1
ListBox & ComboBox

ComboBox


Kết hợp TextBox với một danh sách dạng drop down
Cho phép user kích chọn item trong danh sách drop down
Sorted
Items
DropDownStyle
ComboBox
MaxDropDownItems
AutoCompleteMode
Text
DropDownHeight
10
2
ListBox & ComboBox
ListBox & ComboBox
Thuộc tính thường dùng
FlatStyle
Kiểu đường viền
DataSource
Tập dữ liệu vào điều khiển
DisplayMember
Tên của trường tương ứng với chuỗi trình bày
trên điều khiển
DropDownStyle
Kiểu trình bày danh sách phần tử, mặc định là
Dropdown(cho phép thêm mới
chuỗi),DrodownList chỉ cho phép chọn trong
danh sách, Simple(dạng danh sách)
Items
Tập các phần tử trong điều khiển, bạn có thể
sử dụng phương thức Add và AddRange để
thêm chuỗi hay phần tử với khóa và giá trị vào
điều khiển ComboBox
MaxDropDownItems
Số phần tử lớn nhất có thể liệt kê
10
3
ListBox & ComboBox
ListBox & ComboBox
Thuộc tính thường dùng
MaxLength
Số lượng ký tự lớn nhất cho phép nhập, nếu
giá trị nhập vào <0 thì mặc định là 0
ValueMember
Giá trị ứng với khóa nếu phần tử có khóa và
giá trị
Text
Giá trị chuỗi ứng với nhãn đang chọn
SelectedText
Gán hay lấy giá trị chuỗi ứng với nhãn đang
chọn
SelectedItem
Gán và lấy giá trị object ứng với phần tử đang
chọn
SelectedValue
Gán hay lấy giá trị ứng với phần tử object đang
chọn
SelectedIndex
Gán hay lấy giá trị chỉ mục tương ứng với phần
tử đang chọn
10
4
ListBox & ComboBox
ListBox & ComboBox
Event thường dùng
TextChanged
Xảy ra khi chuỗi trên điều khiển thay đổi
MouseClick
Xảy ra khi người sử dụng Click trên điều khiển
MouseDoubleClick
Xảy ra khi người sử dụng Double Click trên
điều khiển
SelectedIndexChanged
Xảy ra khi chỉ mục của phần tử thay đổi
TextChanged
Xảy ra khi chuỗi trên điều khiển bị thay đổi
SelectedValueChange
Xảy ra khi thay đổi giá trị của phần tử
SelectedChangeCommited
Xảy ra khi người sử dụng kết thúc quá trình
chọn phần tử trên điều khiển
10
5
ListBox & ComboBox
ListBox & ComboBox
Event thường dùng
DisplayMemberChanged
Xảy ra khi tên cột khai báo trong thuộc tính
DisplayMember thay đổi
ValueMemberChanged
Xảy ra khi tên cột khai báo trong thuộc tính
ValueMember thay đổi
EnabledChanged
Xảy ra khi thuộc tính Enabled thay đổi giá trị
VisibleChanged
Xảy ra khi thuộc tính Visible thay đổi giá trị
Phương thức
Add
Thêm chuỗi hay đối tượng vào điều khiển
AddRange
Thêm tập gồm chuỗi hay nhiều đối tượng vào
điều khiển
10
6
ListBox & ComboBox

Khai báo và khởi tạo đối tượng ComboBox
void CreateControls()
{
ComboBox cb = new ComboBox();
cb.Name = "cboCountry";
cb.Text = "Viet Nam";
this.Controls.Add(cb);
}
10
7
ListBox & ComboBox

Thêm một phần tử ngẫu nhiên vào trong ComboBox
int n; int i = 1;

n = Convert.ToInt32(txtN.Text);

Random rd = new Random();

while (i <= n)

{

cboSo.Items.Add(rd.Next(1, n+1).ToString());

i++;

}
Kiểm tra chọn phần tử trong Combo bằng Index
 cboSo.SelectedIndex == i


10
8
ListBox & ComboBox

DropDownStyle
10
9
ListBox & ComboBox
//Sử dụng phương thức ADD Combobox
for(int i=1; i<=12;i++)
cboThu.Items.Add("Mon "+i.ToString());
Bổ sung item trong
màn hình design
view
11
0
ListBox & ComboBox
Mỗi khi kích chọn
một item  hiển thị
item được chọn trên
MessageBox
11
1
ListBox & ComboBox
AutoComplete

Tính năng AutoComplete
Gõ “Ng”
AutoCompleteMode
AutoCompleteSource
11
2
ListBox & ComboBox

Sử dụng biến cố SelectionChangeCommitted
private void cboThu_SelectionChangeCommitted(object sender,
EventArgs e)
{
MessageBox.Show(cboThu.SelectedText, "LẬP TRÌNH C#");
MessageBox.Show(cboThu.SelectedItem.ToString(), "C#
căn bản");
}
Demo DinhDangHoten(BaiTapTuan1)
11
3
ListBox & ComboBox

Sử dụng phương thức AddRange
string[] week = new string[7] { "Sun", "Mon", "TUE", "Wed",
"Thu ",
"Fri", "Sat" };
cboTM.Items.AddRange(week);
cboTM.DisplayMember = "Name";
cboTM.ValueMember = "Value";
Demo Frm58
11
4
CheckedListBox

Tương tự như list box nhưng mỗi item sẽ có thêm check
box.
Properties
CheckedItems
CheckedIndices
SelectedIndexChanged
SelectedIndices
SelectedValueChanged
SelectedIndices
MultiColumn
SelectionMode
Items
Method
ClearSelected
SetSelected
11
5
CheckedListBox
CheckedListBox
Thuộc tính thường dùng Ý nghĩa
BorderStyle
Kiểu đường viền của điều khiển
CheckedListBox
MultiColumn
Cho phép trình bày danh sách phân tử trên
điều khiển có nhiều cột
ColumnWidth
Chiều rộng của mỗi cột nếu phần tử trình bày
trên điều khiển có nhiều cột
Items
Tập các phần tử có trong điều khiển, bạn có
thể sử dụng phương thức Add và AddRange để
thêm chuỗi hay phần tử với khóa và giá trị vào
điều khiển CheckedListBox
SelectionMode
Cho phép chọn một hay nhiều phần tử cùng
một lúc
Sorted
Nếu chọn True thì danh sách sắp xếp tăng dần
theo giá trị
SelectedItems
Trả về tập phần tử được chọn
11
6
CheckedListBox
CheckedListBox
Thuộc tính thường dùng Ý nghĩa
SelectedItem
Gán hay lấy giá trị object ứng với phần tử đang
chọn
SelectedValue
Gán hay lấy giá trị ứng với phần tử kiểu object
đang chọn
SelectedIndex
Gán và lấy giá trị chỉ mục ứng với phần tử đang
chọn
CheckedItems
Trả về tập phần tử được Check
11
7
CheckedListBox
CheckedListBox
Biến cố
Ý nghĩa
Mouse Click
Xảy ra khi người sử dụng Click trên điều khiển
Click
Xảy ra khi người sử dụng Click vào điều khiển
ItemChecked
Xảy ra khi người sử dụng Click vào biểu tượng
CheckBox của từng phần tử
SelectedIndexChanged
Xảy ra khi chỉ mục của phần tử được thay đổi
SelectedValueChanged
Xảy ra khi giá trị của phần tử được thay đổi
trên điều khiển
DoubleClick
Xảy ra khi người sử dụng nhấn 2 lần chuột liên
tiếp trên phần tử
EnabledChanged
Xảy ra khi thuộc tính Enabledd thay đổi giá trị
từ True sang False hay ngược lại
VisibleChanged
Xảy ra khi thuộc tính Visible thay đổi giá trị
11
8
CheckedListBox


Thuộc tính Items lưu trữ danh sách item
Có thể bổ sung vào thời điểm


Design time
Run time
Item được check
Item được select
11
9
CheckedListBox

Khởi tạo và khai báo đối tượng CheckedListBox
void CreateControls()
{
CheckedListBox chkl = new CheckedListBox();
chkl.Name = "chkCertificate";
chkl.Sorted = true;
chkl.Items.Add("B.A");
chkl.Items.Add("M.B.A");
chkl.Location = new System.Drawing.Point(300, 400);
this.Controls.Add(chkl);
}
12
0
CheckedListBox

MultiColumn = true
Các item được tổ
chức theo nhiều cột
12
1
CheckedListBox

Sự kiện SelectedIndexChanged
12
2
Các Control
GroupBox, Panel & TabControl
12
3
GroupBox & Panel


Bố trí controls trên GUI
GroupBox


Hiển thị một khung bao quanh một nhóm control
Có thể hiển thị một tiêu đề




Thuộc tính Text
Khi xóa một GroupBox thì các control chứa trong nó bị xóa
theo
Lớp GroupBox kế thừa từ System.Windows.Forms.Control
Panel



Chứa nhóm các control
Không có caption
Có thanh cuộn (scrollbar)

Xem nhiều control khi kích thước panel giới hạn
12
4
GroupBox & Panel
Groupbox
Thuộc tính thường dùng
Controls
Text
Mô tả
Danh sách control chứa trong GroupBox.
Caption của GroupBox
Panel
Thuộc tính thường dùng
AutoScroll
Xuất hiện khi panel quá nhỏ để hiển thị hết
các control, mặc định là false
BorderStyle
Biên của panel, mặc định là None, các tham
số khác như Fixed3D, FixedSingle
Controls
Danh sách control chứa trong panel
12
5
GroupBox & Panel

Minh họa GroupBox
groupBox1 chứa 2 control
textBox1 và button1
textBox2 và button2 chứa
trong Controls của Form
12
6
GroupBox & Panel

Minh họa Panel
scroll
12
7
TabControl



Dạng container chứa các control khác
Cho phép thể hiện nhiều page trên một form duy nhất
Mỗi page chứa các control tương tự như group control
khác.



Mỗi page có tag chứa tên của page
Kích vào các tag để chuyển qua lại giữa các page
Ý nghĩa:


Cho phép thể hiện nhiều control trên một form
Các control có cùng nhóm chức năng sẽ được tổ chức
trong một tab (page)
12
8
TabControl

TabControl có thuộc tính TabPages

Chứa các đối tượng TabPage
TabPage
TabControl
TabPage
12
9
TabControl

Thuộc tính Appearance
Normal
Buttons
FlatButton
13
0
TabControl

Thuộc tính, phương thức & sự kiện thường dùng
Properties
TabPages
TabCount
SelectedTab
Multiline
SelectedIndex
Method
SelectTab
DeselectTab
Event
SelectedIndexChanged
13
1
TabControl

Thêm/Xóa TabPage
Kích chuột phải
Thêm/Xóa TabPage
13
2
TabControl

Chỉnh sửa các TabPage


Chọn thuộc tính TabPages của TabControl
Sử dụng màn hình TabPage Collection Editor để chỉnh sửa
13
3
PictureBox



Sử dụng để hiển thị ảnh dạng bitmap, metafile, icon,
JPEG, GIF.
Sử dụng thuộc tính Image để thiết lập ảnh lúc design
hoặc runtime.
Các thuộc tính


Image: ảnh cần hiển thị
SizeMode:





Normal
StretchImage
AutoSize
CenterImage
Zoom
13
4
PictureBox
5 pictureBox với
các SizeMode
tương ứng
13
5
ImageList

Cung cấp tập hợp những đối tượng image cho các
control khác sử dụng



ListView
TreeView
Các thuộc tính thường dùng




ColorDepth: độ sâu của màu
Images: trả về ImageList.ImageCollection
ImageSize: kích thước ảnh
TransparentColor: xác định màu sẽ transparent
13
6
ImageList

Các bước sử dụng ImageList




Kéo control ImageList từ ToolBox thả vào Form
Thiết lập kích thước của các ảnh: ImageSize
Bổ sung các ảnh vào ImageList qua thuộc tính Images
Sử dụng ImageList cho các control

Khai báo nguồn image là image list vừa tạo cho control


Thường là thuộc tính ImageList
Thiết lập các item/node với các ImageIndex tương ứng

Việc thiết lập có thể ở màn hình design view hoặc code view
13
7
ImageList

Tạo ImageList
13
8
ImageList

Sử dụng ImageList trong ListView
listView1
Khai báo
ImageList cho
ListView
Hiển thị dạng
small icon
13
9
ImageList

Thêm Item
Khai báo image
cho item qua
ImageIndex
14
0
ImageList

Demo
Mỗi item sẽ có ảnh
theo đúng thứ tự
ImageIndex được
khai báo trong
ImageList
14
1
TrackBar


Cho phép user thiết lập giá trị trong khoảng cố định cho
trước
Thao tác qua thiết bị chuột hoặc bàn phím
Properties
Minimum
Maximum
ValueChanged
Scroll
TickFrequency
TickStyle
Value
SetRange
14
2
TrackBar
public void AddTrackBar() {
TrackBar tb1 = new TrackBar();
tb1.Location = new Point(10, 10);
tb1.Size = new Size(250, 50);
tb1.Minimum = 0;
tb1.Maximum = 100;
Tạo thể hiện
Thiết lập khoảng: 0 - 100
Số vị trí di chuyển khi dùng
phím mũi tên
tb1.SmallChange = 1;
tb1.LargeChange = 5;
tb1.TickStyle = TickStyle.BottomRight;
tb1.TickFrequency = 10;
tb1.Value = 10;
Controls.Add(tb1);
}
Số vị trí di chuyển
khi dùng phím Page
Kiểu stick ở bên
dưới/bên phải track
Số khoảng cách giữa
các tick mark
14
3
TrackBar

Bổ sung Label hiển thị giá trị của TrackBar
14
4
NumericUpDown

Cho phép user chọn các giá trị trong khoảng xác định
thông qua



Các thuộc tính





Minimum
Maximum
Value
Increment
Sự kiện


Nút up & down
Nhập trực tiếp giá trị
ValueChanged
Phương thức


DownButton
UpButton
14
5
NumericUpDown
Đoạn code thêm control NumericUpDown

public void AddNumericUpDown() {
NumericUpDown numUpDn = new NumericUpDown();
numUpDn.Location = new Point(50, 50);
numUpDn.Size = new Size(100, 25);
numUpDn.Hexadecimal = true;
numUpDn.Minimum = 0;
numUpDn.Maximum = 255;
numUpDn.Value = 0xFF;
numUpDn.Increment = 1;
Controls.Add(numUpDn);
// hiển thị dạng hexa
// giá trị nhỏ nhất
// giá trị lớn nhất
// giá trị khởi tạo
// bước tăng/giảm
// thêm control vào ds control của form
}
14
6
NumericUpDown

Demo
Tăng giảm giá trị
Hiển thị giá
trị Hexa
Nhập trực tiếp giá trị
14
7
DomainUpDown

Cho phép user chọn item trong số danh sách item thông
qua



Properties







Button Up & Down
Nhập từ bàn phím
Items: danh sách item
ReadOnly: true chỉ cho phép thay đổi giá trị qua Up & Down
SelectedIndex: chỉ mục của item đang chọn
SelectedItem: item đang được chọn
Sorted: sắp danh sách item
Text: text đang hiển thị trên DomainUpDown.
Event

SelectedItemChanged
14
8
DomainUpDown

Nhập item cho DomainUpDown
String Collection Editor
Cho phép nhập item
14
9
ProgressBar


Hiển thị tiến độ thực hiện của một công việc nào đó
Các thuộc tính






Minimum: giá trị nhỏ nhất
Maximum: giá trị lớn nhất
Step: số bước tăng khi gọi hàm PerformStep
Value: giá trị hiện tại
Style: kiểu của progress bar
Phương thức


PerformStep(): tăng thêm step
Increment(int value): tăng vị trí hiện tại của tiến độ với giá trị
xác định
15
0
ProgressBar

Khai báo thanh tiến độ 0-100, step = 10
Max = 100
Min = 0
Step = 10
15
1
ProgressBar
15
2
ProgressBar

Demo
Thể hiện trực
quan tiến độ
Tăng tiến độ theo
step và cập nhật lại
% hoàn thành lên
label
15
3
MaskEditBox


Control này được sử dụng để qui định dạng thức cho dữ
liệu nhập.
Properties:

Mask: Thiết lập mặt nạ cho MaskEditBox.

Sử dụng các Mark có sẳn:
15
4
MaskEditBox
•
Custom: Thiết lập giá trị Mask tùy ý
Thành phần mask
Ý nghĩa
0
Số. Yêu cầu bắt buộc phải nhập số từ 0-9
9
Số hoặc khoảng trắng (Optional)
#
Số hoặc khoảng trắng (Optional). Có thể
nhập dấu + hoặc -
L
Kí tự [a..z] hoặc [A..Z] (Bắt buộc)
?
Kí tự [a..z] hoặc [A..Z] (Không bắt buộc)
,
Đơn vị phần ngàn (1,234)
.
Đơn vị phần lẻ (0.32)
15
5
MaskEditBox

Properties:




Mask: Thiết lập mặt nạ cho MaskEditBox.
MaskCompleted: trả về giá trị true/false cho biết các ký tự
bắt buột trong mark có nhập đủ hay không
MaskFull: trả về giá trị true/false cho biết các ký tự tùy chọn
và bắt buộc trong mark có nhập đủ hay không
Prompt Char: ký tự hiển thị trong textbox giúp người sử
dụng biết nơi cần nhập nội dung
15
6
MaskEditBox

Properties:

TextMaskFormat: Qui định nội dung của textbox có bao gồm
các literal và prompt hay không:




ExcludePromptAndLiterals: chỉ lấy nội dung do user nhập vào
IncludeLiterals: nội dung bao gồm dữ liệu do user nhập và
literal có trong Mark
IncludePrompt: nội dung bao gồm dữ liệu do user nhập và
promt có trong Mark
IncludePromptAndLiterals: nội dung bao gồm dữ liệu do user
nhập, literal và promt có trong Mark
Prompt
Literals
15
7
DateTimePicker



Cho phép chọn ngày trong khoảng xác định thông qua
giao diện đồ họa dạng calendar
Kết hợp ComboBox và MonthCalendar
Properties

Format: định dạng hiển thị


CustomFormat:







long, short, time, custom
dd: hiển thị 2 con số của ngày
MM: hiển thị 2 con số của tháng
yyyy: hiển thị 4 con số của năm
…(xem thêm MSDN Online)
MaxDate: giá trị ngày lớn nhất
MinDate: giá trị ngày nhỏ nhất
Value: giá trị ngày hiện tại đang chọn
15
8
DateTimePicker
private void AddDateTimePicker() {
DateTimePicker DTPicker = new DateTimePicker();
DTPicker.Location = new Point(40, 80);
DTPicker.Size = new Size(160, 20);
DTPicker.DropDownAlign = LeftRightAlignment.Right;
DTPicker.Value = DateTime.Now;
DTPicker.Format = DateTimePickerFormat.Custom;
DTPicker.CustomFormat = "'Ngày' dd 'tháng' MM 'năm' yyyy";
this.Controls.Add(DTPicker);
}
15
9
DateTimePicker

Demo
Định dạng xuất: 'Ngày' dd 'tháng' MM 'năm' yyyy
Kích drop down
để hiện thị hộp
chọn ngày
Chọn ngày trong khoảng
cho trước
16
0
MonthCalendar


Cho phép user chọn một ngày trong tháng hoặc nhiều
ngày với ngày bắt đầu và ngày kết thúc.
Một số thuộc tính thông dụng




MaxDate, MinDate
SelectionStart: ngày bắt đầu chọn
SelectionEnd: ngày kết thúc
Sinh viên tự tìm hiểu thêm…
16
1
Timer

Bộ định thời gian, thiết lập một khoảng thời gian xác định
(interval) và khi hết khoảng thời gian đó Timer sẽ phát
sinh sự kiện tick.
Properties
Enabled
Stop
Interval
Tick
16
2
Timer

Hiển thị giờ hệ thống
Hiển thị thời gian
Enable sự
kiện Tick
Khoảng thời
gian chờ giữa
2 lần gọi Tick
16
3
Timer

Sự kiện Tick
Khai báo
trình xử lý sự
kiện Tick
16
4
Timer

Demo
Mỗi giây sự kiện Tick
phát sinh. Trình xử lý
của Tick sẽ lấy giờ hệ
thống và hiển thị lên
Label
16
5
ToolTip



Cung cấp chức năng hiển thị một khung text nhỏ khi user
di chuyển chuột vào control bất kỳ
Khung text chứa nội dung mô tả ý nghĩa của control
Cách sử dụng



Từ ToolBox kéo ToolTip thả vào form
Kích chọn control muốn thêm tooltip
Trong cửa sổ Properties của control sẽ có thuộc tính
ToolTip. Thêm text vào thuộc tính này để hiển thị khi tooltip
xuất hiện.
16
6
ToolTip

Tạo ToolTip
16
7
ToolTip

Khai báo Tooltip cho textbox trong Design View
Nội dung Tooltip
16
8
ToolTip

Khai báo tooltip cho button
Nhập nội dung
Tooltip cần hiển
thị
16
9
ToolTip

Khai báo tooltip cho listbox bằng code
17
0
ToolTip

Demo
ToolTip xuất hiện
khi user di chuyển
chuột vào vùng
control
17
1
Các Event
Mouse Event
17
2
Mouse Event


Mouse là thiết bị tương tác thông dụng trên GUI
Một số các thao tác phát sinh từ mouse





Di chuyển
Kích chuột
Ứng dụng cần xử lý sự kiện chuột nào sẽ khai báo trình
xử lý tương ứng
Lớp MouseEventArgs được sử dụng để chứa thông tin
truyền vào cho trình xử lý sự kiện mouse.
Mỗi trình xử lý sự kiện sẽ có tham số là đối tượng object
và đối tượng MouseEventArgs (hoặc EventArgs)
17
3
Mouse Event

Tham số cho sự kiện liên quan đến mouse
MouseEventArgs
Số lần kích chuột
Button được nhấn
Tọa độ (x,y) của
con trỏ chuột
17
4
Mouse Event
Sự kiện chuột với tham số kiểu EventArgs
MouseEnter
Xuất hiện khi con trỏ chuột đi vào vùng biên của
control
MouseLeave
Xuất hiện khi con trỏ chuột rời khỏi biên của control
Sự kiện chuột với tham số kiểu MouseEventArgs
MouseDown/
MouseUp
Xuất hiện khi button được nhấn/thả và con trỏ chuột
đang ở trong vùng biên của control
MouseMove
Xuất hiện khi chuột di chuyển và con trỏ chuột ở
trong vùng biên của control
17
5
Mouse Event
Thuộc tính của lớp MouseEventArgs
Button
Button được nhấn {Left, Right, Middle, none} có kiểu
là MouseButtons
Clicks
Số lần button được nhấn
X
Tọa độ x của con trỏ chuột trong control
Y
Tọa độ y của con trỏ chuột trong control
17
6
Mouse Event

MouseMove
17
7
Mouse Event

Demo
Vị trí hiện tại của
con trỏ chuột
Hiển thị tọa độ hiện
tại của con trỏ chuột
17
8
Mouse Event


Demo thao tác: kích chuột trái tại một điểm A, giữ chuột
trái và di chuyển chuột, chương trình sẽ vẽ đường thẳng
từ điểm A đến vị trí hiện tại chuột.
Các sự kiện cần xử lý

MouseDown:


Xác định điểm A ban đầu
MouseMove

Kiểm tra nếu Left button của chuột đang giữ

Sử dụng Graphics để vẽ đường thẳng từ A đến vị trí hiện tại
17
9
Mouse Event

Bước 1:


Tạo biến lưu trữ điểm A khi user kích chuột trái
Biến pA có kiểu Point là biến thành viên của Form1
Lớp Form1
Biến pA lưu giữ tọa độ khi
chuột trái được click
18
0
Mouse Event

Bước 2

Khai báo xử lý sự kiện MouseDown trong Form1

Trong cửa sổ event của Form1, kích đúp vào sự kiện
MouseDown
Lưu lại điểm được nhấn chuột
18
1
Mouse Event

Bước 3

Cài đặt xử lý sự kiện MouseMove

Kiểm tra nếu LeftButton được nhấn

Vẽ đường thẳng từ pA đến vị trí hiện tại
18
2
Các Event
Keyboard Event
18
3
Keyboard Event


Phát sinh khi một phím được nhấn hoặc thả
Có 3 sự kiện






KeyPress
KeyUp
KeyDown
KeyPress phát sinh kèm theo với mã ASCII của phím
được nhấn
KeyPress không cho biết trạng thái các phím bổ sung
{Shift, Alt, Ctrl…}
Sử dụng KeyUp & KeyDown để xác định trạng thái các
phím bổ sung.
18
4
Keyboard Event
Sự kiện với tham số kiểu KeyEventArgs
KeyDown
Phát sinh khi phím được nhấn
KeyUp
Phát sinh khi phím được thả
Sự kiện với tham số kiểu KeyPressEventArgs
Khởi tạo khi phím được nhấn
KeyPress
Thuộc tính của lớp KeyPressEventArgs
KeyChar
Chứa ký tự ASCII của phím được nhấn
Handled
Cho biết sự kiện KeyPress có được xử lý chưa
Thuộc tính của lớp KeyEventArgs
Alt, Control, Shift
Trạng thái các phím bổ sung
Handled
Cho biết sự kiện đã xử lý
18
5
Keyboard Event
Thuộc tính của lớp KeyEventArgs (tt)
KeyCode
Trả về mã ký tự được định nghĩa trong Keys
enumeration
KeyData
Chứa mã ký tự với thông tin phím bổ sung
KeyValue
Trả về số int, đây chính là mã Windows Virtual Key
Code
Modifier
Trả về giá trị của phím bổ sung
18
6
Keyboard Event

Keys Enumeration
18
7
Keyboard Event

Minh họa các sự kiện: KeyPress, KeyDown, KeyUp

Khi user nhấn một phím



Khi user thả phím


Bắt sự kiện KeyPress: xuất ra phím được nhấn
Bắt sự kiện KeyDown: xuất ra các tham số trong KeyEventArgs
Xóa các thông tin mô tả phím được nhấn trong các label
Cách thực hiện


Tạo một form minh họa
Thiết kế trên form có 2 Label:


lblChar: hiển thị ký tự được nhấn trong KeyPress
lblKeyInfo: hiển thị các thông tin của KeyEventArgs khi
KeyDown
18
8
Keyboard Event

Bước 1: tạo Windows Form như hình mô tả
Label chứa ký tự
được nhấn trong
sự kiện KeyPress
Label chứa thông
tin mã ký tự được
nhấn trong sự
kiện KeyDown
18
9
Keyboard Event

Bước 2:

Tạo KeyPress Event Handling cho form
19
0
Keyboard Event

Bước 3:

Tạo KeyDown Event Handling cho form
191
Keyboard Event

Demo
19
2
Keyboard Event

CT Calculator (BT3) mở rộng cho phép xử lý các phím

Form nhận xử lý thông điệp KeyDown



Xác định các phím tương ứng rồi gọi sự kiện click của button
VD: user gõ phím 1, tương tự như button “1” được nhấn
Cách thực hiện


Khai báo trình xử lý sự kiện
KeyDown cho Form chính
Thiết lập thuộc tính KeyPreview
cho Form để nhận sự kiện bàn phím.
19
3
Keyboard Event

Viết phần xử lý cho sự kiện KeyDown

Xác định các phím tương ứng để gọi sự kiện click của các
button.
Gọi event Click
của button “1”
Phím '=' được nhấn
Phím ‘+' được nhấn
19
4
Tóm tắt

Thiết kế layout trên form



Các control trên form







Anchor
Dock các control
Control nhập liệu
Control chọn giá trị
Container control
Component
Advanced control
Mouse event
Keyboard event
19
5
19
6
Download