Tải bản đầy đủ (.pdf) (188 trang)

Tài liệu hướng dẫn giảng dạy chương trình kỹ thuật viên ngành lập trình potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.59 MB, 188 trang )

TRUNG TÂM TIN HỌC – ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
227 Nguyễn Văn Cừ - Quận 5- Tp.Hồ Chí Minh
Tel: 8351056 – Fax 8324466 – Email:
Mã tài liệu: DT_NCM_LT_TLGD_LTN1
Phiên bản 1.2 – Tháng 07/2006



TÀI LIỆU HƯỚNG DẪN GIẢNG DẠY

CHƯƠNG TRÌNH KỸ THUẬT
VIÊN
NGÀNH LẬP TRÌNH
Học phần 3
VISUAL BASIC .NET

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 2/187

MỤC LỤC
GIỚI THIỆU 9
GIÁO TRÌNH LÝ THUYẾT 10
TÀI LIỆU THAM KHẢO 10
Bài 1 11
TỔNG QUAN .NET FRAMEWORK 11
I. Tổng quan về .Net Framework 12
II. Cấu trúc .Net Framework 14
II.1. Hệ điều hành 14
II.2. Cung cấp các chức năng xây dựng ứng dụng 14
II.3. Common Language Runtime 15


II.4. Bộ thư viện các lớp đối tượng 15
II.5. Phân nhóm các lớp đối tượng theo loại 16
III. Ứng dụng đầu tiên 17
III.1. Môi trường lập trình VS .NET 17
III.2. Tạo mới một project 18
III.3. Ứng dụng Hello 19
III.4. Windows Form Designer 21
III.5. Thử nghiệm 23
III.6. Kỹ thuật lập trình hướng đối tượng 25
III.7. Xây dựng lớp đối tượng 27
III.8. Sử dụng lại thành phần có sẵn 28
III.9. Assembly - một loại DLL mới 32
Bài 2 34
NGÔN NGỮ VISUAL BASIC .NET 34
I. Các kiểu dữ liệu và đặc điểm 35
I.1. Các kiểu dữ liệu 35
I.2. Đặc điểm của các kiểu dữ liệu 36
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 3/187
II. Biến – Tính chất, khai báo và khởi tạo 40
II.1. Tính chất 40
II.2. Khai báo và khởi tạo 41
II.3. Kiểu trị và tham chiếu (Value Type và Reference Type) 42
II.4. Kiểu Enum (Enumeration) 44
III. Mảng – Structure 45
III.1. Mảng 45
III.2. Structure 47
IV. Các toán tử 47
IV.1. Toán tử toán học 47

IV.2. Toán tử nối chuỗi 48
IV.3. Toán tử gán 48
IV.4. Toán tử so sánh 48
IV.5. Toán tử luận lý và Bitwise 49
V. Cấu trúc điều khiển 49
V.1. Cấu trúc chọn 49
V.2. Cấu trúc lặp 51
VI. Những thay đổi trong VB.NET 52
VI.1. Thay đổi trong thủ tục và hàm 52
VI.2. Khai báo Option Strict 53
VI.3. Kiểu chuỗi có độ dài cố định 54
VI.4. Chỉ thị #Region … #End Region 54
VI.5. Imports không gian tên (Namespace) 54
VII. Xử lý lỗi 55
VII.1. Phân loại lỗi 55
VII.2. Xử lý lỗi 55
Bài 3 59
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VISUAL BASIC .NET 59
I. Lập trình hướng đối tượng 60
I.1. Tính trừu tượng 60
I.2. Tính bao bọc 60
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 4/187
I.3. Tính kế thừa 61
I.4. Tính đa hình 61
II. Lập trình hướng đối tượng trong VB.NET 62
II.1. Tạo một Class 62
II.2. Tạo một NameSpace mới 63
II.3. Tạo một Class kế thừa 64

II.4. Khai báo phương thức (Method) 64
II.5. Khai báo thuộc tính (Property) 67
II.6. Khai báo sự kiện (Event) 69
II.7. Từ khóa Me, Mybase, MyClass 71
II.8. Khởi tạo thể hiện 73
II.9. Abstract Base Class 73
II.10. Giao tiếp (Interface) 74
II.11. Lớp lồng ghép 75
II.12. Từ khóa Delegate 76
Bài 4 78
TỔNG QUAN VỀ ADO.NET 78
I. Tổng quan 79
II. Kiến trúc ADO .Net 80
III. Các đặc điểm của ADO.Net 81
III.1. Interoperability – Tương tác giữa nhiều hệ thống khác nhau 81
III.2. Scalability - Hỗ trợ nhiều người dùng 82
III.3. Productivity - Mở rộng khả năng làm việc với CSDL 82
III.4. Performance - Hiệu quả cao trong xử lý dữ liệu 82
IV. Content Component 83
IV.1. DataSet 83
IV.2. DataTable 84
IV.3. DataRelation 84
IV.4. Ràng buộc trên quan hệ 84
IV.5. DataView 85
V. Managed Provider Component 85
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 5/187
V.1. Connection 86
V.2. Command 86

V.3. DataReader 86
V.4. DataAdapter 86
Bài 5 88
CONNECTION, COMMAND, DATAADAPTER 88
I. Connection 89
I.1. Data Provider 89
I.2. ConnectionString 89
I.3. Các thuộc tính khác của Connection 91
I.4. Các phương thức trên Connection 91
I.5. Minh họa tạo Connection 91
II. Command 92
II.1. Tạo Command 92
II.2. Các thuộc tính của Command 92
II.3. Parameter 93
II.4. Thực hiện Command 95
II.5. DataReader 96
III. DataAdapter 97
III.1. Tạo DataAdapter 97
III.2. Các thuộc tính chính của DataAdapter 98
III.3. Các chức năng của DataAdapter 99
Bài 6 105
DATASET, DATATABLE, DATARELATION VÀ DATAVIEW 105
I. DataSet 106
I.1. Khai báo DataSet 106
I.2. Các thuộc tính của DataSet 106
I.3. Các phương thức của DataSet 106
II. DataTable 112
II.1. Các thuộc tính của DataTable 112
II.2. DataColumn 113
Tài liệu hướng dẫn giảng dạy


Học phần 3 – VB.NET Trang 6/187
II.3. DataRow 115
II.4. Constraint 117
II.5. Tập hợp Columns 119
II.6. Tập hợp Rows 121
II.7. Tập hợp Constraints 124
II.8. Một số phương thức của DataTable 124
II.9. Các sự kiện của DataTable 126
III. DataRelation 127
III.1. Khởi tạo 127
III.2. Các thuộc tính của DataRelation 128
III.3. Minh họa thiết lập quan hệ 128
IV. DataView 129
IV.1. Khởi tạo 129
IV.2. Các thuộc tính chính của DataView 129
IV.3. Các thao tác chính của DataView 130
IV.4. DataRowView 131
Bài 7 133
XÂY DỰNG CÁC LỚP XỬ LÝ 133
I. Mô hình đa tầng (N-tier) 134
II. Xây dựng lớp xử lý lưu trữ 134
II.1. Các khai báo 135
II.2. Khai báo các thuộc tính 135
II.3. Khai báo phương thức khởi tạo 137
II.4. Khai báo phương thức xử lý - cung cấp thông tin 137
II.5. Khai báo các phương thức thực hiện lệnh 139
II.6. Nhóm xử lý sự kiện 140
III. Xây dựng lớp xử lý nghiệp vụ 140
III.1. Khai báo phương thức khởi tạo 140

