Windows Controls
ThS. Nguyễn Hà Giang Khoa CNTT -Hutech
1
Nội Dung
n Tổng quan controls n Property & layout của control
q Anchor q Docking
n Các control thông dụng q Label, textbox, button q ListBox, Combobox, ListView, TreeView q GroupBox, Panel & TabControl q CheckBox, RadioButton, CheckedListBox, TrackBar q PictureBox, ImageList q NumericUpDown, DomainUpDown q RichTextBox, DateTimePicker, MonthCalendar q Advanced controls n Mouse Event handling n Keyboard event handling
2
Nguyen Ha Giang -2008
Tổng quan controls
n Control là một thành phần cơ bản trên form n Có các thành phần
n Tất cả các control chứa trong namespace:
q Thuộc tính q Phương thức q Sự kiện
System.Windows.Forms
3
Nguyen Ha Giang -2008
Tổng quan controls
n Một số thuộc tính của control q Text: nội dung caption, title… q Focus: chuyển focus vào control q TabIndex: thứ tự của control nhận focus
n Mặc định được VS.NET thiết lập
n Neo giữ control ở vị trí xác định n Cho phép control di chuyển theo vị trí q Size: xác nhận kích thước của control
q Enable: thiết lập trạng thái truy cập của control q Visible: ẩn control trên form, có thể dùng phương thức Hide q Anchor:
4
Nguyen Ha Giang -2008
Thuộc tính controls
Common PropertiesDescription
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
5
Nguyen Ha Giang -2008
Control Layout -Anchor
None
Sizable
FormBorderStyle
FixedDialog
Fixed3D
FixedSingle
6
Nguyen Ha Giang -2008
Control Layout -Anchor
n Khi FormBorderStyle = Sizable, form cho phép thay đổi
kích thước khi Runtime q Sự bố trí của control cũng thay đổi!
n Sử dụng thuộc tính Anchor
n Control có thể thay đổi vị trí tương ứng với việc resize của form n Control cố định không thay đổi theo việc resize của form
q Cho phép control phản ứng lại với thao tác resize của form
n Left: cố định theo biên trái n Right: cố định theo biên phải n Top: cố định theo biên trên n Bottom: cố định theo biên dưới
q Các trạng thái neo
7
Nguyen Ha Giang -2008
Control Layout -Anchor
Button được neo biên trái
Vị trí tương đối với biên trái không đổi
Di chuyển tương ứng theo kích thước mới
Button tự do
8
Nguyen Ha Giang -2008
Control Layout -Anchor
n Thiết lập Anchor cho control
Chọn các biên để neo
Biên được chọn neo, màu đậm
9
Nguyen Ha Giang -2008
Control Layout -Anchor
Neo theo bốn phía
10
Nguyen Ha Giang -2008
Control Layout -Docking
n 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
11
Nguyen Ha Giang -2008
Control Layout -Docking
Top
Fill
Left
Right
Bottom
None
12
Nguyen Ha Giang -2008
Control Layout -Docking
Dock = None
Dock = Top
TextBox
Dock = Fill TextBox.Multiline = True
Dock = Bottom
13
Nguyen Ha Giang -2008
Label, TextBox, Button
14
Nguyen Ha Giang -2008
Label, TextBox, Button
n Label
n Chỉ đọc n Được định nghĩa bởi lớp Label
q Dẫn xuất từ Control
n TextBox
q Cung cấp chuỗi thông tin chỉ dẫn
n Button
q Thuộc lớp TextBox q Vùng cho phép user nhập dữ liệu n Cho phép nhập dạng Password
q Cho phép cài đặt 1 hành động. n Checkbox và RadioButton
q Dẫn xuất từ ButtonBase
15
Nguyen Ha Giang -2008
Label, TextBox, Button
Label
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ị
Enable
Trạng thái sử dụng hoặc không sử dụng control
16
Nguyen Ha Giang -2008
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
PasswordChar
Chỉ hiển thị ký tự đại diện cho text
ReadOnly
Nếu true: textbox hiển thị nền xám, và ko cho phép nhập liệu, 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 design view
17
Nguyen Ha Giang -2008
Label, TextBox, Button
Button
Thuộc tính thường dùng
Text
Chuỗi hiển thị trên bề mặt 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.
18
Nguyen Ha Giang -2008
Label, TextBox, Button
n Demo TextBox
Chuyển thành chữ hoa
Double click vào textbox để tạo event handler cho event TextChanged
19
Nguyen Ha Giang -2008
Label, TextBox, Button
n Chỉ cho nhập số
Sự kiện KeyPress
Sự kiện phát sinh khi textbox nhận focus và user nhấn 1 phím
20
Nguyen Ha Giang -2008
Label, TextBox, Button
n Chức năng AutoComplete cho TextBox
q Hỗ trợ hoàn thành nhanh chóng các chuỗi chứa trong một
nguồn nào đó.
n AutoCompleteCustomSource:
n AutoCompleteMode:
q Thiết lập các chuỗi hỗ trợ (dạng collection) q Được sử dụng khi AutoComleteSource là CustomSource
n AutoCompleteSource:
q Kiểu hỗ trợ: Append, Suggest
q Nguồn dữ liệu để hỗ trợ hoàn thành q FileSystem, HistoryList, CustomSource…
21
Nguyen Ha Giang -2008
MaskedTextBox
n Cho phép nhập theo định dạng được thiết lập:
q Numeric, phone, date, custom…
22
Nguyen Ha Giang -2008
MaskedTextBox
n Thuộc tính Mask
Mask
Mô tả
Ký tự bắt buộc từ 0 – 9
0
Ký tự (không bắt buộc) từ 0 – 9
9
#
Ký tự (không bắt buộc) từ 0 –9, kho ảng trắng, dấu + hoặc -
Yêu cầu ký tự a-z hoặc A-Z
L
Ký tự (không bắt buộc) a-z hoặc A-Z
?
Yêu cầu ký tự
&
Ký tự (không bắt buộc)
C
A, a
Ký tự (không bắt buộc) alphanumeric
Dấu thập phân
.
Dấu hàng ngàn
,
23
Nguyen Ha Giang -2008
MaskedTextBox
n Thuộc tính Mask
Mask
Mô tả
:
Dấu phân cách theo định dạng thời gian
/
Dấu phân cách theo định dạng ngày
$
Biểu tượng tiền tệ
<
Chuyển tất cả ký tự theo sau thành thường
>
Chuyển tất cả ký tự theo sau thành hoa
|
Disablehi ệu lực của < hay > trước nó
\
Ký tự thoát
Tất cả các ký tự còn lại sẽ được giữ nguyên khi hiển thị!
24
Nguyen Ha Giang -2008
MaskedTextBox
n VD:
q Mask string: (999)-000-0000 q User Input: 1234567890 q Display: (123)-456-7890
q Mask string: 00/00/0000 q User input: 12041978 q Display: 12/04/1978
q Mask string: LL>L|LLL 25 Nguyen Ha Giang -2008 26 Nguyen Ha Giang -2008 n ListBox q Cung cấp một danh sách các item cho phép user chọn
q ListBox cho phép hiển thị scroll nếu các item vượt quá vùng Items
MultiColumn SelectedItems
Sorted Text SelectedIndex
SelectedItem 27 Nguyen Ha Giang -2008 n Method & Event GetSelected SetSelected
FindString SelectedIndexChanged SelectedValueChanged 28 Nguyen Ha Giang -2008 n Thuộc tính Items cho phép thêm item vào ListBox 29 Nguyen Ha Giang -2008 n ListBox hiển thị dạng Multi Column 30 Nguyen Ha Giang -2008 n Demo ListBox 31 Nguyen Ha Giang -2008 n Sự kiện SelectedIndexChanged 32 Nguyen Ha Giang -2008 n ComboBox Sorted Items q Kết hợp TextBox với một danh sách dạng drop down
q Cho phép user kích chọn item trong danh sách drop down AutoCompleteMode Text 33 Nguyen Ha Giang -2008 n DropDownStyle 34 Nguyen Ha Giang -2008 35 Nguyen Ha Giang -2008 36 Nguyen Ha Giang -2008 n Tính năng AutoComplete 37 Nguyen Ha Giang -2008 38 Nguyen Ha Giang -2008 n Dạng control phổ biến hiện thị một danh sách item n Windows Explorer hiển thị thông tin thư mục, tập tin… q Các item có thể có các item con gọi là subitem q Có thể hiển thị thông tin theo nhiều dạng thông qua thuộc tính n Lớp ListView dẫn xuất từ System.Windows.Forms.Control 39 Nguyen Ha Giang -2008 n Properties Sorting FullRowSelect MultiSelect 40 Nguyen Ha Giang -2008 n Các dạng thể hiện của ListView 41 Nguyen Ha Giang -2008 42 Nguyen Ha Giang -2008 43 Nguyen Ha Giang -2008 44 Nguyen Ha Giang -2008 45 Nguyen Ha Giang -2008 46 Nguyen Ha Giang -2008 n Tạo các cột cho ListView –Details qua
q Cửa sổ properties fi Columns để tạo.
q Sử dụng code trong chương trình. 47 Nguyen Ha Giang -2008 48 Nguyen Ha Giang -2008 n Thêm các item vào ListView n Các lớp định nghĩa Item q Thêm item trong màn hình thiết kế form
q Thêm item thông qua code n Lớp ListViewItem.ListViewSubItem định nghĩa các subitem của q System.Windows.Forms.ListViewItem
q Mỗi item trong ListView có các item phụ gọi là subitem n Lớp ListViewSubItem là inner class của ListViewItem 49 Nguyen Ha Giang -2008 n Minh họa thêm item qua code 50 Nguyen Ha Giang -2008 n Sự kiện SelectedIndexChanged 51 Nguyen Ha Giang -2008 n Thể hiện dữ liệu theo dạng cấu trúc cây
n Thành phần chính trong cấu trúc cây là n Node có thể có trạng thái n Text trên mỗi node có thể edit
n Có thể add hoặc delete các node thông qua q Selected
q Expand & collapse 52 Nguyen Ha Giang -2008 n TreeNode q Tất cả các node trên TreeView là các thể hiện của lớp n TreeNode(string displayText) q Constructor của TreeNode n Nodes: chứa tập hợp các đối tượng TreeNode là con của Node q Những thuộc tính n Text: nhãn hiển thị trên node
n Checked: true nếu node được check
n FullPath: nhãn của các node từ root đến node này, phân cách n NextNode: trả về node tiếp theo
n PrevNode: trã về node trước 53 Nguyen Ha Giang -2008 n Collapse: collapse tất cả các node
n Expand: expand tất cả các node
n ExpandAll: expand tất cả node con của node này
n GetNodeCount: trả về số lượng node con của node này. q Phương thức 54 Nguyen Ha Giang -2008 n TreeView có đầy đủ tính chất của một control
n Thuộc tính n Sự kiện q Nodes: lấy tất cả node con của node này
q CheckBoxes: nếu true thì hiển thị checkbox bên cạnh node
q SelectedNode: trả về các node được chọn
q LabelEdit: nếu true, node được edit q AfterSelect: sau khi một node được chọn
q AfterExpanded: sau khi node được expand
q AfterCollapsed: sau khi node được collapse
q AfterEdited: sau khi node được edit 55 Nguyen Ha Giang -2008 n Các bước tạo TreeView
q Tạo một node gốc (root)
q Add node gốc vào danh sách Nodes của TreeView
q Tạo node con và add vào Nodes của node gốc
q Làm tương tự để add các node mới vào cây
q … 56 Nguyen Ha Giang -2008 n Trình xử lý thường có dạng q void EventHandler(object sender, EventArgs e)
n Sự kiện TreeView thường dùng một lớp con của n Thuộc tính q Node: tham chiếu đến node nơi sự kiện phát sinh 57 Nguyen Ha Giang -2008 58 Nguyen Ha Giang -2008 n Bố trí controls trên GUI
n GroupBox n Thuộc tính Text q Hiển thị một khung bao quanh một nhóm control
q Có thể hiển thị một tiêu đề q Khi xóa một GroupBox thì các control chứa trong nó bị xóa n Panel q Lớp GroupBox kế thừa từ System.Windows.Forms.Control n Xem nhiều control khi kích thước panel giới hạn q Chứa nhóm các control
q Không có caption
q Có thanh cuộn (scrollbar) 59 Nguyen Ha Giang -2008 Mô tả Danh sách control chứa trong GroupBox.
Caption của GroupBox
Xuất hiện khi panel quá nhỏ để hiển thị hết
các control, mặc định là false
Biên của panel, mặc định là None, các tham
số khác như Fixed3D, FixedSingle
Danh sách control chứa trong panel 60 Nguyen Ha Giang -2008 n Minh họa GroupBox 61 Nguyen Ha Giang -2008 n Minh họa Panel 62 Nguyen Ha Giang -2008 n Dạng container chứa các control khác
n Cho phép thể hiện nhiều page trên một form duy nhất
n Mỗi page chứa các control tương tự như group control n Ý nghĩa: q Cho phép thể hiện nhiều control trên một form
q Các control có cùng nhóm chức năng sẽ được tổ chức 63 Nguyen Ha Giang -2008 n TabControlcó thu ộc tính TabPages q Chứa các đối tượng TabPage 64 Nguyen Ha Giang -2008 n Thuộc tính Appearance 65 Nguyen Ha Giang -2008 n Thuộc tính, phương thức & sự kiện thường dùng TabCount SelectedTab Multiline SelectedIndex SelectedIndexChanged 66 Nguyen Ha Giang -2008 n Thêm/Xóa TabPage 67 Nguyen Ha Giang -2008 n Chỉnh sửa các TabPage q Chọn thuộc tính TabPages của TabControl
q Sử dụng màn hình TabPage Collection Editor để chỉnh sửa 68 Nguyen Ha Giang -2008 n Bổ sung Control vào TabControl
q Chọn TabPage cần thêm control
q Kéo control từ ToolBox thả vào TabPage đã chọn 69 Nguyen Ha Giang -2008 n Sử dụng code để thêm các TabPage vào TabControl 70 Nguyen Ha Giang -2008 71 Nguyen Ha Giang -2008 n Control đưa ra một giá trị cho trước và user có thể n Lớp đại diện CheckBox q Chọn giá trị khi Checked = true
q Không chọn giá trị: Checked = false 72 Nguyen Ha Giang -2008 n ThreeState = true : cho phép thiết lập 3 trạng thái: q Checkstate = Indeterminate: không xác định
q CheckState= Checked: chọn
q CheckState= Unchecked: không chọn 73 Nguyen Ha Giang -2008 n Cho phép user chọn một option trong số nhóm option
n Khi user chọn 1 option thì tự động option được chọn 74 Nguyen Ha Giang -2008 75 Nguyen Ha Giang -2008 n Tương tự như list box nhưng mỗi item sẽ có thêm check CheckedItems
CheckedIndices SelectedIndices SetSelected 76 Nguyen Ha Giang -2008 n Thuộc tính Items lưu trữ danh sách item
n Có thể bổ sung vào thời điểm q Design time
q Run time 77 Nguyen Ha Giang -2008 n MultiColumn = true 78 Nguyen Ha Giang -2008 n Sự kiện SelectedIndexChanged 79 Nguyen Ha Giang -2008 n Cho phép user thiết lập giá trị trong khoảng cố định cho n Thao tác qua thiết bị chuột hoặc bàn phím Minimum Maximum TickStyle Value SetRange 80 Nguyen Ha Giang -2008 81 Nguyen Ha Giang -2008 n Bổ sung Label hiển thị giá trị của TrackBar 82 Nguyen Ha Giang -2008 83 Nguyen Ha Giang -2008 n Sử dụng để hiển thị ảnh dạng bitmap, metafile, icon, n Sử dụng thuộc tính Image để thiết lập ảnh lúc design q Image: ảnh cần hiển thị
q SizeMode:
n Normal
n StretchImage
n AutoSize
n CenterImage
n Zoom 84 Nguyen Ha Giang -2008 85 Nguyen Ha Giang -2008 n Cung cấp tập hợp những đối tượng image cho các n Các thuộc tính thường dùng
q ColorDepth: độ sâu của màu
q Images: trả về ImageList.ImageCollection
q ImageSize: kích thước ảnh
q TransparentColor: xác định màu là transparent 86 Nguyen Ha Giang -2008 n Các bước sử dụng ImageList n Khai báo nguồn image là image list vừa tạo cho control q Thường là thuộc tính ImageList n Thiết lập các item/node với các ImageIndex tương ứng q Việc thiết lập có thể ở màn hình design view hoặc code view q Kéo component ImageList từ ToolBox thả vào Form
q Thiết lập kích thước của các ảnh: ImageSize
q Bổ sung các ảnh vào ImageList qua thuộc tính Images
q Sử dụng ImageList cho các control 87 Nguyen Ha Giang -2008 n Tạo ImageList 88 Nguyen Ha Giang -2008 n Sử dụng ImageList trong ListView 89 Nguyen Ha Giang -2008 n Thêm Item 90 Nguyen Ha Giang -2008 n Demo 91 Nguyen Ha Giang -2008 92 Nguyen Ha Giang -2008 n Cho phép user chọn các giá trị trong khoảng xác định n Các thuộc tính
q Minimum
q Maximum
q Value
q Increment n Sự kiện n Phương thức
q DownButton
q UpButton q ValueChanged 93 Nguyen Ha Giang -2008 n Đ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; // 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 Controls.Add(numUpDn); // thêm control vào ds control của form } 94 Nguyen Ha Giang -2008 n Demo 95 Nguyen Ha Giang -2008 n Cho phép user chọn item trong số danh sách item thông n Properties n Event q Items: danh sách item
q ReadOnly: true chỉ cho phép thay đổi giá trị qua Up & Down
q SelectedIndex: chỉ mục của item đang chọn
q SelectedItem: item đang được chọn
q Sorted: sắp danh sách item
q Text: text đang hiển thị trên DomainUpDown. q SelectedItemChanged 96 Nguyen Ha Giang -2008 n Nhập item cho DomainUpDown 97 Nguyen Ha Giang -2008 98 Nguyen Ha Giang -2008 n Cho phép chọn ngày trong khoảng xác định thông qua n Kết hợp ComboBox và MonthCalendar
n Properties n q Format: định dạng hiển thị n dd: hiển thị 2 con số của ngày
n MM: hiển thị 2 con số của tháng
n yyyy: hiển thị 4 con số của năm
n …(xem thêm MSDN Online)
q MaxDate: giá trị ngày lớn nhất
q MinDate: giá trị ngày nhỏ nhất
q Value: giá trị ngày hiện tại đang chọn q CustomFormat: 99 Nguyen Ha Giang -2008 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); } 100 Nguyen Ha Giang -2008 n Demo 101 Nguyen Ha Giang -2008 n Cho phép user chọn một ngày trong tháng hoặc nhiều n Một số thuộc tính thông dụng n Sinh viên tự tìm hiểu thêm… q MaxDate, MinDate
q SelectionStart: ngày bắt đầu chọn
q SelectionEnd: ngày kết thúc 102 Nguyen Ha Giang -2008 n Chức năng mở rộng từ TextBox, có thể hiển thị text dạng n Các text có thể có các font chữ và màu sắc khác nhau.
n Đoạn text có thể được canh lề
n Có thể chứa các ảnh
n Ứng dụng WordPad là dạng RichTextBox n Sinh viên tự tìm hiểu thêm… 103 Nguyen Ha Giang -2008 104 Nguyen Ha Giang -2008 Enabled Interval Stop Tick 105 Nguyen Ha Giang -2008 n Hiển thị giờ hệ thống 106 Nguyen Ha Giang -2008 n Sự kiện Tick 107 Nguyen Ha Giang -2008 n Demo 108 Nguyen Ha Giang -2008 n Hiển thị tiến độ thực hiện của một công việc nào đó
n Các thuộc tính n Phương thức q Minimum: giá trị nhỏ nhất
q Maximum: giá trị lớn nhất
q Step: số bước tăng khi gọi hàm PerformStep
q Value: giá trị hiện tại
q Style: kiểu của progress bar q PerformStep(): tăng thêm step
q Increment(int value): tăng vị trí hiện tại của tiến độ với giá trị 109 Nguyen Ha Giang -2008 n Khai báo thanh tiến độ 0-100, step = 10 110 Nguyen Ha Giang -2008 111 Nguyen Ha Giang -2008 n Demo 112 Nguyen Ha Giang -2008 n Cung cấp chức năng hiển thị một khung text nhỏ khi user n Khung text chứa nội dung mô tả ý nghĩa của control
n Cách sử dụng q Từ ToolBox kéo ToolTip thả vào form
q Kích chọn control muốn thêm tooltip
q Trong cửa sổ Properties của control sẽ có thuộc tính 113 Nguyen Ha Giang -2008 n Tạo ToolTip 114 Nguyen Ha Giang -2008 n Khai báo Tooltip cho textbox trong Design View 115 Nguyen Ha Giang -2008 n Khai báo tooltip cho button 116 Nguyen Ha Giang -2008 n Khai báo tooltip cho listbox bằng code 117 Nguyen Ha Giang -2008 n Demo 118 Nguyen Ha Giang -2008 119 Nguyen Ha Giang -2008 n Mouse là thiết bị tương tác thông dụng trên GUI
n Một số các thao tác phát sinh từ mouse n Ứng dụng cần xử lý sự kiện chuột nào sẽ khai báo trình q Di chuyển
q Kích chuột n Lớp MouseEventArgs được sử dụng để chứa thông tin n Mỗi trình xử lý sự kiện sẽ có tham số là đối tượng object 120 Nguyen Ha Giang -2008 n Tham số cho sự kiện liên quan đến mouse 121 Nguyen Ha Giang -2008 122 Nguyen Ha Giang -2008 123 Nguyen Ha Giang -2008 n MouseMove 124 Nguyen Ha Giang -2008 n Demo 125 Nguyen Ha Giang -2008 n Các sự kiện cần xử lý n Xác định điểm A ban đầu q MouseDown: n Kiểm tra nếu Left button của chuột đang giữ q Sử dụng Graphics để vẽ đường thẳng từ A đến vị trí hiện tại q MouseMove 126 Nguyen Ha Giang -2008 n Bước 1: q Tạo biến lưu trữ điểm A khi user kích chuột trái
q Biến pA có kiểu Point là biến thành viên của Form1 127 Nguyen Ha Giang -2008 n Bước 2 n Trong cửa sổ event của Form1, kích đúp vào sự kiện q Khai báo xử lý sự kiện MouseDown trong Form1 128 Nguyen Ha Giang -2008 n Bước 3 n Kiểm tra nếu LeftButton được nhấn q Vẽ đường thẳng từ pA đến vị trí hiện tại q Cài đặt xử lý sự kiện MouseMove 129 Nguyen Ha Giang -2008 130 Nguyen Ha Giang -2008 131 Nguyen Ha Giang -2008 n Phát sinh khi một phím được nhấn hoặc thả
n Có 3 sự kiện
q KeyPress
q KeyUp
q KeyDown n KeyPress phát sinh kèm theo với mã ASCII của phím n KeyPress không cho biết trạng thái các phím bổ sung n Sử dụng KeyUp & KeyDown để xác định trạng thái các 132 Nguyen Ha Giang -2008 133 Nguyen Ha Giang -2008 134 Nguyen Ha Giang -2008 n Keys Enumeration 135 Nguyen Ha Giang -2008 n Minh họa các sự kiện: KeyPress, KeyDown, KeyUp n Bắt sự kiện KeyPress: xuất ra phím được nhấn
n Bắt sự kiện KeyDown: xuất ra các tham số trong KeyEventArgs q Khi user nhấn một phím n Xóa các thông tin mô tả phím được nhấn trong các label n Cách thực hiện q Khi user thả phím n n q Tạo một form minh họa
q Thiết kế trên form có 2 Label: 136 Nguyen Ha Giang -2008 n Bước 1: tạo Windows Form như hình mô tả 137 Nguyen Ha Giang -2008 n Bước 2: q Tạo KeyPress Event Handling cho form 138 Nguyen Ha Giang -2008 n Bước 3: q Tạo KeyDown Event Handling cho form 139 Nguyen Ha Giang -2008 n Demo 140 Nguyen Ha Giang -2008 n CT Calculator (BT3) mở rộng cho phép xử lý các phím n Xác định các phím tương ứng rồi gọi sự kiện click của button
n VD: user gõ phím 1, tương tự như button “1” được nhấn n Cách thực hiện q Form nhận xử lý thông điệp KeyDown q Khai báo trình xử lý sự kiện
KeyDown cho Form chính q Thiết lập thuộc tính KeyPreview 141 Nguyen Ha Giang -2008 n Viết phần xử lý cho sự kiện KeyDown q Xác định các phím tương ứng để gọi sự kiện click của các 142 Nguyen Ha Giang -2008 n Thiết kế layout trên form n Mouse event
n Keyboard event q Anchor
q Dock các control
n Các control trên form
q Control nhập liệu
q Control chọn giá trị
q Container control
q Component
q Advanced control 143 Nguyen Ha Giang -2008 144 Nguyen Ha Giang -2008ListBox & ComboBox
ListBox & ComboBox
thể hiện của ListBox
Properties
ListBox
ListBox & ComboBox
Method
ClearSelected
ListBox
Event
ListBox & ComboBox
Danh sách item
Cho phép thêm item
trong màn hình thiết
kế form
ListBox & ComboBox
Hiển thị nhiều cột
ListBox & ComboBox
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
ListBox & ComboBox
Mỗi khi kích chọn vào item
trong listbox (cid:222) sẽ xóa item
được chọn tương ứng
SelectedIndexChanged
ListBox & ComboBox
MaxDropDownItems
ComboBox
DropDownStyle
DropDownHeight
ListBox & ComboBox
ListBox & ComboBox
Bổ sung item trong
màn hình design
view
ListBox & ComboBox
Mỗi khi kích chọn
một item (cid:222) hiển thị
item được chọn trên
MessageBox
ListBox & ComboBox
AutoComplete
Gõ “Ng”
AutoCompleteMode
AutoCompleteSource
ListView
List View
View
n Xem dạng chi tiết thông tin
n Xem dạng icon nhỏ
n Xem dạng icon lớn
n Xem dạng tóm tắt
n …
List View
GridLines
SmallImageList
Columns
LargeImageList
Items
List View
Details
Small Icons
List
Large Icons
Tile
List View
Large Icons
Mỗi item xuất hiện với 1
icon kích thước lớn và một
label bên dưới
List View
Small Icons
Mỗi item xuất hiện với icon
nhỏ và một label bên phải
List View
List
Mỗi item xuất hiện với icon
nhỏ với label bên phải, item
được sắp theo cột nhưng
không có tiêu đề cột
List View
Tile
Mỗi item xuất hiện với
icon kích thước lớn, bên
phải có label chứa item
và subitem
List View
Detail
Mỗi item xuất hiện trên
một dòng, mỗi dòng có các
cột chứa thông tin chi tiết
List View
ColumnHeader columnHeader1 = new ColumnHeader();
ColumnHeader columnHeader2 = new ColumnHeader();
ColumnHeader columnHeader3 = new ColumnHeader();
columnHeader1.Text = "Name";
columnHeader2.Text = "Address";
columnHeader3.Text = "Telephone Number";
listView1.Columns.Add(columnHeader1);
listView1.Columns.Add(columnHeader2);
listView1.Columns.Add(columnHeader3);
List View
Dialog soạn thảo cột
List View
ListView
ColumnHeader1 ColumnHeader2 ColumnHeader3
item 1
…
…
…
…
…
…
Subitem[0]
Subitem[1]
Subitem[2]
ListView
ListViewItem item1 = new ListViewItem();
ListViewItem.ListViewSubItem subitem1;
subitem1 = new ListViewItem.ListViewSubItem();
item1.Text = "Hutech";
subitem1.Text = "144/24 DBP -F.25 -Q.BT ";
Thêm subitem vào item
item1.SubItems.Add(subitem1);
listView1.Items.Add(item1);
Thêm item vào danh
sách items của ListView
ListView
TreeView
“Node”
code
TreeNode
TreeNode
này.
bởi “\\”
TreeNode
TreeView
TreeView
TreeView tv = new TreeView();
TreeNode root = new TreeNode(root);
tv.Nodes.Add(root);
root.Nodes.Add(newTreeNode (“Vegetables”));
root.Nodes.Add(newTreeNode (“Fruit”));
root.Nodes.Add(newTreeNode (“Meat”));
root.Nodes.Add(newTreeNode (“Poultry”));
TreeViewEventArg
EventArgs là TreeViewEventArg
GroupBox, Panel & TabControl
GroupBox & Panel
theo
GroupBox & Panel
GroupBox
Thuộc tính thường dùng
Controls
Text
Panel
Thuộc tính thường dùng
AutoScroll
BorderStyle
Controls
GroupBox & Panel
groupBox1 chứa 2 control
textBox1 và button1
textBox2 và button2 chứa
trong Controls của Form
GroupBox & Panel
scroll
TabControl
khác.
q Mỗi page có tag chứa tên của page
q Kích vào các tag để chuyển qua lại giữa các page
trong một tab (page)
TabControl
TabPage
TabControl
TabPage
TabControl
Normal
FlatButton
Buttons
TabControl
Properties
TabPages
Method
SelectTab
DeselectTab
Event
TabControl
Kích chuột phải
Thêm/Xóa TabPage
TabControl
TabControl
Chọn TabPage
cần thêm
TabControl
private void AddTabControl()
{
TabControl tabControl1 = new TabControl();
TabPage tabPageGeneral = new TabPage("General");
TabPage tabPageView = new TabPage("View");
tabControl1.TabPages.Add(tabPageGeneral);
tabControl1.TabPages.Add(tabPageView);
tabControl1.Location = new Point(20, 20);
this.Controls.Add(tabControl1);
}
CheckBox, CheckedListBox
RadioButton & TrackBar
CheckBox
Properties
Appearance
CheckedChanged
Checked
Text
ThreeState
CheckBox
Chưa chọn
RadioButton
trước sẽ uncheck
n Các radio button chứa trong 1 container (form,
GroupBox, Panel, TabControl) thuộc một nhóm.
n Lớp đại diện: RadioButton
n 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.
CheckedChanged
Appearance
Checked
Text
RadioButton
Nhóm RadioButton
thứ 1 chứa trong
GroupBox1
Nhóm RadioButton
thứ 2 chứa trong
GroupBox2
CheckedListBox
box.
Properties
SelectedIndexChanged
SelectedValueChanged
Method
ClearSelected
SelectedIndices
MultiColumn
SelectionMode
Items
CheckedListBox
Item được check
Item được select
CheckedListBox
Các item được tổ
chức theo nhiều cột
CheckedListBox
TrackBar
trước
Properties
ValueChanged
Scroll
TickFrequency
TrackBar
public void AddTrackBar() {
Tạo thể hiện
TrackBar tb1 = new TrackBar();
tb1.Location = new Point(10, 10);
tb1.Size = new Size(250, 50);
Thiết lập khoảng: 0 -100
tb1.Minimum = 0;
tb1.Maximum = 100;
Số vị trí di chuyển khi dùng
phím mũi tên
Số vị trí di chuyển
khi dùng phím Page
tb1.SmallChange = 1;
tb1.LargeChange = 5;
tb1.TickStyle = TickStyle.BottomRight;
Kiểu stick ở bên
dưới/bên phải track
tb1.TickFrequency = 10;
tb1.Value = 10;
Controls.Add(tb1);
Số khoảng cách giữa
các tick mark
}
TrackBar
PictureBox & ImageList
PictureBox
JPEG, GIF.
hoặc runtime.
n Các thuộc tính
PictureBox
5 pictureBox với
các SizeMode
tương ứng
ImageList
control khác sử dụng
q ListView
q TreeView
ImageList
ImageList
ImageList
listView1
Khai báo
ImageList cho
ListView
Hiển thị dạng
small icon
ImageList
Khai báo image
cho item qua
ImageIndex
ImageList
Mỗi item sẽ có ảnh
theo đúng thứ tự
ImageIndex được
khai báo trong
ImageList
NumericUpDown & DomainUpDown
NumericUpDown
thông qua
q Nút up & down
q Nhập trực tiếp giá trị
NumericUpDown
NumericUpDown
Tăng giảm giá trị
Hiển thị giá
trị Hexa
Nhập trực tiếp giá trị
DomainUpDown
qua
q Button Up & Down
q Nhập từ bàn phím
DomainUpDown
String Collection Editor
Cho phép nhập item
Graphic & RichText Controls
DateTimePicker
giao diện đồ họa dạng calendar
long, short, time, custom
DateTimePicker
DateTimePicker
Đị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
MonthCalendar
ngày với ngày bắt đầu và ngày kết thúc.
RichTextBox
rich text format (RTF)
Advanced Controls
Timer
n 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
Timer
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
Timer
Khai báo
trình xử lý sự
kiện Tick
Timer
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
ProgressBar
xác định
ProgressBar
Max = 100
Min = 0
Step = 10
ProgressBar
ProgressBar
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
ToolTip
di chuyển chuột vào control bất kỳ
ToolTip. Thêm text vào thuộc tính này để hiển thị khi tooltip
xuất hiện.
ToolTip
ToolTip
Nội dung Tooltip
ToolTip
Nhập nội dung
Tooltip cần hiển
thị
ToolTip
ToolTip
ToolTip xuất hiện
khi user di chuyển
chuột vào vùng
control
Mouse Event
Mouse Event
xử lý tương ứng
truyền vào cho trình xử lý sự kiện mouse.
và đối tượng MouseEventArgs (hoặc EventArgs)
Mouse Event
MouseEventArgs
Số lần kích chuột
Button được nhấn
Tọa độ (x, y) của
con trỏ chuột
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
Xuất hiện khi button được nhấn/thả và con trỏ
chuột đang ở trong vùng biên của control
MouseDown/
MouseUp
MouseMove
Xuất hiện khi chuột di chuyển và con trỏ chuột ở
trong vùng biên của control
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
Mouse Event
Mouse Event
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
Mouse Event
n 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.
Mouse Event
Lớp Form1
Biến pA lưu giữ tọa độ khi
chuột trái được click
Mouse Event
MouseDown
Lưu lại điểm được nhấn chuột
Mouse Event
Mouse Event
Tại sao có hiệu
ứng vậy?
SV tự cải tiến
Keyboard Event
Keyboard Event
được nhấn
{Shift, Alt, Ctrl…}
phím bổ sung.
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
KeyPress
Khởi tạo khi phím được nhấn
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, ShiftTr ạng thái các phím bổ sung
Handled
Cho biết sự kiện đã xử lý
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
Keyboard Event
Keyboard Event
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
Keyboard Event
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
Keyboard Event
Keyboard Event
Keyboard Event
Keyboard Event
cho Form để nhận sự kiện bàn phím.
Keyboard Event
button.
Gọi event Click
của button “1”
Phím '=' được nhấn
Phím ‘+' được nhấn
Tóm tắt

