10/17/2018
Lập trình Ứng dụng quản lý
C#.NET
Windows Forms (tt)
Nội dung
Nhóm common controls
Nhóm containers
Nhóm Menus & Toolbars
Trao đổi dữ liệu giữa các form
1
10/17/2018
Nội dung
Nhóm common controls
Nhóm containers
Nhóm Menus & Toolbars
Trao đổi dữ liệu giữa các form
Nhóm common controls
Là nhóm các control thơng dụng (thường được
sử dụng trong hầu hết các trường hợp).
Mỗi control cung cấp chức năng đặc trưng riêng,
chủ yếu là thuộc về nhóm hiển thị (text, danh
sách, image,…), nhập liệu (text, lựa chọn,…)
Nhóm cơ bản
Button
Label
Textbox
CheckBox
RadioButton
2
10/17/2018
Nhóm hiển thị đặc trưng của dữ liệu
NumericUpDown
PictureBox
RichTextBox
DateTimePicker
MonthCalendar
ProgressBar
Nhóm chứa danh sách dữ liệu
ComboBox
ListBox
ListView
TreeView
3
10/17/2018
Đặc trưng
Cần quan tâm đến danh sách Items và loại item cụ
thể mà control có khả năng lưu giữ.
ComboBox, ListBox: item gốc là text.
ListView: item là ListViewItem (chứa nội dung text và
index image).
TreeView: item là TreeNode (đặc điểm là có phân cấp nên
mỗi TreeNode có thể chứa các TreeNode khác)
Nhóm control này chủ yếu để hiển thị danh sách
và cho phép lựa chọn, do đó event cần quan tâm
nhất chính là liên quan đến việc lựa chọn item.
Ngoài ra việc hiển thị, lựa chọn có thể được lựa
chọn cách thức qua các property (SelectionMode,
ViewMode,…)
Nội dung
Nhóm common controls
Nhóm containers
Nhóm Menus & Toolbars
Trao đổi dữ liệu giữa các form
4
10/17/2018
Nhóm containers
Là nhóm chức năng chủ yếu cho việc layout, sắp
xếp các controls.
Khi sử dụng nhóm này cần lưu ý đến việc layout
cho chính container thơng qua property Dock,
Anchor.
Việc sử dụng các container là rất quan trọng
trong xây dựng giao diện chức năng, nó giúp cho
các bố cục rõ rang, dễ dàng quản lý các control.
Property cần quan tâm trong nhóm container là
Controls (tương tự Form).
Panel
Giúp tách riêng nhóm control.
Dễ dàng quản lý (ẩn, hiện, enable,…)
Dễ dàng làm nổi bật những nhóm control.
5
10/17/2018
GroupBox
Tương tự Panel nhưng có thêm title và border mặc
định.
Sử dụng khi cần nhóm các control vào một chức
năng cụ thể cần thể hiện.
FlowLayoutPanel
Tương tự Panel nhưng tự sắp xếp các control con
kế tiếp nhau.
Cho phép thay đổi kiểu sắp xếp (Left-Right, TopDown,…)
6
10/17/2018
TableLayoutPanel
Tương tự Panel nhưng tự sắp xếp các control con
vào từng cell trên table.
Cho phép thay đổi số lượng, kích thước hàng và cột,
đường phân cách cell.
SplitContainer
Là một cặp Panel đi liền kề nhau (chia làm 2 phần).
Cho phép thay đổi kích thước mỗi panel động.
Cho phép thay đổi cách hiển thị dọc hay ngang.
7
10/17/2018
TabControl
Là các panel thể hiện theo dạng đặc biệt (Tab).
Tại một thời điểm chỉ có 1 tab được hiển thị.
Nội dung
Nhóm common controls
Nhóm containers
Nhóm Menus & Toolbars
Trao đổi dữ liệu giữa các form
8
10/17/2018
Nhóm Menus & Toolbars
Mục tiêu hiển thị các điều hướng cho chương
trình.
Các loại được cung cấp
MenuStrip
ToolStrip
StatusStrip
ToolStripContainer
ContextMenuStrip
MenuStrip
Thể hiện của menu thông thường. Thường nằm ở
Top.
Chủ yếu các text được phân cấp để điều hướng lựa
chọn.
MenuStrip
9
10/17/2018
Đặc điểm
MenuStrip cho phép thiết kế menu trên Form
với các thành phần con như:
ToolStripMenuStrip (menu con)
ToolStripComboBox (menu ComboBox)
ToolStripSeparator (gạch phân cách)
ToolStripTextBox (menu TextBox)
Các thuộc tính cơ bản
ToolStripMenuItem
Thể hiện tùy chọn trên menu.
Thay thế cho MenuItem (vẫn có thể sử dụng nếu
muốn).
Các thuộc tính
10
10/17/2018
Các event
ToolStripComboBox
Trình bày MenuItem như một ComboBox
Các thuộc tính hồn tồn tương tự ComboBox
Ngồi ra có thêm thuộc tính TooltipText thể hiện
chuỗi Tip khi chuột di vào
Các event chính
ToolStripTextBox
Trình bày MenuItem dạng TextBox
Hồn tồn tương tự như TextBox
Ngồi ra có thêm thuộc tính TooltipText thể hiện
chuỗi Tip khi chuột di vào
Các event cũng hoàn toàn tương tự TextBox
(TextChanged, Click, DoubleClick).
ToolStripSeparator
Trình bày MenuItem dạng đường kẻ ngăn cách
Tương tự như nếu sử dụng ToolStripMenuItem với
Text là “---”;
11
10/17/2018
ContextMenuStrip
Là Menu dạng popup (thường xuất hiện cùng việc
nhấn chuột phải)
Có thể dùng chung ContextMenuStrip cho cả Form
và các Control con
Các thuộc tính hầu như giống với MenuStrip
Sau khi đã có Control ContextMenuStrip thì có thể
gán vào thuộc tính ContextMenuStrip của các
Control
ContextMenuStrip
ToolStrip
Là Control trình bày thanh công cụ giao tiếp với
người dùng thông qua các ToolStripItem. Thường
nằm ngay dưới menu.
ToolStrip
12
10/17/2018
ToolStripItem
Có các loại ToolStripItem khác nhau như:
ToolStripButton, ToolStripComboBox,
ToolStripSplitButton (nút dạng sổ danh sách, có thể
nhấn độc lập), ToolStripLabel, ToolStripSeparator,
ToolStripDropDownButton (dạng sổ danh sách),
ToolStripProgressBar và ToolStripTextBox.
Các thuộc tính
Các event
ToolStripProgressBar
Trình bày một thanh thể hiện quá trình hồn thành tác vụ
nào đó
13
10/17/2018
StatusStrip
Là Control để trình bày thơng tin trạng thái trên
Form
Có các thành phần con như: ToolStripStatusLabel,
ToolStripDropDownButton, ToolStripSplitButton và
ToolStripProgressBar.
Các thuộc tính hồn tồn tương tự ToolStrip
StatusStrip
Properties
Trình bày chuỗi trên StatusStrip tương tự như Label
14
10/17/2018
ToolStripDropDownButton
Thể hiện dạng sổ danh sách các MenuStripItem:
ToolStripMenuItem, ToolStripTextBox,
ToolStripComboBox, ToolStripSeparator
Các thuộc tính hầu hết tương tự như
ToolStripStatusLabel, thuộc tính khác biệt là
DropDownLists: Collection các thành phần con kể
trên
Event: ngồi Click và DoubleClick thì có thêm event
DropDownItemClick raise khi nhấn vào từng phần
tử con
ToolStripContainer
Bộ quản lý ToolStrip ở các cạnh.
ToolStripContainer
15
10/17/2018
Nội dung
Nhóm common controls
Nhóm containers
Nhóm Menus & Toolbars
Trao đổi dữ liệu giữa các form
Trao đổi dữ liệu giữa các Form
Với ứng dụng WinForms, trong một số trường
hợp chúng ta cần phải trao đổi dữ liệu từ form
này sang form khác.
Dựa vào kiến thức cơ bản C# có thể đề suất 5
phương pháp sau:
Sử dụng phương thức khởi tạo (Constructor).
Sử dụng đối tượng tham chiếu (reference object).
Sử dụng thuộc tính của lớp đối tượng (properties).
Sử dụng delegates.
Sử dụng events.
16
10/17/2018
Sử dụng phương thức khởi tạo (Constructor)
Ưu điểm: đơn giản, dễ sử dụng, chỉ cần tạo
phương thức khởi tạo cho Form cần nhận dữ liệu
có tham số phù hợp.
Nhược điểm: chỉ truyền được dữ liệu ngay lúc khởi
tạo Form.
var frm = new frmEdit(this);
frm.StartPosition = FormStartPosition.CenterParent;
frm.ShowDialog();
Sử dụng đối tượng tham chiếu (reference
object)
Cách thức cài đặt: trong Form cần nhận dữ liệu sẽ
gán 1 tham chiếu đến Form truyền dữ liệu, đồng
thời phải public các thành phần cần lấy dữ liệu.
Nhược điểm: nếu dữ liệu cần truyền đi gồm nhiều
thành phần thì cài đặt dài dịng và mất đi tính đóng
gói của lớp.
17
10/17/2018
Sử dụng thuộc tính của lớp đối tượng
(properties)
Cách thức cài đặt: tạo các Properties của các dữ
liệu cần truyền đi.
Nhược điểm: cài đặt dài dòng và vẫn phụ thuộc
việc cài đặt hành động của chính Form truyền.
Sử dụng delegates
Cách thức cài đặt: trong form truyền dữ liệu khai
báo delegate với dữ liệu tương ứng, trong form
nhận sẽ tạo hàm tiếp nhận delegate đó.
Ưu điểm: việc hành xử cụ thể sẽ do chính Form
nhận quyết định.
Nhược điểm: cài đặt cần kiến thức delegates. Cần
nắm giữ đối tượng delegate.
18
10/17/2018
Sử dụng events
Hoàn toàn tương tự phương pháp sử dụng
delegates, điểm khác là thay thế bằng events.
Ưu điểm: hành động do Form nhận quyết định và
đồng thời việc cài đặt thời điểm xảy ra phương thức
là tùy ý.
Bài tập
Xây dựng chương trình quản lý danh sách sinh
viên với việc sửa đổi trên dialog riêng.
19