III.2. Khai báo phương thức tìm kiếm thông tin 141
Bài 8 142
THIẾT KẾ CÁC MÀN HÌNH 142
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 7/187
I. Các điều khiển hiển thị dữ liệu 143
I.1. Thuộc tính liên kết dữ liệu của điều khiển 143
I.2. ComboBox, ListBox, CheckListBox 143
I.3. DataGrid 144
I.4. DataGridTableStyle và TableStyles 146
I.5. DataGridColumnStyle và GridColumnStyles 146
I.6. Thiết kế DataGrid 147
I.7. Hiển thị dữ liệu ra điều khiển 150
II. Màn hình đơn 152
II.1. Các khai báo 152
II.2. Các thủ tục nhập xuất 152
II.3. Các hàm kiểm tra 153
II.4. Các xử lý sự kiện 154
III. Màn hình một nhiều 157
III.1. Màn hình một-nhiều hai trang 157
III.2. Màn hình một-nhiều ba trang 159
IV. Màn hình lọc dữ liệu 160
IV.1. Màn hình lọc một điều kiện 160
IV.2. Màn hình lọc hai điều kiện 161
V. Màn hình một-nhiều-nhiều 161
VI. Một số kỹ thuật trong hiển thị dữ liệu 161
VI.1. Tạo lớp DataGridColumnStyle chuyển đổi dữ liệu hiển thị 161
VI.2. Tạo lớp DataGridColumnStyle có ComboBox 162
VI.3. Tạo lớp DataGridColumnStyle cho phép định dạng chi tiết 162

VI.4. Minh họa sử dụng 162
Bài 9 166
BÁO BIỂU CRYSTAL REPORT 166
I. Giới thiệu Crystal Report 167
II. Tạo báo biểu 167
II.1. Nguồn dữ liệu cho báo biểu 169
II.2. Sử dụng Crystal Report Viewer để hiển thị báo biểu 170
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 8/187
II.3. Nguồn dữ liệu cho báo biểu từ DataSet 171
II.4. Định lại dữ liệu cho báo biểu từ nguồn CSDL 173
II.5. Lọc dữ liệu báo biểu 175
II.6. Truyền tham số cho báo biểu 175
II.7. Các loại kết xuất báo biểu 175
ĐỀ THI MẪU CUỐI HỌC PHẦN 177
ĐỀ THI MẪU KIỂM TRA CHUYÊN MÔN GIÁO VIÊN 181

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 9/187

GIỚI THIỆU
Sau khi hoàn thành khóa học này, học viên sẽ có các khả năng:
 Lập trình hướng đối tượng với Visual Basic .Net
 Lập trình cơ sở dữ liệu với ADO.Net
 Xây dựng ứng dụng với Visual Basic .Net
Với thời lượng là 36 tiết LT và 60 tiết TH được phân bổ như sau:
STT Bài học Số tiết LT Số tiết TH
1 Tổng quan .Net Framework, Visual Studio .Net 3

2 Ngôn ngữ Visual Basic .Net 3 5
3 Lập trình hướng đối tượng với VB.Net 6 10
4 Tổng quan ADO.Net 1 00
5 Đối tượng Connection, Command và DataAdapter 2 5
6 DataSet, DataTable, DataRelation Và DataView 6 5
7 Xây dựng các lớp xử lý 3 10
8 Thiết kế các màn hình 6 15
9 Báo biểu và in ấn 6 10
Tổng số tiết: 36 60

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 10/187
GIÁO TRÌNH LÝ THUYẾT
Sử dụng giáo trình “Visual Basic.Net” tập 2 của Nhóm Chuyên môn Lập trình.
TÀI LIỆU THAM KHẢO

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 11/187

HƯỚNG DẪN PHẦN LÝ THUYẾT

Bài 1
TỔNG QUAN .NET FRAMEWORK
Tóm tắt
Lý thuyết 3 tiết
Mục tiêu Các mục chính Bài tập
Giới thiệu các khái niệm cơ bản và
cấu trúc của .Net Framework, đồng

thời thông qua việc trình bày một
ứng dụng để giới thiệu về Visual
Studio .Net.
1. Tổng quan .Net Framework
2. Cấu trúc .Net Framework
3. Ứng dụng đầu tiên

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 12/187
I. Tổng quan về .Net Framework
Ngày 13/02/2002, Microsoft chính thức giới thiệu bộ công cụ lập trình mới của mình – Visual
Studio.NET. Sau 4 năm không tung ra phiên bản mới cho bộ Visual Studio 98, lần này Microsoft quyết
tâm đặt cược vào thắng lợi của công nghệ mới: Microsoft .NET.
Trong thời đại công nghệ thông tin, dữ liệu trở nên quan trọng đến nỗi người ta mong muốn tất cả mọi
thứ như điện thoại di động, máy tính xách tay, các máy PDA (Personal Digital Assistant) đều phải kết
nối với nhau để chia sẽ dữ liệu và việc sử dụng các phần mềm để quản lý, sử dụng những dữ liệu đó là
"không biên giới". Ứng dụng phải sẵn sàng để sử dụng từ trên máy tính cũng như trên điện thoại di
động 24/24 giờ, ít lỗi, xử lý nhanh và bảo mật chặt chẽ.
Các yêu cầu này làm đau đầu những chuyên gia phát triển ứng dụng khi phần mềm chủ yếu viết cho
hệ thống này không chạy trên một hệ thống khác bởi nhiều lý do như khác biệt về hệ điều hành, khác
biệt về chuẩn giao tiếp dữ liệu, mạng. Thời gian và chi phí càng trở nên quý báu vì bạn không phải là
người duy nhất biết lập trình. Làm sao sử dụng lại những ứng dụng đã viết để mở rộng thêm nhưng
vẫn tương thích với những kỹ thuật mới?
Sun Microsystems đi đầu trong việc cung cấp giải pháp với Java. Java chạy ổn định trên các hệ điều
hành Unix hay Solaris của Sun từ máy chủ tới các thiết bị cầm tay hay thậm chí trên các hệ điều hành
Windows của Microsoft (một ví dụ rõ ràng đó là hầu hết các điện thoại di động thế hệ mới đều có phần
mềm viết bằng Java). Kiến trúc lập trình dựa trên Java bytecode và thi hành trên máy ảo Java (JVM –
Java Virtual Marchine) cho phép các ứng dụng Java chạy trên bất cứ hệ điều hành nào. Mô hình lập
trình thuần hướng đối tượng của Java giúp các lập trình viên tùy ý sử dụng lại và mở rộng các đối

tượng có sẵn. Các nhà cung cấp công cụ lập trình dựa vào đây đểø gắn vào các môi trường phát triển
ứng dụng bằng Java của mình đủ các thư viện lập trình nhằm hỗ trợ các lập trình viên.
Sức mạnh của Java dường như quá lớn đến nỗi Microsoft từng phải chống trả bằng cách loại bỏ Java
Virtual Marchine khỏi các phiên bản hệ điều hành Windows mới của mình như Windows XP. Tuy nhiên,
Microsoft thừa hiểu rằng dù không cung cấp JVM, Sun cũng có thể tự cung cấp các JVM package cho
những người dùng Windows. Đó là lý do tại sao nhà khổng lồ quyết định bắt tay xây dựng lại từ đầu
một nền tảng phát triển ứng dụng mới: Microsoft.NET Framework.
Vì ra đời khá muộn so với Java, .Net bị coi là khá giống với bậc "tiền bối" của nó. .NET sử dụng kỹ
thuật lập trình thuần hướng đối tượng như Java và cũng thi hành trên một máy ảo là CLR (Common
Language Runtime).
Bộ thư viện của .NET Framework bao gồm hơn 5000 lớp đối tượng đủ sức hỗ trợ hầu hết các yêu cầu
từ phía lập trình viên. Công nghệ mã nguồn mở được đưa vào .NET thay cho COM và DCOM đang được
các lập trình viên của Microsoft sử dụng. Với COM, những thành phần (COMponent) đã được xây dựng
như các lớp thư viện hay các control chỉ có thể sử dụng lại. Bạn không thể mở rộng chúng hay viết lại
cho thích hợp với ứng dụng của mình. Trong .NET, mọi thành phần đều có thể kế thừa và mở rộng,
một kỹ thuật mới được đưa ra thay cho COM là Assembly. Distributed Component hay DCOM là kỹ
thuật dùng để phối hợp các thành phần trên nhiều máy tính giờ đây được thay thế trong .NET bởi
chuẩn công nghệ mới là SOAP và XML Web Service.
Cùng với SOAP (Simple Objects Access Protocol), XML Web Service mở rộng khả năng của DCOM từ
chỗ chỉ phối hợp các máy trong Intranet, nằm sau Firewall ra Internet. Các công ty .com giờ đây mặc
sức xây dựng các phần mềm độc lập của mình những vẫn có thể phối hợp với nhau để đem tới khách
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 13/187
hàng các dịch vụ e-commerce đa dạng nhưng thống nhất.
XML (eXtended Markup Language) - chuẩn lưu trữ và trao đổi dữ liệu mới nhất, hiệu quả nhất hiện nay
cũng được .NET hỗ trợ khá đầy đủ. Chỉ cần một công cụ chuyển đổi đơn giản mà thậm chí bạn cũng có
thể tự viết (đương nhiên khi bạn đã biết về XML), các dữ liệu trước kia của bạn dù ở bất cứ dạng lưu
trữ nào cũng có thể chuyển về dạng XML để sử dụng trong các ứng dụng mới hay trao đổi với hệ thống
ứng dụng khác. .NET giờ đây cũng sử dụng kỹ thuật truy cập cơ sở dữ liệu mới là ADO.NET để bổ sung

cho kỹ thuật ADO - trước kia vốn là thành phần mạnh nhất trong MDAC (Microsoft Data Access
Component gồm có 3 phần DB-Lib, OLEDB và ADO)- khả năng làm việc với dữ liệu XML. Bạn cũng nên
biết rằng kể từ SQL Server 2000, XML đã được hỗ trợ trong phần mềm quản trị cơ sở dữ liệu nổi tiếng
nhất của Microsoft và phiên bản SQL Server sắp tới chắc chắn không xem nhẹ XML chút nào. Cùng với
XML, SOAP và Web service đang là những vũ khí mạnh nhất mà Microsoft sử dụng để qua mặt Java.
Cũng không thể quên CLR, máy ảo của các ứng dụng viết bằng .NET. Common Language Runtime
(CLR) được sử dụng để thực hiện các đoạn chương trình ở dạng mã IL (Immediate Language). Điều
này có nghĩa là dầu bạn lập trình bằng ngôn ngữ nào bạn thích, một khi có thể biên dịch sang mã IL,
bạn sẽ yên tâm rằng CLR sẽ thi hành nó một cách suôn sẽ. Giống như JVM của Java, CLR bao gồm
trong nó nhiều thành phần quản lý ứng dụng khi thi hành như JIT (Just In Time compiler) để biên dịch
ngay tại thời điểm thi hành những đoạn lệnh IL cần thiết hay Garbage Collector giữ vai trò thu gom
"rác rưởi" mà ứng dụng để sót lại nhằm sử dụng hiệu quả bộ nhớ. Ngoài ra, CLR không quên hỗ trợ
việc quản lý các ứng dụng trước đây viết trên kỹ thuật COM. Nó đảm bảo cho bạn không phải bỏ đi
những gì đã "dày công xây đắp" trước đây mà vẫn có thể phối hợp nó với các ứng dụng mới viết trên
.NET.
Một điểm nữa không thể bỏ qua khi giới thiệu về .NET Framework, đó là thành phần Common
Language Specification. Vai trò của thành phần này là đảm bảo sự tương tác giữa các đối tượng bất
chấp chúng được xây dựng trong ngôn ngữ nào, miễn là chúng cung cấp được những thành phần
chung của các ngôn ngữ muốn tương tác. Thành phần Common Language Runtime được xây dựng với
mục đích mô tả các yêu cầu cần thiết của một ngôn ngữ để có thể sử dụng trong lập trình và biên dịch
thành mã IL. Một khi đã ở dạng mã IL, ứng dụng đã có thể chạy trên CLR và như thế bạn đã có khả
năng dùng ngôn ngữ lập trình mà mình yêu thích để tận dụng các khả năng mạnh mẽ của .NET.

Trước đây, các lập trình viên đã quen dùng Visual C++ hay Visual Basic 6 hay Visual InterDEV mỗi khi
cần xây dựng một loại ứng dụng khác phải chuyển qua lại giữa các môi trường lập trình khác nhau của
Visual Studio 98 và chợt nhận ra rằng VB 6 không có điểm mạnh này của C++ hoặc C++ không làm
nhanh được chức năng kia của VB 6,… sẽ cảm thấy nhẹ nhõm vì với .NET giờ đây, mọi sức mạnh của
các ngôn ngữ lập trình đều như nhau. .NET Framework hỗ trợ một bộ thư viện lập trình đồ sộ hơn
5000 lớp đối tượng để bạn đủ khả năng xây dựng các loại ứng dụng từ kiểu console (ứng dụng dòng
lệnh), ứng dụng trên Windows cho tới các ứng dụng Web, các service của hệ điều hành và các Web

service trên Internet.
Trước khi chấm dứt phần giới giới thiệu, cũng cần phải đề cập đến bộ control đồ sộ và mới mẻ của
.NET. Rất nhiều điều khiển mới được thêm vào .NET Framework để hỗ trợ cho các ứng dụng có giao
diện đồ họa trên Windows và trên Web một "vẻ mặt" mới. Những công cụ này không chỉ hỗ trợ chuẩn
font chữ Unicode nhưng còn kết hợp với khả năng xây dựng ứng dụng mang tính "quốc tế" khi người
lập trình phải đáp ứng nhiều ngôn ngữ, nhiều định dạng ngày giờ hay tiền tệ khác nhau.
Microsoft không quên đem lại một môi trường phát triển ứng dụng sử dụng giao diện đồ hoạ, tích hợp
nhiều chức năng, tiện ích khác nhau để hỗ trợ tối đa cho các lập trình viên, đó chính là Visual
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 14/187
Studio.NET.
.NET Framework là thành phần quan trọng nhất trong kỹ thuật phát triển ứng dụng dựa trên .NET.
Visual Studio sẽ giúp người lập trình nắm bắt và tận dụng tốt hơn những chức năng của .NET
Framework. Phần dưới đây giới thiệu những kiến thức cơ bản nhất về .NET Framework trước khi chúng
ta thực sự bắt tay vào làm việc với Visual Studio.NET và VB.NET.
II. Cấu trúc .Net Framework
Trong phần này, chúng ta tìm hiểu các thành phần bên trong .NET Framework.

Cấu trúc .NET FrameworkN
II.1. Hệ điều hành
.NET Framework cần được cài đặt và sử dụng trên một hệ điều hành. Hiện tại, .NET Framework chỉ có
khả năng làm việc trên các hệ điều hành Microsoft Win32 và Win64 mà thôi. Trong thời gian tới,
Microsoft sẽ đưa hệ thống này lên Windows CE cho các thiết bị cầm tay và có thể mở rộng cho các hệ
điều hành khác như Unix.
II.2. Cung cấp các chức năng xây dựng ứng dụng
Với vai trò quản lý việc xây dựng và thi hành ứng dụng, .NET Framework cung cấp các lớp đối tượng
(Class) để bạn có thể gọi thi hành các chức năng mà đối tượng đó cung cấp. Tuy nhiên, lời kêu gọi của
bạn có được "hưởng ứng" hay không còn tùy thuộc vào khả năng của hệ điều hành đang chạy ứng
dụng của bạn.

Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ được .NET Framework sử
dụng các hàm API của Windows. Chức năng phức tạp hơn như sử dụng các COMponent sẽ yêu cầu
Windows phải cài đặt Microsoft Transaction Server (MTS) hay các chức năng trên Web cần Windows
phải cài đặt Internet Information Server (IIS).
Như vậy, bạn cần biết rằng lựa chọn một hệ điều hành để cài đặt và sử dụng .NET Framework cũng
không kém phần quan trọng. Cài đặt .NET Framework trên các hệ điều hành Windows 2000, 2000
O
O
p
p
e
e
r
r
a
a
t
t
i
i
n
n
g
g


S
S
y
y

s
s
t
t
e
e
m
m


C
C
o
o
m
m
m
m
o
o
n
n


L
L
a
a
n
n

g
g
u
u
a
a
g
g
e
e


R
R
u
u
n
n
t
t
i
i
m
m
e
e


B
B

a
a
s
s
e
e


C
C
l
l
a
a
s
s
s
s


L
L
i
i
b
b
r
r
a
a

r
r
y
y


A
A
D
D
O
O


.
.
N
N
E
E
T
T


a
a
n
n
d
d



X
X
M
M
L
L


A
A
S
S
P
P


.
.
N
N
E
E
T
T


W
W

e
e
b
b


F
F
o
o
r
r
m
m
s
s






W
W
e
e
b
b



S
S
e
e
r
r
v
v
i
i
c
c
e
e
s
s


M
M
o
o
b
b
i
i
l
l
e
e



I
I
n
n
t
t
e
e
r
r
n
n
e
e
t
t
T
T
o
o
o
o
l
l
k
k
i
i

t
t
W
W
i
i
n
n
d
d
o
o
w
w
s
s


F
F
o
o
r
r
m
m
s
s



C
C
o
o
m
m
m
m
o
o
n
n


L
L
a
a
n
n
g
g
u
u
a
a
g
g
e
e



S
S
p
p
e
e
c
c
i
i
f
f
i
i
c
c
a
a
t
t
i
i
o
o
n
n



V
V
B
B


C
C
+
+
+
+


C
C
#
#


J
J
#
#







Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 15/187
Server, XP, XP.NET, 2003 Server sẽ đơn giản và tiện dụng hơn trong khi lập trình.
II.3. Common Language Runtime
Là thành phần "kết nối" giữa các phần khác trong .NET Framework với hệ điều hành. Common
Language Runtime (CLR) giữ vai trò quản lý việc thi hành các ứng dụng viết bằng .NET trên Windows.
CLR sẽ thông dịch các lời gọi từ chương trình cho Windows thi hành, đảm bảo ứng dụng không chiếm
dụng và sử dụng tràn lan tài nguyên của hệ thống. Nó cũng không cho phép các lệnh "nguy hiểm"
được thi hành. Các chức năng này được thực thi bởi các thành phần bên trong CLR như Class loader,
Just In Time compiler, Garbage collector, Exception handler, COM marshaller, Security engine,…
Trong các phiên bản hệ điều hành Windows mới như XP.NET và Windows 2003, CLR được gắn kèm với
hệ điều hành. Điều này đảm bảo ứng dụng viết ra trên máy tính của chúng ta sẽ chạy trên máy tính
khác mà không cần cài đặt, các bước thực hiện chỉ đơn giản là một lệnh copy của DOS!
II.4. Bộ thư viện các lớp đối tượng
Nếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì đây là lúc thích hợp nhất.
Framework chính là một tập hợp hay thư viện các lớp đối tượng hỗ trợ người lập trình khi xây dựng
ứng dụng. Có thể một số người trong chúng ta đã nghe qua về MFC và JFC. Microsoft Foundation Class
là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khi Java Foundation Class là bộ thư viện
dành cho các lập trình viên Java. Giờ đây, có thể coi .NET Framework là bộ thư viện dành cho các lập
trình viên .NET
Với hơn 5000 lớp đối tượng để gọi thực hiện đủ các loại dịch vụ từ hệ điều hành, chúng ta có thể bắt
đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều người lầm tưởng rằng các môi trường phát triển
phần mềm như Visual Studio 98 hay Visual Studio.NET là tất cả những gì cần để viết chương trình.
Thực ra, chúng là những phần mềm dùng làm "vỏ bọc" bên ngoài. Với chúng, chúng ta sẽ viết được
các đoạn lệnh đủ các màu xanh, đỏ; lỗi cú pháp báo ngay khi đang gõ lệnh; thuộc tính của các đối
tượng được đặt ngay trên cửa sổ properties, giao diện được thiết kế theo phong cách trực quan… Như
vậy, chúng ta có thể hình dung được tầm quan trọng của .NET Framework. Nếu không có cái cốt lõi
.NET Framework, Visual Studio.NET cũng chỉ là cái vỏ bọc! Nhưng nếu không có Visual Studio.NET,
công việc của lập trình viên .NET cũng lắm bước gian nan!

II.4.1. Base class library – thư viện các lớp cơ sở
Đây là thư viện các lớp cơ bản nhất, được dùng trong khi lập trình hay bản thân những người xây dựng
.NET Framework cũng phải dùng nó để xây dựng các lớp cao hơn. Ví dụ các lớp trong thư viện này là
String, Integer, Exception,…
II.4.2. ADO.NET và XML
Bộ thư viện này gồm các lớp dùng để xử lý dữ liệu. ADO.NET thay thế ADO để trong việc thao tác với
các dữ liệu thông thường. Các lớp đối tượng XML được cung cấp để bạn xử lý các dữ liệu theo định
dạng mới: XML. Các ví dụ cho bộ thư viện này là SqlDataAdapter, SqlCommand, DataSet, XMLReader,
XMLWriter,…
II.4.3. ASP.NET
Bộ thư viện các lớp đối tượng dùng trong việc xây dựng các ứng dụng Web. ASP.NET không phải là
phiên bản mới của ASP 3.0. Ứng dụng web xây dựng bằng ASP.NET tận dụng được toàn bộ khả năng
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 16/187
của .NET Framework. Bên cạnh đó là một "phong cách" lập trình mới mà Microsoft đặt cho nó một tên
gọi rất kêu : code behind. Đây là cách mà lập trình viên xây dựng các ứng dụng Windows based
thường sử dụng – giao diện và lệnh được tách riêng. Tuy nhiên, nếu bạn đã từng quen với việc lập
trình ứng dụng web, đây đúng là một sự "đổi đời" vì bạn đã được giải phóng khỏi mớ lệnh HTML lộn
xộn tới hoa cả mắt.
Sự xuất hiện của ASP.NET làm cân xứng giữa quá trình xây dựng ứng dụng trên Windows và Web.
ASP.NET cung cấp một bộ các Server Control để lập trình viên bắt sự kiện và xử lý dữ liệu của ứng
dụng như đang làm việc với ứng dụng Windows. Nó cũng cho phép chúng ta chuyển một ứng dụng
trước đây viết chỉ để chạy trên Windows thành một ứng dụng Web khá dễ dàng. Ví dụ cho các lớp
trong thư viện này là WebControl, HTMLControl, …
II.4.4. Web services
Web services có thể hiểu khá sát nghĩa là các dịch vụ được cung cấp qua Web (hay Internet). Dịch vụ
được coi là Web service không nhằm vào người dùng mà nhằm vào người xây dựng phần mềm. Web
service có thể dùng để cung cấp các dữ liệu hay một chức năng tính toán.
Ví dụ, công ty du lịch của bạn đang sử dụng một hệ thống phần mềm để ghi nhận thông tin về khách

du lịch đăng ký đi các tour. Để thực hiện việc đặt phòng khách sạn tại địa điểm du lịch, công ty cần
biết thông tin về phòng trống tại các khách sạn. Khách sạn có thể cung cấp một Web service để cho
biết thông tin về các phòng trống tại một thời điểm. Dựa vào đó, phần mềm của bạn sẽ biết rằng liệu
có đủ chỗ để đặt phòng cho khách du lịch không? Nếu đủ, phần mềm lại có thể dùng một Web service
khác cung cấp chức năng đặt phòng để thuê khách sạn. Điểm lợi của Web service ở đây là bạn không
cần một người làm việc liên lạc với khách sạn để hỏi thông tin phòng, sau đó, với đủ các thông tin về
nhiều loại phòng người đó sẽ xác định loại phòng nào cần đặt, số lượng đặt bao nhiêu, đủ hay không
đủ rồi lại liên lạc lại với khách sạn để đặt phòng. Đừng quên là khách sạn lúc này cũng cần có người để
làm việc với nhân viên của bạn và chưa chắc họ có thể liên lạc thành công.
Web service được cung cấp dựa vào ASP.NET và sự hỗ trợ từ phía hệ điều hành của Internet
Information Server.
II.4.5. Window form
Bộ thư viện về Window form gồm các lớp đối tượng dành cho việc xây dựng các ứng dụng Windows
based. Việc xây dựng ứng dụng loại này vẫn được hỗ trợ tốt từ trước tới nay bởi các công cụ và ngôn
ngữ lập trình của Microsoft. Giờ đây, ứng dụng chỉ chạy trên Windows sẽ có thể làm việc với ứng dụng
Web dựa vào Web service. Ví dụ về các lớp trong thư viện này là: Form, UserControl,…
II.5. Phân nhóm các lớp đối tượng theo loại
Một khái niệm không được thể hiện trong hình vẽ trên nhưng cần đề cập đến là Namespace. Đây là tên
gọi một nhóm các lớp đối tượng phục vụ cho một mục đích nào đó. Chẳng hạn, các lớp đối tượng xử lý
dữ liệu sẽ đặt trong một namespace tên là Data. Các lớp đối tượng dành cho việc vẽ hay hiển thị chữ
đặt trong namespace tên là Drawing.
Một namespace có thể là con của một namespace lớn hơn. Namespace lớn nhất trong .NET Framework
là System.
Lợi điểm của Namespace là phân nhóm các lớp đối tượng, giúp người dùng dễ nhận biết và sử dụng.
Ngoài ra, Namespace tránh việc các lớp đối tượng có tên trùng với nhau không sử dụng được. .NET
Framework cho phép chúng ta tạo ra các lớp đối tượng và các Namespace của riêng mình. Với hơn
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 17/187
5000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượng đã có là điều khó tránh khỏi.

Namespace cho phép việc này xảy ra bằng cách sử dụng một tên đầy đủ để nói đến một lớp đối tượng.
Ví dụ, nếu muốn dùng lớp WebControls, chúng ta có thể dùng tên tắt của nó là WebControls hay tên
đầy đủ là System.Web.UI.WebControls.

Hệ thống không gian tên (Namespace)

Đặc điểm của bộ thư viện các đối tượng .NET Framework là sự trải rộng để hỗ trợ tất cả các ngôn ngữ
lập trình .NET như chúng ta thấy ở hình vẽ trên. Điều này sẽ giúp những người mới bắt đầu ít bận tâm
hơn trong việc lựa chọn ngôn ngữ lập trình cho mình vì tất cả các ngôn ngữ đều mạnh ngang nhau.
Cũng bằng cách sử dụng các lớp đối tượng để xây dựng ứng dụng, .NET Framework buộc người lập
trình phải sử dụng kỹ thuật lập trình hướng đối tượng (sẽ được nói tới trong các chương sau).
III. Ứng dụng đầu tiên
III.1. Môi trường lập trình VS .NET
Chúng ta sẽ bắt đầu bằng việc làm quen với môi trường phát triển ứng dụng (IDE) của Visual
Studio.NET. VS.NET có nhiều thay đổi so với VS 98.
Hình dưới là màn hình khởi đầu của VS.NET 2003. Vùng làm việc chính giữa đang hiển thị trang "Start
page" với 3 mục chính: Projects, Online Resource và My Profile.
My Profile ghi nhớ thông tin về người sử dụng VS.NET. Các thông tin chủ yếu liên quan đến cách chúng
ta sẽ sử dụng VS.NET như thế nào. Chẳng hạn như cách hiển thị các cửa sổ, các phím tắt, cách VS.NET
hiển thị màn hình giúp đỡ,…
Online Resource cần một kết nối với Internet để download các thông tin từ website của Microsoft về
máy tính của chúng ta.
Projects liệt kê các project mà chúng ta đã làm việc trong thời gian gần đây. Trên mục này, chúng ta
cũng có thể tạo mới một project bằng cách nhấn vào nút New Project.
Các cửa sổ phụ nhìn thấy trên màn hình gồm có:
S
S
y
y
s

s
t
t
e
e
m
m








S
S
y
y
s
s
t
t
e
e
m
m
.
.
D

D
a
a
t
t
a
a


S
S
y
y
s
s
t
t
e
e
m
m
.
.
X
X
m
m
l
l



S
S
y
y
s
s
t
t
e
e
m
m
.
.
W
W
e
e
b
b


G
G
l
l
o
o
b

b
a
a
l
l
i
i
z
z
a
a
t
t
i
i
o
o
n
n


D
D
i
i
a
a
g
g
n

n
o
o
s
s
t
t
i
i
c
c
s
s


C
C
o
o
n
n
f
f
i
i
g
g
u
u
r

r
a
a
t
t
i
i
o
o
n
n


C
C
o
o
l
l
l
l
e
e
c
c
t
t
i
i
o

o
n
n
s
s


R
R
e
e
s
s
o
o
u
u
r
r
c
c
e
e
s
s
R
R
e
e
f

f
l
l
e
e
c
c
t
t
i
i
o
o
n
n
N
N
e
e
t
t
I
I
O
O
T
T
h
h
r

r
e
e
a
a
d
d
i
i
n
n
g
g
T
T
e
e
x
x
t
t
S
S
e
e
r
r
v
v
i

i
c
c
e
e
P
P
r
r
o
o
c
c
e
e
s
s
S
S
e
e
c
c
u
u
r
r
i
i
t

t
y
y
C
C
o
o
m
m
m
m
o
o
n
n


O
O
l
l
e
e
D
D
b
b


S

S
Q
Q
L
L
T
T
y
y
p
p
e
e
s
s
S
S
q
q
l
l
C
C
l
l
i
i
e
e
n

n
t
t
X
X
P
P
a
a
t
t
h
h
X
X
S
S
L
L
T
T
R
R
u
u
n
n
t
t
i

i
m
m
e
e


I
I
n
n
t
t
e
e
r
r
o
o
p
p
S
S
e
e
r
r
v
v
i

i
c
c
e
e
s
s


R
R
e
e
m
m
o
o
t
t
i
i
n
n
g
g


S
S
e

e
r
r
i
i
a
a
l
l
i
i
z
z
a
a
t
t
i
i
o
o
n
n


S
S
e
e
r

r
i
i
a
a
l
l
i
i
z
z
a
a
t
t
i
i
o
o
n
n


C
C
o
o
n
n
f

f
i
i
g
g
u
u
r
r
a
a
t
t
i
i
o
o
n
n


S
S
e
e
s
s
s
s
i

i
o
o
n
n
S
S
t
t
a
a
t
t
e
e
C
C
a
a
c
c
h
h
i
i
n
n
g
g





S
S
e
e
c
c
u
u
r
r
i
i
t
t
y
y
S
S
e
e
r
r
v
v
i
i
c

c
e
e
s
s


D
D
e
e
s
s
c
c
r
r
i
i
p
p
t
t
i
i
o
o
n
n



D
D
i
i
s
s
c
c
o
o
v
v
e
e
r
r
y
y


P
P
r
r
o
o
t
t
o

o
c
c
o
o
l
l
s
s


U
U
I
I


H
H
t
t
m
m
l
l
C
C
o
o
n

n
t
t
r
r
o
o
l
l
s
s


W
W
e
e
b
b
C
C
o
o
n
n
t
t
r
r
o

o
l
l
s
s


S
S
y
y
s
s
t
t
e
e
m
m
.
.
D
D
r
r
a
a
w
w
i

i
n
n
g
g


I
I
m
m
a
a
g
g
i
i
n
n
g
g
D
D
r
r
a
a
w
w
i

i
n
n
g
g
2
2
D
D
T
T
e
e
x
x
t
t


P
P
r
r
i
i
n
n
t
t
i

i
n
n
g
g
S
S
y
y
s
s
t
t
e
e
m
m
.
.
W
W
i
i
n
n
d
d
o
o
w

w
s
s
.
.
F
F
o
o
r
r
m
m
s
s


D
D
e
e
s
s
i
i
g
g
n
n




Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 18/187

Màn hình khởi đầu của VS.NET 2003 với Tab My Profile hiện hành
Solution Explorer quản lý một hay nhiều project được nhóm với nhau để tạo thành một solution (giải
pháp hay một hệ thống ứng dụng hoàn chỉnh). Nếu chuyển qua tab Class (Clas…), cửa sổ này liệt kê
các lớp đối tượng trong ứng dụng đang làm việc. Tab Content (Cont…) sẽ hiện thị mục lục của phần
giúp đỡ của VS.NET.
Dynamic help là cửa sổ giúp đỡ thông minh mới có trong VS.NET. Trong khi lập trình, chúng ta chỉ cần
đưa chuột tới một từ khoá như Class, For,… Dynamic help sẽ tự động tìm ra những mục giúp đỡ liên
quan đế từ khoá đó. Nếu chúng ta đang mở một project, phần cửa sổ dành cho Dynamic help còn
dùng để hiển thị cửa số Property giống như của VB 6.
Toolbox liệt kê các control dành cho việc thiết kế giao diện. Một tiện lợi của VS.NET cho các màn hình
độ phân giải thấp là chúng ta có thể thu gọn các cửa sổ kiểu như Solution Explorer và Dynamic help
thành tab nằm dọc theo màn hình như cửa sổ Toolbox chúng ta thấy trong hình. Nếu có nhiều tab,
biểu tượng của tab đó sẽ được hiển thị. Trong hình vẽ một tab khác có tên là Server Explorer được
hiển thị với biểu tượng 2 chiếc máy tính phía trên tab Toolbox.
III.2. Tạo mới một project
Có 2 cách tạo mới một project: chọn menu File | New | Project hay nhấn nút New Project trên tab
Projects của trang khởi động. Hình dưới minh họa cửa sổ New Project hiện ra khi bạn chọn chức năng
tạo mới.
Mục Project Type liệt kê tất cả các loại project có thể tạo bằng VS.NET. Máy tính của chúng tôi chỉ cài
một ngôn ngữ VB.NET thay vì 4 ngôn ngữ là VB.NET, C#, C++ và J# nên hình dưới chỉ cho thấy loại
Visual Basic Project mà không thấy có C# project hay C++ project…
Chỉ riêng với loại VB.Net project, chúng ta đã thấy mục Templates liệt kê rất nhiều kiểu ứng dụng khác
nhau. Một template là một mẫu ứng dụng cụ thể mà VS.NET sẽ phát sinh trước một số đoạn lệnh nhất
Tài liệu hướng dẫn giảng dạy


Học phần 3 – VB.NET Trang 19/187
định. Ví dụ, loại template Windows Application sẽ được VS.NET tạo sẵn một form và phát sinh lệnh cần
thiết để chúng ta có thể chạy ứng dụng ngay sau khi vừa tạo mới!
Hãy bắt đầu bằng ứng dụng phổ biến nhất : Windows Application.
Đặt lại tên cho project trong phần Name là “Hello” và định lại đường dẫn cho thư mục lưu trữ ứng
dụng trong phần Location (tuỳ ý và nếu cần thiết). Cuối cùng, nhấn OK để VS.NET phát sinh project
mới

Cửa sổ tạo một project
III.3. Ứng dụng Hello

Môi trường phát triển ứng dụng VS.Net

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 20/187
Trong ứng dụng này, chúng ta sẽ thực hiện các chức năng sau:
 Thiết kế giao diện để làm quen với control mới và thuộc tính mới của các control
 Thiết kế hệ thống thực đơn (menu)
 Tìm hiểu cấu trúc của một ứng dụng Windows Application về mặt mã lệnh
 Viết lệnh và làm quen với giao diện mới của cửa sổ code editor
 Biên dịch, chạy thử ứng dụng
 Tìm hiểu danh sách các file của project
Trước hết, nhấn đúp trên form để xem cửa sổ code editor với các đoạn lệnh của form Form1.

Cửa sổ viết lệnh của Form (Code editor)
Chúng ta sẽ thấy các dòng lệnh nằm trong một mục được khai báo là Class Form1. Class là một lớp đối
tượng và điều này cho thấy ngay bản chất lập trình hướng đối tượng (HĐT) của .NET. Tiếp theo dòng
khai báo là đoạn lệnh:

Ví dụ
:
Inherits System.Windows.Forms.Form
Inherits có nghĩa là "kế thừa". Trong lập trình HĐT, điều này có nghĩa là Class được khai báo có đặc
điểm giống hoàn toàn với class mà nó thừa kế. Ở đây, class mà Form1 thừa kế là
System.Windows.Forms.Form. Như vậy, Form1 sẽ có đặc điểm chung giống với bất kỳ form nào trong
các ứng dụng Windows: Một vùng hình chữ nhật, có thanh tiêu đề, các hộp Maximize, Minimize, X; có
thể thay đổi kích thước,…
Tạm bỏ qua phần Windows Form designer generated code để xem phần thủ tục Form1_Load:
Ví dụ
: Thủ tục Form1_Load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
End Sub
Như đã từng quen với VB 6, chúng ta biết rằng đây chính là thủ tục bẫy sự kiện Load của form xảy ra
khi chương trình vừa được thi hành. Hãy chú ý đoạn Handles MyBase.Load ở cuối phần khai báo. Với
mỗi thủ tục xử lý sự kiện, giờ đây, VB.NET dùng từ khoá Handles để mô tả sự kiện sẽ xử lý. Viết đoạn
lệnh sau đây để hiển thị một hộp thông báo trong thủ tục Form1_Load:
MsgBox("Form load!!!")
Nhấn F5 để chạy thử chương trình, một hộp thông báo hiển thị câu "Form load!!!" trước khi form được
hiện ra. Bây giờ, chúng ta hãy bỏ phần Handles MyBase.Load và chạy lại : hộp thông báo không còn
hiện ra được nữa – nghĩa là không có dòng lệnh nào cho xử lý sự kiện Load của form.
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 21/187
III.4. Windows Form Designer
Trên VB 6, các chi tiết thiết kế giao diện trên một form sẽ được dấu đi trong cửa sổ lệnh mặc dù vẫn
được ghi vào tập tin .frm. Trên VB.NET, mọi chi tiết thiết kế giao diện đều sử dụng lệnh. Windows
Form Designer cho phép chúng ta thiết kế giao diện bình thường và sẽ tự phát sinh những đoạn lệnh
này.

Hãy thiết kế form để có giao diện như sau:
Một chú ý nhỏ là Label control không còn sử
dụng thuộc tính Caption nữa và cả đối tượng
form cũng vậy. Các đối tượng control trên
.NET đều thống nhất sử dụng thuộc tính Text
để hiển thị chuỗi ký tự. Bây giờ, chúng ta hãy
quay trở lại cửa sổ Code editor và nhấn chuột
vào dấu + trong phần Windows Form
Designer.
Chức năng mới của Code editor là thu hẹp các đoạn lệnh thành một dòng ghi chú để toàn bộ phần mã
lệnh trở nên ngắn hơn. Để làm việc này, bạn sử dụng từ khoá #Region "ghi chú…" và #End Region.
Các đoạn lệnh nằm giữa #Region và #End Region sẽ được thu lại chỉ còn một dòng với nội dung là
phần ghi chú và dấu + ở phía trước. Windows Form Designer đã sử dụng chức năng này để phát sinh
đoạn lệnh thiết kế giao diện cho form.



Giao diện form cần thiết kế
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 22/187
Chúng ta sẽ đi vào xem xét chi tiết đoạn lệnh được phát sinh trên đây để hiểu rõ thêm một vài điểm
trong lập trình hướng đối tượng.
Trong lập trình HĐT, mỗi một đối tượng (object) đều phải có một lớp đối tượng (class) định nghĩa nó.
Lớp đối tượng chỉ là một khái niệm chẳng hạn như Máy tính, còn đối tượng là một cái máy tính cụ thể
chúng ta đang dùng. Một lớp được định nghĩa trong VB.NET bằng từ khoá Class như trong chương
trình, chúng ta có một lớp là Form1. Từ đây, chúng ta dùng từ class thay cho cụm từ "lớp đối tượng"
để ngắn gọn hơn.
Một class cần định nghĩa cách đối tượng của nó được tạo ra và huỷ đi. Điều này giống như việc Toyota
tạo ra một model xe hơi mới có tên là VIOS sẽ định nghĩa quy trình sản xuất ra một chiếc VIOS cụ thể

như thế nào. Thủ tục mô tả cách tạo ra một đối tượng của class phải đặt tên là New. Trong đoạn lệnh,
bạn thấy class Form1 cũng có một thủ tục New. Thủ tục định nghĩa cách huỷ đi một đối tượng gọi là
Dispose.
Sau khi các chiếc xe VIOS được đưa vào sử dụng, Toyota nhận được phản hồi từ khách hàng và quyết
định đưa ra một phiên bản VIOS mới hơn là VIOS Pro. VIOS Pro chính là một model mới dựa trên
model VIOS trước đó với một số chức năng cải tiến và vài thiết bị gắn thêm. Trong lập trình HĐT, ta
gọi đây là sự kế thừa. Trở lại phần khai báo Class Form1, bạn sẽ thấy phần Inherits
System.Windows.Forms.Form. Điều này có nghĩa là class Form1 kế thừa đặc điểm của class Form. Dĩ
nhiên các kỹ sư của Toyota sẽ không bỏ thời gian định nghĩa lại cách tạo ra một chiếc VIOS Pro, thay
vào đó họ sẽ mô tả rằng "một chiếc VIOS Pro được tạo ra giống như một chiếc VIOS cộng thêm một số
thay đổi …" Lập trình HĐT cũng dùng cách này, chúng ta thấy trong Sub New() có đoạn lệnh
MyBase.New(). Từ khoá MyBase dùng để nói đến lớp cha của Form1 tức Form. Như thế, Form1 sẽ
được tạo ra giống như một Form bình thường cộng với một vài thay đổi. Những thay đổi này được liệt
kê trong phần InitializeComponent().
Form1 là một Form bình thường mà chúng ta đã gắn thêm một label và một textbox. Thủ tục
InitializeComponent()
mô tả cách chúng ta gắn thêm label và textbox đó.

Ví dụ
:

Nội dung thủ tục InitializeComponent()
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents txtTen As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label
Me.txtTen = New System.Windows.Forms.TextBox
Me.SuspendLayout()


'Label1
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(16, 32)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(67,16)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Tên của bạn"

Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 23/187
'txtTen
Me.txtTen.Location = New System.Drawing.Point(88,24)
Me.txtTen.Name = "txtTen"
Me.txtTen.TabIndex = 1
Me.txtTen.Text = ""

'Form1
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(296,69)
Me.Controls.Add(Me.txtTen)
Me.Controls.Add(Me.Label1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Windows Form Designer khai báo hai biến Label1 và txtTen bằng từ khoá Friend (Các từ khoá Public,
Private, Friend,… sẽ được chúng tôi trình bày trong chương 3.) Biến Label1 được khai báo là một đối
tượng của class Label trong khi txtTen là đối tượng của class TextBox. Khai báo một đối tượng không
có nghĩa là chúng ta đã có thể sử dụng đối tượng. Điều này giống như việc đặt hãng Toyota một chiếc

VIOS và phải đợi họ giao hàng trước khi sử dụng. Trong lập trình HĐT, biến kiểu đối tượng sau khi khai
báo cần được "tạo mới". Đây là lý do có hai dòng lệnh:
Me.Label1 = New System.Windows.Forms.Label
Me.txtTen = New System.Windows.Forms.TextBox
Từ khoá Me cũng như các đoạn lệnh còn lại không xa lạ với chúng ta. Ở đây, Designer đang khởi gán
các thuộc tính cho Label1 và txtTen. Một chú ý nhỏ là để đặt vị trí của Label hay TextBox trên Form1,
designer sử dụng một điểm để canh góc trên bên trái. Điểm cũng là một đối tượng của class Point và
được tạo ra bằng lệnh New System.Drawing.Point(x,y).
Hai dòng lệnh Controls.Add(…) làm công việc "bắt vít" hai điều khiển của chúng ta vào Form1.
III.5. Thử nghiệm
Chúng ta sẽ kiểm chứng lại những gì vừa phân tích ở trên bằng việc thêm một control mới vào Form1
nhưng dùng lệnh thay vì thiết kế bằng tay. Thêm dòng khai báo sau dưới mục khai báo txtTen:
Friend WithEvents LinkLbl As System.Windows.Forms.LinkLabel
Và tạo mới:
Me.LinkLbl = New System.Windows.Forms.LinkLabel
Trước mục ghi chú ‘Form1, thêm đoạn lệnh để đặt thuộc tính cho LinkLabel:
Ví dụ
: Thủ tục Form1_Load
'LinkLbl
Me.LinkLbl.Location = New System.Drawing.Point(112, 48)
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 24/187
Me.LinkLbl.Name = "LinkLbl"
Me.LinkLbl.Size = New System.Drawing.Size(64, 16)
Me.LinkLbl.TabIndex = 2
Me.LinkLbl.TabStop = True
Me.LinkLbl.Text = "Giúp đỡ"
Me.LinkLbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
Cuối cùng, chúng ta cũng "bắt vít" LinkLabel vừa tạo vào Form1 bằng lệnh:

Me.Controls.Add(Me.LinkLbl)

Thêm các điều khiển vào form
Bây giờ, chuyển sang cửa sổ thiết kế giao diện để xem LinkLabel của chúng ta được đặt ở đâu. Tiếp tục
thiết kế giao diện cho Form1 theo hình dưới đây:

Thực đơn của form
Menu của form là một điều khiển có tên là MainMenu. Khi được đưa vào form, điều khiển này sẽ nằm
trong phần đáy màn hình như trên hình trên. Mục Type Here hiện ra tại vị trí của menu để chúng ta
thiết kế các mục trong menu. Hãy xem hình để biết cấu trúc của menu cần thiết kế.
Thêm các đoạn lệnh xử lý sự kiện sau vào chương trình:
Ví dụ
:


Private Sub cmdHello_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles cmdHello.Click
Dim ten As String
ten = txtTen.Text
MsgBox("Hello, " & ten)
End Sub

Private Sub mnuGioiThieu_Click(ByVal sender As System.Object, ByVal e _
Tài liệu hướng dẫn giảng dạy

Học phần 3 – VB.NET Trang 25/187
As System.EventArgs) Handles mnuGioiThieu.Click
MsgBox("Chương trình VB.NET đầu tiên.")
End Sub


Private Sub mnuThoat_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles mnuThoat.Click
Me.Close()
End Sub

Private Sub LinkLbl_LinkClicked(ByVal sender As System.Object, ByVal e _
As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles _
LinkLbl.LinkClicked
Dim P As System.Diagnostics.Process
P.Start("")
End Sub

Private Sub mnuGiupDo_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles mnuGiupDo.Click
Dim P As System.Diagnostics.Process
P.Start("")
End Sub
Bây giờ, chúng ta có thể biên dịch và chạy thử chương trình bằng cách nhấn phím F5. Các chức năng
khá đơn giản, ngoài việc chúng ta đã dùng một điều khiển LinkLabel mới có trong .NET để mở website
trong Internet Explorer. Trong đoạn lệnh dành cho chức năng này, chúng
ta dùng một đối tượng P của class Process. Đây là một đối tượng "hệ thống" chưa từng có trong VB 6.
Đối tượng này có thể khởi động hay tắt các ứng dụng có trên máy một cách đơn giản như chúng ta
được thấy.
III.6. Kỹ thuật lập trình hướng đối tượng
Chúng ta sẽ tìm hiểu thêm về cấu trúc của chương trình Hello để nắm vững cách VS.NET tổ chức một
project và hiểu thêm về kỹ thuật lập trình HĐT. Hãy xem hình cửa ổ Solution Explorer bên dưới. Chúng
ta đang ở tab Solution (Soluti…) và VS.NET trình bày cấu trúc của project dạng cây:

×