184
8/3/2019 Bai Giang VB http://slidepdf.com/reader/full/bai-giang-vb 1/184  Mục tiêu - Vận dụng  bộ công cụ lập trình Visual Basic.NET để xây dựng ứng dụng (từ đơn giản đến  phức tạp). - Có khả năng tìm hiểu sâu hơn các kỹ thuật  lập trình Visual Basic.NET nâng cao (hệ thống, mạng…).  Giảng viên Họ tên : NguyễnNgọcKhương  Email : [email protected] 1

Bai Giang VB

Embed Size (px)

Citation preview

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 1/184

 Mục tiêu - Vận dụng  bộ công cụ lập trình Visual Basic.NET để xây dựng ứng dụng (từ đơn giản đến  phức tạp).- Có khả năng tìm hiểu sâu hơn các kỹ thuật lập trìnhVisual Basic.NET nâng cao (hệ thống, mạng…).

 Giảng viênHọ tên : NguyễnNgọcKhương Email : [email protected]

1

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 2/184

 Nội dung chủ yếu 

- Giới thiệu về .NET Framework.

- Giao diện người dùng.- Các kiểu dữ liệu của Visual Basic.NET.

- Lập trình hướng đối tượng.

2

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 3/184

 Kiến thức liên quan 

Kỹ  năng  sử  dụng máy tính (Windows), Lập 

trình căn  bản.

3

Kỹ năng sử  dụng máy tính Sử  dụng HĐH Windows.

Lập trình căn bản  Kỹ năng lập trình tốt 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 4/184

 Tài liệu tham khảo - Developing Windows-Based Applications with Visual Basic

.NET and Visual C Sharp .NET; Microsoft Press A Division ofMicrosoft Corporation One Microsoft Way Redmond; 2002.

- Programming Visual Basic .NET;  Dave Grundgeiger;Publisher: O'Reilly, First Edition January; 2002.

- Programming and Problem Solving with Visual Basic.NET; Nell Dale, Michael McMillan, Chip Weems and MarkHeadington; Jones and Bartlett Publishers; 2003.

- www.toantinhpu.co.cc

4

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 5/184

CHƢƠNG 1:.NET FRAMEWORK

.NET Framework & Common LanguageRuntime.

Ngôn ngữ Visual Basic.Net

Khai báo lớp 

 Tạo đối tượng từ lớp 

5

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 6/184

BÀI 1:.NET & VISUAL BASIC.NET

Khái niệm và các thành phần của .NetFramework.

Cấu trúc 1 ứng dụng .NET

Giới thiệu về Visual Basic.NETChương trình Visual Basic.Net đầu tiên.

6

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 7/184

.NET FRAMEWORK

Là một môi trường an toàn cho việc quản lývấn đề phát triển và thực thi ứng dụng.

Gồm 2 phần:

- Common Language Runtime (CLR): quản lý việc thực thi mã lệnh.

- Thư viện lớp .NET Framework: tập hợp các

kiểu của CLR.

7

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 8/184

CÁC THÀNH PHẦN CỦA .NET FRAMEWORK

8

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 9/184

NGÔN NGỮ & .NET FRAMEWORK

Tương thích giữa các ngôn ngữ với nhau (doCLR).

9

App

(VB.NET,

C#)

VB.NET (C#)

compiler

Microsoft

Intermediate

Language

(MSIL hay IL)

CLR

đọc &thực thi Common Language

Specification (CLS)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 10/184

VISUAL BASIC.NET

Một phần của Visual Studio.NET

Thuần hướng đối tượng.

Ngôn ngữ duy nhất trong VS.NET hỗ  trợ 

ràng buộc trễ.Ngôn ngữ duy nhất trong VS.NET hỗ trợ chế 

độ dịch nền.

Không phân biệt chữ hoa và chữ thường.

10

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 11/184

ỨNG DỤNG .NET ĐẦU TIÊN

Dịch: vbc <Tên tập tin> Sau khi dịch xong, ta nhận  được  tập tin thực thi (exe).

Thực hiện tập tin này.

TD: Tập tin HelloWorld.vb:

Public Module HelloPublic Sub Main()

System.Console.WriteLine("hello world")

End Sub

End Module

Dịch tập tin: vbc HelloWorld.vbThực thi tập tin HelloWorld.exe

11

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 12/184

BÀI 2: NGÔN NGỮ LẬP TRÌNH VISUAL BASIC.NET

Kiểu dữ liệu, biến & hằng trong VB.NET. Câu lệnh đơn trong VB.NET 

Các lệnh có cấu trúc của VB.NET 

12

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 13/184

KIỂU DỮ LIỆU & ĐỊNH DANH

Kiểu giá trị  (cấu trúc): Boolean, Char, Byte, Date, Decimal,Double, Integer, Long, Short, Single, Structure.

Kiểu tham chiếu (lớp): Object, String.

 Định danh (danh biểu): là tên dùng để đặt cho biến, hằng, 

kiểu, lớp, phương thức… theo quy tắc:- Bắt đầu là 1 ký tự từ A-Z.

- Theo sau là các ký tự, hoặc ký số (0-9) hay dấu gạch dưới.

- Tên có độ dài tối đa là 40.- Không phân biệt chữ hoa và chữ thường.

TD tên: TH_K30, Dt_k31

13

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 14/184

BIẾN (VARIABLE)

Là đại lượng dùng để chứa dữ liệu trong quátrình tính toán.

Cú pháp khai báo biến:

Dim|Private|Public|Friend|Protected _ 

<Tên biến> [ As  <Kiểu>] [= <Biểu thức>]  

14

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 15/184

BIẾN (VARIABLE)

Biến cục bộ: là biến được khai báo trong một khối lệnh (Dim)TD: Tìm giá trị nghịch đảo của x

If x <> 0 ThenDim rec As Integer

rec = 1/x

End If

MsgBox CStr(rec) 

15

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 16/184

BIẾN (VARIABLE)

Biến cấp module: là biến được khai báo trong phần khai báo toàn cục của một module (Public, Friend,Private).

Private: là biến  chỉ có hiệu  lực trong module đó (mặc định).

Friend: là biến chỉ có hiệu lực trong dự án đó.

Public: biến có hiệu  lực không chỉ trong dự án nó

được khai báo mà còn trong các dự án khác cótham chiếu đến dự án này.

16

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 17/184

BIẾN (VARIABLE)

Giả sử Project1, ta có Module sau: Public Module Module1

Public iModulePublic As Integer

Friend iModuleFriend As IntegerEnd Module

Nếu Project2 tham chiếu đến Project1, ta viết: Project1.Module1.iModulePublic = 100

Nhưng Lỗi "not accessible" khi: Project1.Module1.iModuleFriend = 100

17

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 18/184

THÍ DỤ VỀ KHAI BÁO BIẾN

Dim x As Integer

Khi muốn khai báo nhiều  biến cùng kiểu,  sử  dụng dấu phẩy (,) phân cách:Dim x As Long, i, j, k As Integer, _

s As String 

Vừa khai báo vừa khởi tạo giá trị:Dim x As Integer = 5

Dim x As Integer = 6, _y As Integer = 9 

18

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 19/184

HẰNG (CONSTANT)

Là đại  lượng có giá trị không đổi trong quátrình tính toán.

Private|Public|Friend|Protected Const _  <Tên hằng> 

[ As  <Kiểu>]= <Biểu thức> 

TD:

Public Const Pi = 3.14

Private Const g As Single = 9.8

19

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 20/184

BIỂU THỨC

Các phép toán số học (+, -, *, /, Mod, \, ^).

Các phép toán quan hệ: And, Not, Or.

Các phép toán so sánh: =, >=, <=, <, >, <>.Ngoài ra, ta có thể sử dụng cặp dấu ngoặc 

đơn để tăng độ ưu tiên.

20

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 21/184

CHUYỂN ĐỔI KIỂU

Tùy chọn  Option Strict: xác định cách thức trìnhbiên dịch xác định sự  tương thích kiểu trong biểu thức (On: BT phải  tương thích kiểu,  Off: VB tự động chuyển đổi kiểu).TD: Dim A as Long=6 

Dim b As Integer=A

s ẽ có lỗi   xuất  hiện nếu đặt  Option Strict On 

Một số hàm chuyển đổi kiểu: CBool, CChar, CDate,CDbl, CDec, CInt, CLng, CObj, CSng, CStr.

21

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 22/184

CÂU LỆNH OPTION

Tác động đến quá trình thực thi của trình biên dịch.

Option Compare [Binary | Text]: cách thức sosánh chuỗi.

Option Explicit [On | Off]: xác định các biến  sử dụng bắt buộc phải khai báo hay không?

Option Strict [On | Off]: tự động chuyển đổi kiểu trong biểu thức.

22

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 23/184

CÂU LỆNH GÁN

Cú pháp: <Tên biến> = <Biểu thức>  TD: Tính diện tích hình tròn biết bán kính là 5.Imports SystemPublic Module Hello

Public Sub Main( )

Const Pi = 3.14Dim R As Single = 5, S As SingleS = Pi*R*R „ Gán trị tính diện tích Console.WriteLine("Dien tich " & _ 

CStr(S))End Sub

End Module

23

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 24/184

CÂU LỆNH IF

24

If  expression Thenstatements 

End If 

If  expression Thenstatements 

Else

statements 

End If  If  expression Then

statements 

ElseIf  expression Thenstatements 

ElseIf  expression Thenstatements 

[Elsestatements ]

End If 

Có 3 dạng chính:

- If  đơn giản. - If  có phần Else 

- If và ElseIf  nhiềulần. 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 25/184

THÍ DỤ VỀ IF

If m=1 Or m=3 Or m=5 Or m=7 Or m=8 Or m=10 Or m=12 Then System.Console.WriteLine(“31 days“) 

ElseIf m=4 Or m=6 Or m=9 Or m=11 Then System.Console.WriteLine(“30 days“) 

Else System.Console.WriteLine(“28 or 29 days”) 

End If 

25

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 26/184

CÂU LỆNH SELECT CASE

Select Case  <biểu thức kiểm tra> 

Case <Danh sách kết quả biểu thức 1> 

[Khối lệnh 1] Case <Danh sách kết quả biểu thức 2> 

[Khối lệnh 2] …… 

[Case Else 

[Khối lệnh n]] End Select

Từ khóa Is: So sánh <biểu thức kiểm tra> với 1 giá trị  Từ khóa To: Xác lập miền giá trị của <biểu thức kiểm tra> 

26

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 27/184

THÍ DỤ SELECT CASE

Select Case TuoiCase Is <18

System.Console.WriteLine(“Vi thanh nien”) Case 18 To 30

System.Console.WriteLine(“Ban da truong thanh, lap gia dinh di”) 

Case 31 To 60System.Console.WriteLine(“Ban dang o lua tuoi trung nien”) 

Case Else System.Console.WriteLine(“Ban da lon tuoi, nghi huu duoc roi!”) 

End Select 

Lƣu ý: Trong thí dụ trên, không thể viết Case Tuoi<18 

27

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 28/184

VÒNG LẶP DO…LOOP 

Do While <Expression><Statements>

Loop

Thực thi Staments  trong

khi Expression  đúng 

Do Until <Expression><Statements>

Loop

Thực thi Staments  cho

đến khi Expression  đúng thì dừng lại TD: Tìm USLN của 2 số a & b 

Do While (a Mod b <>0)

r = a Mod ba = b

b = r

Loop

UCLN = b

TD: Tìm USLN của 2 số a & b

Do Until (a Mod b=0)

r = a Mod ba =b

b= r

Loop

UCLN = b

28

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 29/184

VÒNG LẶP FOR

Lặp xác định chính xác số lần lặp. 

For variable = expression1 To expression2 [Step expression ]

Statements 

Next [ variable_list ]

TD: Tính n! 

Dim i As Integer , K As Long = 1

For i = 1 To n 

K = K * i 

Next 

29

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 30/184

VÒNG LẶP FOR EACH

Lặp qua một tập hợp các giá trị. For Each variable In expression 

Statements Next [ variable ]

TD: Dùng For Each đi qua toàn bộ các phần tử của 1 mảng.Dim a( ) As Integer = {1, 2, 3, 4, 5}Dim b As IntegerFor Each b In a

System.Console.WriteLine(b)

Next

30

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 31/184

BÀI 3: THƢ VIỆN LỚP CƠ SỞ .NET

31

- Mô tả về thư viện lớp cơ sở .NET.

- Thiết lập một tham chiếu đến không giantên.- Tạo  một  thể  hiện  của 1 lớp  của .NET

Framework hay của1 kiểu giá trị.

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 32/184

KHÔNG GIAN TÊN (NAMESPACE)

Các thư viện lớp được tổ chức trong không gian tên; đây làmột nhóm các lớp có liên quan với nhau.

TD: System.Windows.Forms  là kgt chứa các lớp  tạo nêncửa sổ và các thành phần trên cửa sổ của trình ứng dụng.

Kgt của .NET Framework được tổ chức phân cấp với gốc làkgt System.

Một  số kgt trong .NET Framework: System,System.Collections, System.ComponentModel,System.Data, System.Drawing, System.IO, System.Math,

System.Reflection, System.Security, System.Threading,System.Windows.Forms … 

32

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 33/184

KHAI BÁO BIẾN KIỂU THAM CHIẾU

Gồm 2 bước: khai báo và khởi tạo đối tượng 

TD: Khai báo biến đối tượng thuộc  lớp Form trongSystem.Windows.Forms

Dim f As System.Windows.Forms.Formf = New System.Windows.Forms.Form()

33

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 34/184

CÂU LỆNH IMPORTS

Dùng để tham chiếu đến namespace nào đó.

 Đặt ở đầu module chương trình.

Làm viết gọn trong việc truy xuất đến 1 lớp của namespace.

TD: Giả sử đầu module nào đó ta viết:

Imports System.Windows.Forms

ta chỉ cần khai báo biến đối tượng Form trong module đó 

Dim f As Form

f = New Form()

34

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 35/184

BÀI 4: LỚP

Nội dung chính:

Tạo 1 lớp mới. 

Tạo một thể hiện (đối tượng) của 1 lớp. 

35

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 36/184

KHÁI NIỆM LỚP

Những  thuộc tính và hành động chung của cácthực thể được nhóm lại để tạo nên 1 đơn vị duy nhất là lớp.

TD: Lớp Con người có các thuộc tính và hành động sau:

- Tên- Chiều cao- Màu tóc.- Nói năng 

- Viết ….

Những  thuộc tính và hành động chung gọi là thànhviên (member)

36

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 37/184

KHÁI NIỆM ĐỐI TƢỢNG

Một đối tượng là một trường hợp cụ thể của một lớp. TD: Đối tượng 1 con người thực tế của lớp Con người:

- Tên: Đan Tú

- Tuổi: 29

- Trọng lượng: 46 kgHành động:

- Đi - Nói

- Suy nghĩ  

37

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 38/184

TẠO MỘT LỚP MỚI

Sử dụng từ khóa ClassClass <Tên lớp> 

<Các thành viên của lớp> 

End Class

TD: Khai báo lớp PersonClass Person

Public Name As String

Public Age As Integer

Public Weight As SingleEnd Class

38

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 39/184

TẠO ĐỐI TƢỢNG TỪ LỚP

Việc  tạo 1 đối  tượng chính là khai báo vàkhởi tạo biến đối tượng từ lớp.

TD: Tạo đối tượng p thuộc lớp Person 

Dim p As Person

p = New Person()

Dim p As New Person()

39

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 40/184

PHƢƠNG THỨC (METHOD)

Các hành động của  lớp được  thể hiện qua phương thức (chương trình con).

Trong VB.NET, phương  thức có 2 loại: hàm(Function) và thủ tục (Sub).

Khai báo hàm:

[Public | Private | Friend | Protected] Function _ 

<Tên hàm>(<Khai báo các tham số>) _ 

As <Kiểu trả về> 

<Các khai báo và câulệnh

 định

 nghĩa

hàm>End Function

<Khai báo các tham số>: giống như khai báo biến.

Lời gọi hàm thực thi là 1 biểu thức:

<Tên hàm>(Danh sách tham số thực tế)  40

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 41/184

PHƢƠNG THỨC (METHOD)

Khai báo thủ tục: [Public | Private | Friend | Protected] Sub _ 

<Tên thủ tục> (<Khai báo các tham số>) <Các khai báo và câu lệnh định nghĩa thủ tục> 

End Sub 

Gọi thực thi thủ tục <Tên thủ tục> (<Danh sách tham số thực tế>)  TD:

Public Sub MySub()MessageBox.Show(“Thi du ve Sub") 

End Sub Function Add(ByVal first As Integer, ByVal second As _ Integer) As Integer 

 Add = first + secondEnd Function

41

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 42/184

TRUYỀN THAM SỐ CHO PHƢƠNG THỨC

2 cách truyền tham số:

Truyền theo giá trị: mặc  định hay từ 

khóa ByVal. Truyền theo địa chỉ: từ khóa ByRef.

42

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 43/184

THÍ DỤ TRUYỀN THAM SỐ 

Public Sub Demo1()Dim x, y As Integer x = 15y = 20' Gọi phương thức Demo2 Demo2(x, y)' x=? y= ?MessageBox.Show("X = " & x.ToString & "Y = " & _ 

y.ToString)

End Sub

Public Sub Demo2(ByVal p1 As Integer, ByRef p2 As _

Integer)p1 = p1 + p2p2 = p2 + p1

End Sub

43

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 44/184

PHƢƠNG THỨC XÂY DỰNG

Là phương  thức được gọi  thực hiện đầu tiên mỗi khi 1 đối  tượng của 1 lớp được tạo ra.

Trong VB.NET, phương thức xây dựng luôn là Sub New() TD:

Class Person

Public Name As StringPublic Age As IntegerPublic Weight As SinglePublic Sub New() „ Phƣơng thức xây dựng 

Name =“” 

Age = 0Weight = 0End Sub

End Class 

44

Ứ Ủ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 45/184

PHƢƠNG THỨC HỦY

Là phương thức được gọi thực hiện cuối cùng khi đối tượng bị thu hồi.

Phương thức này có nhiệm vụ giải phóng tài nguyên được dùngcho đối tượng.

Trong VB.NET, phương  thức này phải là Overrides Sub

Finalize()  TD:

Class Person

… 

Protected Overrides Sub Finalize()

‘ Thu hồi các thuộc tính

Name = “” 

End Sub

End Class 

45

ƢƠ Ệ ƢỜ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 46/184

CHƢƠNG 2: GIAO DIỆN NGƢỜI DÙNG(USER INTERFACE)

 Tạo giao diện người dùng.

 Lập trình hướng  sự  kiện (EventProgramming).

 Sử dụng cửa sổ (biểu mẫu, Form).

 Sử dụng các điều khiển (Controls) khác để thiết kế giao diện.

46

Ậ Ự Ệ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 47/184

BÀI 1: LẬP TRÌNH SỰ KIỆN (EVENTPROGRAMMING)

 Các tập tin của 1 ứng dụng VB.NET. 

 Sự kiện & lập trình hướng sự kiện 

47

Ủ Ứ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 48/184

CÁC TẬP TIN CỦA 1 ỨNG DỤNG WINDOWS FORM

 Ứng dụng  thiết kế & lập trình được quản lý trong VB.NETbằng Solution.

1 Solution có thể chứa nhiều dự án (Project).

Các tập tin khi tạo 1 ứng dụng VB.NET:

48

*.sln Tập tin Solution (văn bản) 

*.vb Tập tin chứa định nghĩa về form & mã lệnh bên trong đó 

*.resx Tập tin tài nguyên*.vbproj Tập tin dự án

… Các tập tin khác

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 49/184

TẠO ỨNG DỤNG WINDOWS FORM

49

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 50/184

 

50

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 51/184

 

51

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 52/184

LẬP TRÌNH SỰ KIỆN (EVENT PROGRAMMING)

 Sự kiện (event): là hành động của người dùng tácđộng vào ứng dụng đang thực thi.

TD: Nhấn phím bất kỳ trên bàn phím.

Nhấp chuột.  Khả năng đáp ứng  lại sự kiện của ứng dụng phụ 

thuộc người lập trình.

 Người  lập trình phải viết đoạn mã lệnh, đoạn  lệnh 

này sẽ thực thi khi sự kiện tương ứng xảy ra.TD: Máy tính Calculator, trình vẽ Paint.

52

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 53/184

53

Mã lệnh cho sự kiện Click của Ghi đĩa 

…………………………………… Mã lệnh cho sự kiện Click của In giấy 

…………………………………… 

…………………………………… 

 Vấn đề gì xảy ra nếu: 

- Người dùng không tác động gì vào ứng dụng? 

- Người dùng nhập dữ liệu vào các ô nhập? 

- Người dùng nhấp chọn Ghi đĩa?

- Người dùng nhấp chọn In giấy?

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 54/184

BÀI 2: CỬA SỔ (BIỂU MẪU, FORM)

 Khái niệm biểu mẫu. 

 Thêm biểu mẫu vào ứng dụng. 

 Thiết lập startup form & vị trí form lúcstartup.

 Các thuộc tính, phương thức, sự kiện củabiểu mẫu. 

54

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 55/184

CỬA SỔ (BIỂU MẪU, FORM)

Là cửa sổ được  lập trình để hiển thị dữ  liệu &nhận thông tin phía người dùng.

Thêm biểu mẫu vào dự án (khi thiết kế):- Trên mục menu Project, chọn Add WindowsForm. Hộp thoại Add New Item bật ra.- Chọn Windows Form, nhấp Open. 

Thêm biểu  mẫu  bằng mã lệnh: Khai báo vàkhởi tạo đối tượng biểu mẫu.TD: Dim f As DialogForm

f = New DialogForm()

55

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 56/184

BIỂU MẪU THỪA KẾ (INHERITED FORM)

Là biểu mẫu được tạo ra và kế thừa các thuộc tính, phương thức, sự kiện của biểu mẫu cha.

Thêm biểu mẫu thừa kế vào ứng dụng (bằng mã lệnh):- Thêm 1 biểu mẫu vào ứng dụng.

- Cho biểu mẫu này thừa kế 1 biểu mẫu cha nào đó bằng cáchsử dụng từ khóa Inherits trong khai báo lớp.

TD: Tạo biểu mẫu myForm thừa kế từ biểu mẫu MainForm:

Public Class myForm

Inherits MainForm

‘ Cài đặt của lớp myFormEnd Class

56

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 57/184

BIỂU MẪU - THUỘC TÍNH

 Thuộc tính: đặc tính tạo nên vẻ  bề ngoài của điều khiển.- BackColor: màu nền.- ForeColor: màu chữ.

- Text: Tiêu đề biểu mẫu.- Font: Font chữ của biểu mẫu.

…………….. Ta có thể  thiết  lập các thuộc tính này bằng mã

lệnh hay nhờ vào cửa sổ thuộc tính.TD: Me.BackColor = System.Drawing.Color.Red

57

Ế Ậ Ộ Ằ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 58/184

THIẾT LẬP THUỘC TÍNH BẰNGCỬA SỔ THUỘC TÍNH

58

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 59/184

BIỂU MẪU – PHƢƠNG THỨC

Form.Show : thể hiện form lên màn hình. Form.ShowDialog : thể hiện form lên màn hình hình dạng Dialog.

Form.Activate : form được kích hoạt (active)

Form.Hide : ẩn form đi. Form.Close : đóng lại form và giải phóng tài nguyên.

TD:

Dim myForm As New DialogForm()

myForm.Show() ‘ Thể  hiện Form trạng thái bình thường 

myForm.ShowDialog() ‘ Thể  hiện Form dạng Dialog

myForm.Activate()

myForm.Hide()

myForm.Close()

59

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 60/184

BIỂU MẪU - SỰ KIỆN (EVENT)

 Tạo đoạn mã xử lý sự kiện trong VB.NET:

60

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 61/184

BIỂU MẪU - SỰ KIỆN (EVENT)

Load  : Xảy ra khi thể hiện đầu tiên của Form được Load lênmàn hình.

Activated : Xảy ra khi Form được kích hoạt. Deactivated : Xảy ra khi Form mất kích hoạt. VisibleChanged  : Xảy ra khi Form có thay đổi  trạng thái

(ẩn/hiện). Closing : Xảy ra khi Form đang trong quá trình đóng lại. Closed : Xảy ra sau sự kiện Closing.

Lƣu ý: 

- Sự kiện Load  được sử dụng để khởi tạo giá trị của các thành

phần trong Form.

- Sự kiện Closing & Closed  thường được sử dụng để thu hồi tàinguyên được cấp phát cho Form.

61

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 62/184

THÍ DỤ XỬ LÝ SỰ KIỆN CỦA FORM

 Giả  sử ta muốn  ngăn thao tác đóng Formcủa người dùng:

Sự kiện Form_Closing(), ta thiết lập:

CancelEventArgs.Cancel = TruePrivate Sub myForm_Closing(ByVal sender As Object, _ 

ByVal e As System.ComponentModel.CancelEventArgs) _ 

Handles MyBase.Closing

e.Cancel = TrueEnd Sub

62

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 63/184

BÀI 3: CÁC ĐIỀU KHIỂN TRONG VB.NET

Khái niệm điều khiển.

 Một số thao tác với các điều khiển khi thiết kế ứng dụng.

 Một số điều khiển thường sử dụng.

63

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 64/184

ĐIỀU KHIỂN (CONTROL)

  Điều  khiển: Các thành phần có sẵn  để  tạo giaodiện tương tác với người dùng.

 Một số điều khiển: Label, TextBox, Button, ListBox,

ComboBox, OptionButton, CheckBox, PictureBox… 

64

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 65/184

ĐIỀU KHIỂN NHÃN - LABEL

Dùng để hiển thị dữ liệu cho người dùng. Thuộc tính:

- Name: Tên của Label

- Text: Chuỗi hiển thị trên Label.

- BorderStyle: Kiểu  viền  của  điều  khiển Label (None, FixedSingle, Fixed3D)

- Image: hình ảnh của Label 

TD: Thay đổi Text của Labelcó Name là lblTest1 thành „None‟:lblTest1.Text = “None” 

65

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 66/184

ĐIỀU KHIỂN Ô NHẬP LIỆU - TEXT BOX

Dùng để nhận/hiển thị dữ liệu về phía người dùng. Thuộc tính:

- Name: Tên của ô nhập liệu TextBox.

- Text: Chuỗi hiển thị trên ô nhập liệu TextBox.

- Multiline: TextBox có nhận  nhiều dòng văn  bản haykhông? (Mặc định giá trị này là False).

- CharacterChasing: tự động chuyển đổi dữ  liệu nhập của TextBox thành dạng tương ứng (Normal, Upper, Lower).

- PasswordChar: Ký tự hiển thị thay thế khi nhập.- Font: Font chữ của TextBox

66

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 67/184

ĐIỀU KHIỂN Ô NHẬP LIỆU - TEXT BOX

Sự kiện:- KeyPress: Xảy ra khi người dùng nhấn phím có mã Asciitừ bàn phím.

 Để kiểm chứng ký tự người dùng nhập  từ bàn phímngười ta sử  dụng 1 số hàm Char.IsDigit, Char.IsLetter ,

Char.IsLetterOrDigit , Char.IsPunctuation  , Char.IsLower  ,Char.IsUpper.TD: Sự kiện KeyPress 

Private Sub TextBox1_KeyPress ( ByVal sender As Object, ByVal e As _

System.Windows.Forms.KeyPressEventArgs) Handles _

TextBox1.KeyPress 

If Char.IsDigit(e.KeyChar) = True ThenMessageBox.Show("You pressed a number key") 

End If

End Sub

67

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 68/184

ĐIỀU KHIỂN Ô NHẬP LIỆU - TEXT BOX

Sự kiện Validating:- Xảy ra trước khi TextBox mất kích hoạt, dùng để kiểm tra dữ liệu nhập có hợp lệ hay không?- Chỉ  thực  hiện khi người  lập trình thiết  lập  thuộc tínhCausesValidation của Text Box là True.

TD:Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As _ 

System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

' Kiểm tra giá trị của TextBox

If TextBox1.Text = "" Then

' Bắt buộc TextBox phải nhập lại, TextBox phải được kích hoạt e.Cancel = True

End If

End Sub 

68

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 69/184

ĐIỀU KHIỂN NÚT NHẤN - BUTTON

Dùng để xác nhận 1 hành động hay thao tác của người dùng.

 Thuộc tính:

- Name: Tên của Button.

- Text: Chuỗi hiển thị trên Button.

- Image: Hình ảnh trên Button.

- FlatStyle: Hình dạng  của Button (Flat, Popup,Standard, and System.)

- Font: Xác lập Font chữ cho Button.

69

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 70/184

ĐIỀU KHIỂN NÚT NHẤN - BUTTON

 Sự kiện 

- Click: Xảy ra khi người dùng nhấp chuột vào Button.

TD: Tính N! với N nhập từ bản phím.

70

Sự kiện Button_Click() Private Sub btnTinh_Click(ByVal sender As System.Object, _ 

ByVal e As System.EventArgs) Handles btnTinh.Click 

Dim N, i As Integer, K  As Long = 1

N = CInt(txtN.Text)

For i = 1 To NK = K * i

Next

lblKQ.Text = CStr(K)

End Sub

ĐIỀU KHIỂN DANH SÁCH LỰA CHỌN -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 71/184

LISTBOXES

 Sử  dụng  để  hiển  thị  một danh sách cho người dùng lựa chọn.

WinForms hỗ trợ 2 loại list box:

- ListBox

- CheckedListBox

 Sự khác biệt chính là những  phần  tử  của CheckedListBox được hiển  thị có dấu check trước đó.

71

ĐIỀU KHIỂN DANH SÁCH LỰA CHỌN -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 72/184

LISTBOX

Thuộc tính 

- Items: tập các phần tử trong ListBox.

- SelectedIndex: xác định chỉ số của mục đang hiện thời được chọn trong ListBox, phần tử đầu tiên có chỉ số 0.

- SelectedItems: tập các mục đang được chọn.

- SelectedValue: giá trị của mục đang được chọn.

- Text: chuỗi trên mục được chọn.

Phƣơng thức 

- ClearSelected: xóa hết các lựa chọn trên ListBox.- FindString: tìm mục đầu tiên trong danh sách mà phần tử đó có giá trị bắt đầu là một chuỗi cho trước. 

72

Ề Ể Ự Ọ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 73/184

ĐIỀU KHIỂN DANH SÁCH LỰA CHỌN -LISTBOX

 Sự kiện 

- SelectedIndexChanged: xảy rakhi giá trị  của  thuộc tínhSelectedIndex thay đổi.

- SelectedValueChanged: xảy rakhi giá trị  của  thuộc tínhSelectedValue thay đổi.

TD: Sử  dụng  thuộc tính đối tượng Items để thêm các mục 

vào ListBox. Xử lý sự kiện Loadcủa Form để viết mã lệnh xử lý.

73

ĐIỀU KHIỂN DANH SÁCH LỰA CHỌN -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 74/184

LISTBOX

Private Sub myForm_Load(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ 

Handles MyBase.LoadMe.lstTen.Items. Add("Nguyễn Văn Cường") Me.lstTen.Items.Add("Lâm Quang Hà")Me.lstTen.Items. Add("Trần Trung Trực") Me.lstTen.Items.Add("Lê Quang Trãi")

End Sub

Ngoài ra thuộc tính đối tượng Items còn có một số thuộc tính & phương  thức khác: Count, Clear,Insert, RemoveAt, Item… 

74

ĐI U KHI N DANH S CH LỰA CHỌN -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 75/184

Ự ỌCHECKEDLISTBOX

CheckedListBox cũng hỗ trợ các thuộc tính, phương thức, sự kiện giống như ListBox; bên cạnh đó điều khiển này còncó những đặc điểm riêng:

 Thuộc tính

- CheckedIndies: tập các chỉ số của các phần tử được lựa chọn (checked).

- CheckedItems: tập  hợp các phần  tử  được  chọn (checked).

TD: Cho hình bên, ta có:

- CheckedIndies={1,2}

- CheckedItems={Lâm Quang Hà,

Trần Trung Trực} 

75

ĐI U KHI N DANH S CH LỰA CHỌN -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 76/184

Ự ỌCHECKEDLISTBOX

 Phƣơng thức 

- SetItemChecked: thiết lập mục có chỉ số xác định được chọn (checked).

- SetItemCheckState: xác lập  trạng thái checked của 1

mục xác định. TD: Sử dụng phương thức SetItemCheckState

76

Sự kiện Click của Button Trạng thái  

Me.lstNuoc.SetItemCheckState(1, _ 

CheckState.Checked)Me.lstNuoc.SetItemCheckState(2, _ 

CheckState.Indeterminate)Me.lstNuoc.SetItemCheckState(3, _ 

CheckState.Unchecked)

ĐIỀU KHIỂN HỘP DANH SÁCH -

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 77/184

COMBOBOX

Là điều  khiển  kết  hợp  giữa 2 điều  khiển TextBox &ListBox.  Điều  khiển này hỗ  trợ các tính năng  như ListBox; tuy nhiên chúng vẫn có phần mở rộng so với ListBox.

Thuộc tính- DropDownStyle: kiểu  của ComboBox, gồm cóSimple, DropDownList & DropDown.

77

Simple DropDown DropDownList

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 78/184

ĐIỀU KHIỂN LISTVIEW

Cho phép hiển  thị một danh sách các phần  tử ở dạng  thức đặc biệt. ListView có 4 kiểu sau:

- Text only: mặc định.

- Text with small icon.

- Text with large icon.

- Detail view: các phần tử hiển thị nhiều cột. ListView kế thừa các tính năng của CheckedListBox.

Thuộc tính

- CheckBoxes: mỗi  phần  tử trong ds có 1 checkbox đứng 

trước.- Items: tập các phần tử trong ds.

- MultiSelect: ds có nhiều lựa chọn không?

78

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 79/184

LISTVIEW - THÍ DỤ 

79

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 80/184

LISTVIEW - THÍ DỤ 

Dim lsvTen As New ListViewlsvTen.Width = 300lsvTen.Height = 200' Hiển thị chi tiết lsvTen.View = View.Details' Sửa giá trị của Text 

lsvTen.LabelEdit = TruelsvTen.FullRowSelect = True' Hiển thị lưới lsvTen.GridLines = TrueDim item1 As New ListViewItem("Nguyễn Văn An", 0) item1.SubItems.Add("1")

item1.SubItems.Add("2")item1.SubItems.Add("3")

80

Dim item2 As New ListViewItem("Lê Chí Công" 1)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 81/184

  Dim item2 As New ListViewItem( Lê Chí Công , 1)item2.SubItems.Add("4")item2.SubItems.Add("5")item2.SubItems.Add("6")

Dim item3 As New ListViewItem("Huỳnh Văn Hảo", 0) item3.SubItems.Add("7")item3.SubItems.Add("8")item3.SubItems.Add("9")' Tạo các cột cho các mục  lsvTen.Columns.Add("Họ tên", -2, HorizontalAlignment.Left)lsvTen.Columns.Add("Toán", -2, HorizontalAlignment.Left)

lsvTen.Columns.Add("Lý", -2, HorizontalAlignment.Left)lsvTen.Columns.Add("Hóa", -2, HorizontalAlignment.Center)‘ Thêm các mục vào ListView  lsvTen.Items.AddRange(New ListViewItem() _ 

{item1, item2, item3})

81

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 82/184

ĐIỀU KHIỂN TREEVIEW

Cho phép hiển thị dữ liệu ở dạng phân cấp. TreeView hỗ trợ hầu hết các thuộc tính, phương thức & sự 

kiện của ListView.  Thuộc tính

- ImageList: ds các ảnh được hiển thị ở mỗi nút.- Nodes: ds các nút.

- SeletedNode: nút hiện thời được lựa chọn.  Phƣơng thức 

- GetNodeAt: truy xuất 1 nút ở vị trí xác định trong TreeView.- GetNodeCount: tổng số nút.

 Sự kiện 

- BeforeSelect, AfterSelect: xảy ra trước/sau khi 1 nút được chọn.- BeforeCollapse, AfterCollapse: xảy ra trước/sau khi thu hẹp 1nút.- BeforeExpand, AfterExpand: xảy ra trước/sau khi 1 mở  rộng 1nút.

82

Ề Ể Ụ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 83/184

ĐIỀU KHIỂN TREEVIEW - THÍ DỤ 

 Hiển  thị 10 kháchhàng, mỗi kháchhàng có 5 đơn  đặt hàng.

 Thiết  kế các lớp Khách hàng &  Đặt 

hàng.  Tạo TreeView như 

hình

83

Public Class Customer Public Class Orders

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 84/184

Public CustomerName As String

Public CustomerOrder As _ ArrayList

Public Sub New(ByVal Name _ As String)

CustomerName = Name

CustomerOrder = New _ 

ArrayList(0)

End Sub

End Class

84

Public Class OrdersPublic OrderID As StringPublic Sub New(ByVal _ 

id As String)

OrderID = idEnd Sub

End Class

Sự kiện Load của Form được xử lý 

Dim customerArray As New ArrayList' Thêm khách hàngDim x As IntegerFor x = 0 To 9

customerArray.Add(New Customer("Customer " + x.ToString()))Next x

„ Thêm đơn đặt hàng 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 85/184

gDim customer1 As CustomerFor Each customer1 In customerArray

Dim y As Integer

For y = 0 To 4customer1.CustomerOrder.Add(New Orders("Order" + y.ToString()))Next y

Next customer1' Xóa TreeView

TreeView1.Nodes.Clear()

' Tạo các nút cha là các khách hàng 

For Each customer1 In customerArrayTreeView1.Nodes.Add(New TreeNode(customer1.CustomerName))' Các nút con là các đơn đặt hàng Dim order1 As Orders

For Each order1 In customer1.CustomerOrderTreeView1.Nodes(customerArray.IndexOf(customer1)).Nodes.Add( _ 

New TreeNode(customer1.CustomerName + ".“ + order1.OrderID)) Next order1

Next customer1

85

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 86/184

ĐIỀU KHIỂN CHECKBOX

 Được sử dụng để nhận thông tin dạng Yes/No. Thuộc tính

- Checked: Xác định  điều  khiển  đang  ở  trạng thái nào(True/False).

Sự kiện 

- CheckedChanged: Xảy ra khi giá trị của thuộc tính Checked bị thay đổi.

86

Private Sub chkDam_CheckedChanged(ByVal sender _  As System.Object, ByVal e As System.EventArgs) _ 

Handles chkDam.CheckedChanged

If Me.chkDam.Checked Then

Me.txtTen.Font = New Font("Arial", 9.0!, _ System.Drawing.FontStyle.Bold)

ElseMe.txtTen.Font = New Font("Arial", 9.0!, _ 

System.Drawing.FontStyle.Regular)End If 

End Sub

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 87/184

ĐIỀU KHIỂN RADIO BUTTON

87

- Là điều khiển cho phép nhận dữ   liệu Yes/No,nhưng các radio button cùng 1 nhóm thì khôngthể  chọn đồng thời.

- Các thuộc tính, phương thức, sự  kiện tương tự  CheckBox.

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 88/184

ĐIỀU KHIỂN NHÓM - GROUPBOX

Là điều khiển được dùngđể nhóm các điều  khiển khác.

 Thuộc tính:

- Text: Chuỗi trên tiêu đề của GroupBox.

 TD (h ình bên)

88

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 89/184

ĐIỀU KHIỂN PICTURE BOX

 Được sử dụng để hiển thị hình ảnh.

Thuộc tính

- Image: Xác định hình ảnh cần hiển thị.

- SizeMode: xác định cách thức  ảnh  được  hiển  thị (AutoSize, CenterImage, Normal, StretchImage)

Sự kiện 

- SizeModeChange: xảy ra khi thuộc tính SizeModethay đổi giá trị.

89

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 90/184

ĐIỀU KHIỂN IMAGELIST

Dùng để lưu các hình ảnh và cho phép chúnghiển thị ở các điều khiển khác nhau.

Thuộc tính

- Images: tập hợp các ảnh của ImageList.

- ImageSize: kích thước của các ảnh có trongImageList.

Phƣơng thức 

- Draw: vẽ một ảnh xác định.

90

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 91/184

ĐIỀU KHIỂN TIMER

Là điều khiển đáp ứng lại sự trôi đi của thời gian.

Thuộc tính

- Enabled: cho phép điều khiển thời gian thực thi.

- Interval: Khoảng thời gian giữa 2 sự kiện. Phƣơng thức 

- Start: khởi động điều khiển thời gian.

- Stop: ngưng điều khiển thời gian.

Sự kiện - Tick: Xảy ra sau 1 khoảng  thời gian được chỉ trongInterval

91

Ề Ể Ụ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 92/184

ĐIỀU KHIỂN TIMER - THÍ DỤ 

 Thiết kế ứng dụng cho phép hiển thị đồng hồ số. 

Thuộc tính: Enable = TrueInterval=1000

Xử lý sự kiện Tick Private Sub Timer1_Tick(ByVal sender As System.Object, _ 

ByVal e As System.EventArgs) Handles Timer1.TickMe.lblTG.Text = CStr(Now ) „ Now : hàm lấy thời gian 

End Sub

92

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 93/184

BÀI 4: CÁC ĐIỀU KHIỂN KHÁC

 Hộp thoại (Dialog). 

 Hộp thông điệp (MessageBox) 

93

Ộ Ạ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 94/184

HỘP THOẠI (DIALOGBOX)

Là 1 cửa sổ tạm chứa các điều khiển khác để tương tác giữa ứng dụng và người sử dụng.

 Đặc điểm - Kích thước của hộp thoại không thể thay đổi.

- Hộp thoại không chứa menu. Các loại hộp thoại 

- Modal: hiển thị thông điệp & người dùng không thể chuyển đổi sang các cửa sổ khác khi hộp  thoại còntồn tại.

- Modaless: ta có thể  chuyển  đổi sang các cửa  sổ khác dễ dàng.

94

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 95/184

OPEN FILE DIALOG

 Đây là hộp thoại mở tập tin. 

95

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 96/184

FONT DIALOG

96

Đây là hộp thoại cho phép chọn Font. 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 97/184

COLOR DIALOG

97

Đây là hộp thoại cho phép chọn màu từ bảng màu củahệ thống. 

HỘP THÔNG ĐIỆP - MESSAGEBOX

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 98/184

Ộ Ệ

Dùng để hiển thị thông báo. Cách sử dụng:

MessageBox.Show(“[Thông điệp]”)  Ta có thể sử dụng Show như 1 hàm, kết quả  trả về 

(DialogResult) của hàm có thể có các giá trị: Abort,Cancel, Inorge, No, None, OK, Retry, Yes.

MessageBox.Show(s1 As String, s2 As String, _ 

btns As MessageBoxButton, icns As _  

MessageBoxIcon) As DialogResults1: Thông điệp cần hiển thị.s2: Tiêu đề của hộp thông điệp.

98

Ộ Ệ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 99/184

HỘP THÔNG ĐIỆP - MESSAGEBOX

MessageBoxButton: AbortRetryInorge, OK, OKCancel,RetryCancel, YesNo, YesNoCancel.

MesageBoxIcon: Asterisk, Error, Exclamation, Hand,Information, None, Question, Stop, Warning.

 TD:MessageBox.Show("Chào mừng bạn làm quen với hộp _ 

thông điệp", "Thông báo", MessageBoxButtons.YesNoCancel, _ 

MessageBoxIcon.Information)

99

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 100/184

BÀI 5: MENU

Tạo menu với MainMenu.

Tạo menu ngữ cảnh với ContextMenu.

Xử lý sự kiện của các mục của menu

Tạo menu bằng mã lệnh 

100

MENU - KHÁI NIỆM

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 101/184

Menu là một  loại điều khiển trong đó người dùng có thể  lựa chọn các mục để thực thi từ một danh sách cho trước.

Phân loại 

- Menu thả  xuống (Drop-Down Menu): là dạng menu

thông dụng nhất.- Menu bật ra (Pop-Up Menu, ContextMenu): thường 

hiển thị khi ta ấn nút phải chuột.

101

DROPDOWN MENU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 102/184

Tạo menu nhờ vào điều khiển MainMenu.

Các bước tạo menu:

- Tạo menu mới và menu bar.

- Thêm các mục menu con vào menu đã có.- Sửa đổi   lại các  thuộc  tính của menu và các mục menu.

-  Xử lý sự  kiện Click của các mục menu con. 

102

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 103/184

DROPDOWN MENU - THÍ DỤ 

103

Ề Ể

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 104/184

ĐIỀU KHIỂN MAIN MENU

MainMenu: hiển  thị 1 menu khi ứng  dụng được thực thi. Các menu con của MainMenu glMenu.

MenuItem: mục cụ thể của 1 Menu xác định.

Thuộc tính- IsParent: True nếu mục menu này là cha của các mục menu con nào đó.- MenuItems: tập hợp các mục menu con.

Phƣơng thức - MergeMenu: ghép các mục menu con của 1menu xác định vào menu hiện hành.

104

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 105/184

MENUITEM

Thuộc tính- Checked: là True  nếu có dấu   trước  mục menu con.- Index: vị trí của menu con trong 1 menu xác

định.- Shortcut: xác lập phím tắt.- Parent: tên (Name) của menu cha.- Text: chuỗi hiển thị trên mục menu.

Sự kiện - Click: Xảy ra khi người dùng Click chọn mục menu.

105

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 106/184

Private Sub MenuItem4_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MenuItem4.ClickMessageBox.Show("Bạn chọn File/Save", "Thông báo") 

End Sub

Private Sub MenuItem5_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MenuItem5.ClickEnd

End Sub

106

CONTEXT MENU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 107/184

Là điều  khiển cho phép người dùng truy cập các mục trên menu nhờ thao tác nhấp chuột phải. Sau khi ContextMenu được  tạo ra, chúng sẽ được gắn 

với  một  điều  khiển khác nhờ vào thuộc tínhContextMenu của điều khiển đó.

TD tạo ContextMenu & thiết lập thuộc tính ContextMenucủa FormPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e _ 

As System.EventArgs) Handles _ MyBase.Load

Me.ContextMenu = ContextMenu1End Sub

107

TẠO MENU BẰNG MÃ LỆNH

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 108/184

Ta có thể thêm hay xóa đi một mục menu (MenuItem) của 1 menu nào

đó nhờ vào các phương thức Add & Remove. TD: Xử lý sự kiện Load của Form bằng đoạn mã lệnh tạo menu:Private Sub Form2_Load(ByVal sender As System.Object, ByVal e _ 

As System.EventArgs) Handles MyBase.LoadDim myMainMenu As New MainMenu

Dim FileMenu As New MenuItemDim NewItem As New MenuItem

Dim OpenItem As New MenuItemNewItem.Text = "&New"

OpenItem.Text = "&Open..."FileMenu.Text = "&File"FileMenu.MenuItems.Add(NewItem)FileMenu.MenuItems.Add(OpenItem)myMainMenu.MenuItems.Add(FileMenu)

Me.Menu = myMainMenuEnd Sub

108

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 109/184

TD xóa 1 mục menu Dim kq As New DialogResultkq = MessageBox.Show("Bạn muốn xóa mục New không?", "Xóa", _  

MessageBoxButtons.YesNo)If kq = DialogResult.Yes Then

FileMenu.MenuItems.RemoveAt(0)End If

109

KẾT QUẢ THÍ DỤ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 110/184

110

CHƢƠNG 3: CÁC KIỂU DỮ LIỆU & BẪY LỖI

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 111/184

ƢƠ Ữ Ệ ỖTRONG VB.NET

Cách thức sử dụng các kiểu dữ liệu.

Một số kiểu mở rộng: liệt kê, mảng, tập hợp.

Bẫy lỗi (Error Handler) trong VB.NET.

111

BÀI 1: SỬ DỤNG CÁC KIỂU DỮ LIỆU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 112/184

Ụ Ệ

Các kiểu dữ liệu của .NET Framework.

Một số hàm thao tác trên các giá trị các kiểu 

cũng như các hàm xử lý chuỗi 

112

CÁC KIỂU CỦA .NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 113/184

Chia làm các loại: số nguyên, số  thực, luận lý, ký tự.

Kiểu số nguyên:

113

Kiểu .NET  Kiểu VB.NET  Miền g. trị System.Byte Byte 0..255

System.Int16 Short -32768..32767

System.Int32 Integer -231..231-1

System.Int64 Long -263..263-1

CÁC KIỂU CỦA .NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 114/184

Kiểu số thực 

114

Kiểu

.NET

Kiểu

 VB.NET

Mô tả  Độ chính

 xác

Miền g. trị 

System.

Single

Single 32 bit 7 ký số  +/-1.4*10-45.. +/-3.4*1038 

System.

Double

Double 64 bit 15-16 ký

số 

+/-5.0*10-324.. +/-

1.7*10308 System.Decimal

Decimal 128 bit 28 ký số  +/-1.0*10-28.. +/-7.9*1028 

CÁC KIỂU CỦA .NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 115/184

Kiểu luận lý: Kiểu của .NET là System.Boolean ứng với kiểu Boolean của VB.NET với 2 giá trị là True vàFalse.

Kiểu ký tự: Kiểu của .NET là System.Char ứng với 

kiểu Char của VB.NET (16 bit - Unicode).Trong VB.NET một  hằng ký tự  được  đặt trong cặp dấu ngoặc kép với ký tự c đằng sau.

TD: Dim a As Char

a = “B”c 

115

CÁC KIỂU CỦA .NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 116/184

Kiểu  chuỗi ký tự: Kiểu .NET là System.String ứng với String trong VB.NET.Trong VB.NET, hằng  chuỗi  được  đặt trong cặp  dấu ngoặc kép.TD: Dim s As String

s = “Tin Học K30”  Kiểu đối tƣợng: Kiểu .NET là System.Object tương 

ứng với Object trong VB.NET. Đây là kiểu gốc cho tất cả các kiểu trong VB.NET.TD: Dim o As Object

o = 5o = New System.Windows.Forms.Form()

116

KIỂU DỮ LIỆU - HÀM THÀNH VIÊN

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 117/184

Parse: hàm có ở các kiểu giá trị. Hàm này cho phéptạo ra một giá trị số từ một chuỗi. 

TD: Dim d As Integer 

d = Integer.Parse(“12345”) „ d là 12345 

System.Console.WriteLine(CStr(d)) ToString: chuyển đổi giá trị sang dạng chuỗi. 

TD: Dim a As Integer, s As String

a = 1234

s = a.ToString()

System.Console.WriteLine(s)

117

KIỂU DỮ LIỆU - HÀM THÀNH VIÊN

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 118/184

Các hàm xử lý chuỗi 

118

Hàm  Ý nghĩa 

Insert Chèn chuỗi cho trước vào chuỗi hiện hành 

Remove Xóa một số ký tự được chỉ định. 

Replace Thay thế chuỗi con trong chuỗi gốc bằng một chuỗikhác

SubString Trả về một chuỗi con từ chuỗi cho trước 

ToLower,ToUpper

Chuyển chuỗi sang chữ thường (hoa) 

Trim Loại bỏ những ký tự không cần thiết trong chuỗi 

CÁC HÀM XỬ LÝ CHUỖI

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 119/184

Imports System.ConsoleModule Module1

Sub Main()Dim s1 As Strings1 = "Khoa CNTT - Dai Hoc Can Tho"

WriteLine(s1) „1 s1 = s1.Insert(12, "Khu 3 - ")WriteLine(s1) „2 

Dim s As String = s1.Substring(12)WriteLine(s) „3 s = s1.Substring(12, 5)WriteLine(s) „4 ReadLine()

End Sub

End Module

119

BÀI 2: KIỂU LIỆT KÊ, MẢNG & TẬP HỢP

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 120/184

Kiểu liệt kê (enum) 

Khai báo và sử dụng mảng (array) 

Tập hợp trong VB.NET (collection) 

120

KIỂU LIỆT KÊ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 121/184

Cho phép định nghĩa một tập giá trị hằng để gợi nhớ.

Nếu không chỉ ra giá trị của Enum, giá trị đầu tiên là 0.

121

TD1: Khai báo kiểu  liệt kêcho các ngày trong tuần.

TD2: Không chỉ ra giá trị củaEnum

Enum Week 

Monday = 1

Tuesday = 2

Wednesday = 3

Thursday = 4Friday = 5

Saturday = 6

Sunday = 7 

End Enum

Public Enum Numbers

zero ' = 0

one ' = 1

two ‘ = 2 

End Enum 

Dim a As Numbers

WriteLine((a.two*2))

MẢNG

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 122/184

Mảng: tập hợp các phần tử có cùng kiểu.  Khai báo mảng 1 chiều:

Dim <Tên biến>(<Kích thước>) As <Kiểu phần tử> TD: Khai báo mảng có 31 số nguyên từ 0 đến 30 

Dim a(30) As Integer

Ta có thể không chỉ ra kích thước mảng, nhưng sau đóta phải khởi tạo mảng. TD: Dim a() As Integer

a = New Integer() {1,2,3,4}Dim f As IntegerFor Each f In a

Write(f)Next

122

MẢNG NHIỀU CHIỀU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 123/184

Khai báo tương tự mảng 1 chiều nhưng có thêm kích thước của các chiều còn lại.TD:„ Khai báo ma trận 3 dòng 5 cột Dim m(2, 4) As Single„ Khai báo và khởi tạo ma trận 

Dim intArrays(,) As Integer = {{1, 2, 3}, {4, 5, 6}}‘ Hiển thị theo dạng ma trận 

Dim f As Integer, c As Integer = 0For Each f In intArrays

If c Mod 3 = 0 Then WriteLine()Write(" ")

Write(f)c = c + 1

Next

123

TẬP HỢP (COLLECTION)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 124/184

Là một lớp đặc biệt chứa một nhóm các đối tượng nàođó.

Kgt System.Collection định nghĩa nhiều lớp thành viên:ArrayList, Stack, HashTable, BitArray, Queue… 

Lớp ArrayList: cung cấp các chức năng cơ bản của 1tập hợp, có thể được sử dụng cho nhiều mục đích khácnhau.

Khai báo & khởi tạo đối tượng ArrayList

Dim myList As New System.Collections.ArrayList() 

„ Khởi tạo đối tƣợng myList có 5 phần tử Dim myList As New System.Collections.ArrayList(5) 

124

 ARRAY LIST

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 125/184

Phƣơng thức - Add: Thêm phần tử vào tập hợp - Remove: Xóa phần tử khỏi tập hợp. - RemoveAt: Xóa tại vị trí xác định trong tập hợp TD:

Dim f As Integer, r As New System.Collections.ArrayListFor f = 1 To 5r.Add(f)

Nextr.Remove(3) „ Xóa 3 

For Each f In rWriteLine(f)Next

125

 ARRAY LIST

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 126/184

 ArrayList có thể chứa các phần tử thuộc các kiểu khác nhau.  TD:

Dim f As Integer, r As New System.Collections.ArrayListFor f = 1 To 5r.Add(f)Next

r.Add(“Khoa Công Nghệ Thông Tin") r.Add(“Khoa Kinh Tế & QTKD") Dim f1 As ObjectFor Each f1 In rIf TypeOf f1 Is String Then

WriteLine(f1) „ Hiển thị giá trị là chuỗi End IfNext

126

BÀI 3: XỬ LÝ LỖI TRONG VB.NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 127/184

Phân loại các lỗi trong ứng dụng. 

Bẫy các lỗi thực thi (runtime error). 

 Điều khiển ErrorProvider. 

127

PHÂN LOẠI LỖI

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 128/184

Có 3 loại lỗi (error)

- Lỗi cú pháp (syntax error)

- Lỗi thực thi (runtime error)

- Lỗi logic (logic error) Ngoại lệ (Exception): là lỗi xảy ra lúc thực thi chương 

trình (thuộc loại runtime error).

Khi có ngoại lệ xảy ra, nếu không có hành động thích

hợp chương trình sẽ bị ngắt.Cần phải có cơ chế xử lý ngoại lệ 

128

EXCEPTION

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 129/184

Một  số  ngoại  lệ: ArithmeticException,InvalidOperationException, OverflowException,TypeLoadException, IndexOutOfRangeException,InvalidCastException, NullReferenceException,

SecurityException… Ngoài ra, người dùng có thể  định  nghĩa  ngoại  lệ choriêng mình (phải kế thừa từ những lớp trên).

Thuộc tính của Exception:

- Message: Chuỗi mô tả thông tin về ngoại lệ.- Source: tên ứng dụng hay đối tượng gây ra lỗi.

129

XỬ LÝ NGOẠI LỆ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 130/184

Ngoại  lệ có thể được xử lý nhờ vào các từ khóa:Try, Throw, Catch, Finally. Cấu trúc mô hình xử lý ngoại lệ 

Try„ Đoạn mã lệnh có thể gây lỗi 

Catch e1 As Exception

„ Nếu lỗi thuộc loại e1, đoạn mã này thực thi „ Ngược lại, khối Catch kế được thực thi 

Catch en As Exception„ Nếu lỗi thuộc loại en, đoạn mã này thực thi 

Finally

„ Đoạn mã này luôn thực thi, dù ngoại lệ có„ xảy ra hay không? Phần này không bắt buộc 

End Try

130

XỬ LÝ NGOẠI LỆ - THÍ DỤ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 131/184

TD: Ngoại lệ không thể đổi từ chuỗi sang số 

Module Module1Sub Main()Try

Dim r As Integer, s As StringWrite("Nhap r= “) 

s = ReadLine()r = Integer.Parse(s)WriteLine(1 / r)

Catch e As System.ExceptionWriteLine(e.Message + " Xu ly ngoai le")

FinallyWriteLine("Khoi Finally")

End Try

End SubEnd Module

131

XỬ LÝ NGOẠI LỆ - THÍ DỤ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 132/184

132

ĐIỀU KHIỂN ERRORPROVIDER

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 133/184

Sử dụng để hiển thị icon lỗi khi người dùng thao tác lỗi trên một điều khiển nào đó trên form.

Thuộc tính

- BlinkRate: xác định tốc độ nhấp nháy của icon lỗi.- BlinkStyle: xác định cách thức mà icon nhấp nháytrên điều  khiển(AlwaysBlink, BlinkDifferentError, &NeverBlink).

- Icon: đường dẫn chỉ đến icon lỗi. Phƣơng thức 

- GetError: nhận về chuỗi thông báo lỗi.- SetError: xác lập  chuỗi thông báo lỗi trên một  điều khiển xác định.

133

ERRORPROVIDER - THÍ DỤ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 134/184

Xử lý ngoại lệ khi người dùng nhập không phải số. 

Dim N, i As Integer, K As Long = 1

Try

N = Integer.Parse(txtN.Text)

For i = 1 To NK = K * i

Next

lblKQ.Text = CStr(K)

Catch

err1.SetError(txtN, "Đây phải là giá trị số") End Try

134

ERRORPROVIDER - THÍ DỤ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 135/184

135

CHƢƠNG 4: LẬP TRÌNH HƢỚNG ĐỐI TƢỢNGỚ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 136/184

VỚI VB.NET

Thuộc tính (Properties) 

 Đa hình (Polymorphism) 

Thừa kế (Inheritance) Giao diện (Interface) 

136

THUỘC TÍNH (PROPERTIES)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 137/184

Thuộc tính là những đặc trưng của các đối tượng của 1 lớp. Thuộc tính có thể được tạo nhờ:

- Từ khóa Public.- Phương thức Property.

TD: Lớp Con người (Person)

Class PersonPublic strName As StringPublic iAge As IntegerPublic iWeight As Integer

End Class

Với cách truy cập Public, thuộc tính có thể được truy xuất không giới hạn.

137

THUỘC TÍNH (PROPERTIES)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 138/184

Nếu ta muốn  hạn  chế truy cập, ta có thể  sử  dụng  từ khóa Private (data hiding).

Trong TD trên, ta có thể định nghĩa thuộc tính Name:Private strName  As StringPublic Property Name() As String

SetstrName = Value

End SetGet

Name = strName End GetEnd Property

138

THUỘC TÍNH (PROPERTIES)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 139/184

Khối Set: gán trị cho thuộc tính. Khối Get: lấy giá trị của thuộc tính. Thuộc tính chỉ  đọc (ReadOnly): khai báo khối Get

(không có khối Set) hay có thể khai báo cách tường minh trong khối Get nhờ từ khóa ReadOnly.

TD: Thuộc tính tuổi của lớp Con người là chỉ đọc.Private iAge As IntegerPublic ReadOnly Property Age() As Integer

GetAge = iAge

End GetEnd Property

139

THUỘC TÍNH (PROPERTIES)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 140/184

Thuộc tính chỉ ghi (WriteOnly): khai báo khối Set(không có khối Get) hay có thể khai báo cách tường minh trong khối Set nhờ từ khóa WriteOnly.

TD: Trọng lượng của lớp Con người là chỉ ghi.

Private iAge As IntegerPublic WriteOnly Property Weight () As Integer

Set

iAge = Value

End SetEnd Property 

140

ĐA HÌNH (POLYMORPHISM) 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 141/184

 Đa hình: Khả  năng các phương  thức có cùng một tên

nhưng các tham số của chúng là khác nhau. Nạp chồng phương thức (method overload): khai báo nhiều 

phương thức có cùng một tên (khác tham số) trong một lớp.

TD: Tạo lớp  Điểm trong không gian 2 chiều gồm 2 thuộc tínhlà tọa độ X & tọa độ Y.

- 2 phương thức xây dựng: một không có tham số (gán X, Y,là 0), một có tham số (cặp (X1,Y1) có sẵn để gán cho X,Y).

- Phương thức hiển thị tọa độ của điểm lên màn hình.

- 2 phương  thức tính khoảng cách từ điểm hiện  thời đến 1

điểm khác, một không tham số (tính kc đến gốc tọa độ), một có tham số là một điểm khác (tính kc đến điểm này).

141

Class Point

Private iX As Integer

Private iY  As Integer

Public Sub New()

Me.X = 0

Me.Y = 0

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 142/184

142

Public Property X() As Integer

Get

X = iX

End Get

Set(ByVal Value As Integer)

iX = Value

End SetEnd Property

Public Property Y() As Integer

Get

 Y = iY 

End GetSet(ByVal Value As Integer)

iY = Value

End Set

End Property

End Sub

Public Sub New(ByVal X1 As _ 

Integer, ByVal Y1 As Integer)

Me.X = X1

Me.Y = Y1

End Sub

Public Sub Display()

WriteLine("({0},{1})", Me.X, Me.Y)

End Sub

Public Function _ 

Distance() As Single

Return Sqrt(Me.X ^ 2 + Me.Y ^ 2)

End Function

Public Function _  Distance(ByVal p As Point) As Single

Return Sqrt((Me.X - p.X) ^ 2 +  

WriteLine("Khoang cach p1 & p2: _ 

{0}", p1.Distance(p2))

WriteLine("Khoang cach p1 & goc

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 143/184

143

q (( p ) _(Me.Y - p.Y) ^ 2)

End Function

End Class ‘ Kết thúc ĐN lớp Point 

 ‘ Hàm main 

Sub Main()

Dim p1, p2 As Point

p1 = New Point(2, 2)

p2 = New Point

WriteLine("Toa do p1 la ({0},{1})", _ 

p1.X, p1.Y)

WriteLine("Toa do p2 la ({0},{1})", _ 

p2.X, p2.Y)

p1.Display()

p2.Display()

WriteLine( Khoang cach p1 & goc _ 

toa do: {0}", p1.Distance())

ReadLine()End Sub

Lưu ý:

- Sử   dụng không gian tên:System.Console & System.Math.

THỪA KẾ (INHERITANCE)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 144/184

Thừa kế là khả năng một lớp (lớp con) thừa hưởng những thuộc tính & các hành động từ 1 lớp đã có (lớp cha).

VB.NET không hỗ trợ đa thừa kế. Sử dụng từ khóa Inherits khi định nghĩa lớp con. TD: Thiết  kế  lớp  điểm trong không gian 3 chiều  thừa  kế  từ  lớp 

điểm trong kg 2 chiều.

Class Point3DInherits Point ' Thừa kế từ lớp PointPrivate iZ As IntegerPublic Property Z() As Integer

GetZ = iZ

End Get

Set(ByVal Value As Integer)iZ = Value

End SetEnd Property

End Class

144

THỪA KẾ - GHI ĐÈ PHƢƠNG THỨC

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 145/184

Lớp con có thể ghi đè các phương thức của lớp cha. Phương  thức  của  lớp cha phải  sử  dụng  từ khóa Overridable,

phương thức của lớp con sử dụng từ khóa Overrides.

Từ khóa MyBase: truy xuất các thuộc tính hay phương thức của lớp cha từ lớp con.

TD: Lớp điểm trong kg 3 chiều cần ghi đè phương thức hiển thị tọa độ điểm lên màn hình.

145

Public Sub New()

MyBase.New()

Me.Z = 0End Sub 

Public Sub New(ByVal x1 As _ 

Integer, ByVal y1 As Integer, _ 

ByVal z1 As Integer)

MyBase.New(X1, Y1)

Me.Z = z1

End SubPublic Overrides Sub Display()

WriteLine("Toa do p1 la _ 

({0},{1},{2})", Me.X, Me.Y, Me.Z)

End Sub

THỪA KẾ - GHI ĐÈ PHƢƠNG THỨC

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 146/184

Sub Main()

Dim p1, p2 As Point3D

p1 = New Point3D(1, 2, 3)

p1.Display()

p2 = New Point3D

p2.Display()

End Sub

Kết quả chƣơng trình 

146

GIAO DIỆN - INTERFACE

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 147/184

Nếu một  lớp cần thể hiện tính đa thừa kế, ta sử dụng giao diện (Interface).

Giao diện có các thuộc tính & các phương thức riêng,tuy nhiên chúng không có mã lệnh để cài đặt.

Lớp sử dụng giao diện cần phải cài đặt (Implements)các phương thức đã định nghĩa trong giao diện.

TD:

147

Public Interface Interface1

Sub A()Function B(ByVal C As _ 

Integer) As Integer

End Interface

Class Tool

Implements Interface1

Public Sub A() Implements Interface1.A

 ‘Cài đặt A 

End Sub

… 

End Class

CHƢƠNG 5: CƠ SỞ DỮ LIỆU & VB.NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 148/184

Một số khái niệm về cơ sở dữ liệu 

Ngôn ngữ hỏi SQL (Structure Query Language)

Giới thiệu về ADO.NET

148

BÀI 1: MỘT SỐ KHÁI NIỆM VỀ CƠ SỞ DỮ LIỆU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 149/184

Cơ sở dữ liệu (Database) 

Bảng (table) & trường (field) 

Khóa

Mối kết hợp (relationship) 

149

CƠ SỞ DỮ LIỆU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 150/184

Cơ sở dữ liệu là một kho chứa thông tin. Flat files: tất cả dữ  liệu chứa trong 1 tập tin duy nhất.

TD: Bảng tính Excel:

150

Đặthàng

Ngàyđặt 

Hàng hóa Số lượng 

Đơngiá

Tên KH Địa chỉKH

1000 02/03/06 Bột giặt Omo 5 (kg) 15000 NV Cường  01 THĐ 

1000 02/03/06 Kem đánh răng P/S  10 (hộp) 10000 NV Cường  01 THĐ 

1000 02/03/06 Dầu gội Clear 10 (chai) 10000 NV Cường  01 THĐ 

1001 03/03/06 Bột giặt Omo 15 (kg) 15000 Trần Văn Ba 02 LTT

1001 03/03/06 Trà chanh IceTea 10 (gói) 5000 Trần Văn Ba 02 LTT

CƠ SỞ DỮ LIỆU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 151/184

Bất lợi:- Lãng phí không gian lưu trữ.

- Có nhiều thông tin trùng.

- Rắc rối trong bảo trì.

Cơ sở dữ liệu quan hệ (relational database): tập hợp các nhóm thông tin khác nhau gl bảng (table) được kết hợp lại theo cách thức nào đó.

TD: Trong TD trên cơ sở dữ liệu có thể gồm 3 bảng:

- KhachHang( MaKH , TenKH, DiachiKH)- HangHoa( MaHang , TenHang, Dongia, Ghichu)

- DatHang( STTDH, MaKH, MaHang , Soluong)

151

CƠ SỞ DỮ LIỆU - CÁC KHÁI NIỆM

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 152/184

Bảng (table): chứa các mẩu tin là các mẩu dữ liệu riêng

rẽ trong phân nhóm dữ liệu.

Mẩu tin (record): chứa các trƣờng (field), mỗi  trường thể hiện một bộ phận dữ liệu của mẩu tin.

TD bảng KhachHang:

152

MaKH TenKH Diachi

 Mẩu tin 1 KH01 NV Cường 01 THĐ 

 Mẩu tin 2 KH02 Trần  Văn Ba 02 LTT

Trường 1  Trường 2  Trường 3 

CƠ SỞ DỮ LIỆU - KHÓA

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 153/184

Khóa chính (primary key): là một hay nhiều trường màchúng xác định duy nhất mỗi mẩu tin trong bảng. 

TD  Khóa chính bảng KhachHang là MaKH. 

HangHoa là MaHang.

DatHang là STTDH, MaKH,MaHang  

Khóa ngoại (foreign key): là một hay nhiều trường ởmột bảng nhưng chúng là khóa chính ở một bảng khác. 

TD trong bảng DatHang ta có các khóa ngoại là MaKH(là khóa chính của KhachHang), MaHang (khóa chínhcủa HangHoa). 

153

CƠ SỞ DỮ LIỆU - MỐI KẾT HỢP

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 154/184

Mối kết hợp (relationship): sự liên kết giữa các bảng. 1-1: một mẩu tin trong 1 bảng xác định 1 mẩu tin trong

bảng khác.

1-n: mỗi  mẩu tin trong 1 bảng xác định  nhiều  mẩu tin

trong bảng khác.TD:

154

CƠ SỞ DỮ LIỆU - MỐI KẾT HỢP

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 155/184

n-n: nhiều mẩu tin trong 1 bảng liên kết với nhiều mẩu tin trong bảng khác.

Mối kết hợp này cần thêm bảng thứ 3 lưu các quan hệ giữa 2 bảng.

TD: CSDL về người sử dụng:

155

CƠ SỞ DỮ LIỆU - TOÀN VẸN THAM CHIẾU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 156/184

Toàn vẹn tham chiếu (referential integrity): xác định mỗi khi dữ  liệu trong các bảng bị thay đổi (thêm, sửa, xóa) các mối kết hợp vẫn không bị ảnh hưởng.

- Cascade update: Nếu có sự thay đổi giá trị  của 1khóa, giá trị  của khóa đó  ở các bảng khác cũng thay

đổi theo.

- Cascade delete: Nếu một mẩu tin bị xóa, tất cả cácmẩu tin có liên quan trong cơ sở dữ liệu bị xóa theo.

Thuận  lợi: Không cần viết mã lệnh để cập nhật  lại cơ 

sở dữ liệu mỗi khi có sự thay đổi trên khóa chính.

Tuy nhiên chúng vẫn mặt hạn chế.

156

BÀI 2: NGÔN NGỮ HỎI SQL

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 157/184

Structure Query Language (SQL)

Lựa chọn dữ liệu với câu lệnh Select 

Cập nhật dữ liệu với Update 

Chèn thêm dữ liệu với Insert 

Xóa dữ liệu với Delete 

157

STRUCTURE QUERY LANGUAGE 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 158/184

SQL là ngôn ngữ CSDL chuẩn.

SQL gồm  nhiều  phần: Ngôn ngữ  định  nghĩa  dữ 

liệu, ngôn ngữ thao tác dữ  liệu trao đổi,  tạo view,cấp quyền… 

Câu lệnh  thường sử dụng: Select, Update, Insert,Delete.

158

SQL - CÂU LỆNH SELECT

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 159/184

 Được sử dụng để  lựa chọn dữ  liệu theo một số điều 

kiện nào đó. Mệnh đề Select 

TD: Với CSDL người dùng- Tìm kiếm tất cả các người dùng

Select UserName From Users- Nếu muốn tên các người dùng không trùng nhau:

Select Distinct UserName From RoleUser- Ký tự * được dùng chỉ tất cả các trường 

Select * From Users- Sau Select có thể là một biểu thức 

Select RoleID*10, RoleName From Roles

159

SQL - CÂU LỆNH SELECT

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 160/184

Mệnh đề Where: dùng để lọc & kết nối dữ liệu. TD:

- Tìm các tên quyền có mã >3Select RoleName From Roles Where RoleID>3

- Tìm các bộ  (người dùng, tên quyền)  tương  ứng  với mãquyền >3

Select UserName, RoleName From Roles, RoleUserWhere RoleUser.RoleID = Roles.RoleID AND Roles.RoleID > 3

Các phép toán:- So sánh: >, >=, <, <=, =, <>, BETWEEN…AND- Logic: AND, NOT, OR

TD: Tìm các tên quyền có mã từ 2 đến 4Select RoleName From RolesWhere RoleID BETWEEN 2 AND 4

160

SQL - CÂU LỆNH SELECT

ỗ ố ế ẫ

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 161/184

Phép toán LIKE trên chuỗi: đối chiếu mẫu.

- %: ứng với chuỗi con bất kỳ.- _:ứng với 1 ký tự bất kỳ.TD: - Tìm các tên quyền có ký tự cuối là e:

Select RoleName From RolesWhere RoleName LIKE “%e” 

- Tìm các tên người dùng có ký tự thứ 2 là h

Select UserName From UsersWhere UserName LIKE “_h%” 

Mệnh đề sắp thứ tự Order By- ASC: thứ tự tăng.- DESC: thứ tự giảm.

TD: Lựa chọn các tên quyền có mã >1 và sắp xếp chúngtheo thứ tự tăng.Select RoleName From RolesWhere RoleID>1 Order By RoleName ASC

161

SQL - CÂU LỆNH INSERT

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 162/184

Dùng để thêm 1 hay nhiều dòng (mẩu tin) vào một bảng 

đã có. TD:- Thêm người dùng nqtoan vào bảng User

Insert Into Users Values(“nqtoan”, ”abc”) 

- Ta có thể chỉ rõ tên trường & giá trị cần xen.Insert Into Users(Password, UserName)

Values(“abc”, “nqtoan”) 

- Thêm cho tất cả người dùng quyền mới có mã là 4

Insert Into RoleUserSelect UserName As UserName, 4 As RoleIDFrom Users

162

SQL - UPDATE & DELETE

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 163/184

Update: Cho phép thay đổi giá trị các dòng (mẩu tin).TD:- Sửa lại mật khẩu của người dùng lhbao là abc

Update UsersSet Password = “abc” Where UserName = “lhbao” 

Delete: Xóa các dòng (mẩu tin) thỏa điều kiện.TD:- Xóa tất cả các dòng (mẩu tin) của bảng RoleUser

Delete From RoleUser- Xóa tất cả các quyền của người dùng lhbao

Delete From RoleUserWhere UserName = “lhbao” 

163

BÀI 3: GIỚI THIỆU VỀ ADO.NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 164/184

OLE DB, ADO, ADO.NET

Dataset

.NET Data Providers- Đối tượng Command. 

- Đối tượng DataReader. 

- Đối tượng DataAdapter. 

DataBinding

164

OLEDB

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 165/184

OLEDB: Object Linking and Embedding forDataBase: giao diện cơ sở dữ liệu được sử dụng để truy cập các loại dữ liệu khác nhau.

Mô hình:

165

OLEDB

RelationalDatabase

Non-RelationalDatabase

ACTIVEX DATA OBJECT (ADO)

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 166/184

Tập hợp các đối tượng để truy cập cơ sởdữ liệu thông qua trình cung cấp OLEDB. 

Mô hình

166

OLEDBRelationalDatabase

Non-RelationalDatabase

 ADO

ADO.NET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 167/184

Là cải tiến của ADO. Sử dụng XML để vận chuyển dữ liệu.

Thành phần cơ bản của ADO.NET:

- DataSet- .NET data provider: gồm các thành phần Connection,Command, DataReader, DataAdapter.

167

WinForm

DataSet

DataObject

DataSetDatabase

XML

DATASET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 168/184

Là đối tượng lưu dữ liệu được truy xuất từ cơ sở dữ liệu. Mô hình:

Tạo Dataset: tạo đối tượng của lớp Dataset.TD: „ Tạo Dataset có tên là EmpInfor

Dim empDS As New Dataset(“EmpInfor”) „ Không cần chỉ tên của DatasetDim empDS As New Dataset()

168

Client Server

DatasetGởi Datasettới Client 

Gởi dữ liệutới Dataset 

Client sửađổi Dataset 

Cập nhật Datasetlên Server

DATASET

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 169/184

Thuộc tính- Tables: tập các bảng của Dataset.

- Item: một bảng xác định trong Dataset.

Phương thức:

- Add: thêm một bảng.

- RemoveAt: xóa một bảng ở vị trí xác định.

DataTable: là bảng lấy về từ CSDL.

- DataColumn: các cột trong DataTable.

- DataRow: dòng dữ liệu thật sự.

169

DATATABLE, DATACOLUMN, DATAROW

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 170/184

DataTable - Thuộc tính - Columns: tập hợp các cột - Dataset: thuộc về Dataset nào 

- Rows: tập hợp các dòng 

DataColumn - Thuộc tính 

- ColumnName: tên của cột - Datatype: kiểu dữ liệu 

- Table: cột thuộc Table nào  DataRow - Thuộc tính 

- Item: giá trị ở một cột xác định. - Table: dòng thuộc DataTable nào  170

 

.NET DATA PROVIDERS

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 171/184

Cho phép tương tác giữa CSDL & dataset.

Có thể truy cập, sửa đổi, dữ liệu nhờ đối tượng Connection &Command.

 Đối  tượng Connection: thiết  lập một nối kết dữ  liệu giữa ứng 

dụng & CSDL.

SQL .NET Data Provider OLE DB .NET Data Provider

System.Data System.Data

System.Data.SqlClient System.Data.OleDb

171

 

.NET DATA PROVIDERS

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 172/184

Thuộc tính:

- ConnectionString: chuỗi nối kết đến CSDL.- Database: CSDL muốn nối kết.TD:- SQL .NET Data Provider  

Dim conn As SqlConnectionconn = New SqlConnection _ 

(“server=www”;uid=lhbao;pwd=abc;database=pubs”) - OLE DB .NET Data Provider 

Dim conn As OleDb.OleDbConnectionconn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; _ 

Data Source=D:\ User.mdb“) - Provider: trình cung cấp CSDL. Một số provider:

Access: Microsoft.Jet.OLEDB.4.0SQL Server: SQLOLEDB

- Data Source: CSDL.- User Id: tên người dùng.- pwd: mật khẩu 

172

THÍ DỤ .NET CONNECTION

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 173/184

Tạo lớp kết nối đến CSDL Access với lúc khởi tạo đối tượng cần 

truyền tham số là đường dẫn chỉ đến CSDL User.mdb.Public Class cnAccess

Public conn As OleDb.OleDbConnection

Public Sub New(ByVal FileName As String)

conn = New OleDb.OleDbConnection

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;” & _ 

“Data Source=" & FileName

conn.Open()

End Sub

Protected Overrides Sub Finalize()

conn.Close()

conn = Nothing

End Sub

End Class173

ĐỐI TƢỢNG COMMAND

ế ế

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 174/184

Tham chiếu đến CSDL nhờ việc thực thi một câu lệnh (SQL, Stored

Procedure). 2 loại Command:

- SQLCommand: SQL Server.- OleDbCommand: các loại CSDL của các HQTCSDL khác nhau(OleDb.OleDbCommand)

Thuộc tính

- Connection: nối kết CSDL.- CommandType: kiểu Command được chỉ ra trong CommandText;có 3 loại:

+ Text+ Stored Procedure

+ Table Direct Thực thi Command:

- ExecuteNonQuery: thực thi câu truy vấn hành động.- ExecuteScalar: kết quả câu truy vấn là một giá trị.- ExecuteReader: thực thi câu truy vấn, kq là một DataReader.

174

DATAREADER

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 175/184

Chứa  dữ  liệu  chỉ  đọc (readonly) & chỉ cho phép di chuyển  tới (forwardonly).

Gồm SQLDataReader & OleDbDataReader.

Thuộc tính:

- FieldCount: Số trường.

- IsClosed: DataReader có đóng hay ko?

Phương thức:

- Close: đóng DataReader.

- GetName: lấy tên 1 cột xđ.

- GetValue: giá trị của 1 cột xđ.

- Read: đọc tuần tự từng dòng. DataReader được  khởi  tạo  nhờ  gọi  thực thi phương  thức 

ExecuteReader của đối tượng Command.

TD: Dim myReader As SqlDataReader

myReader = myCommand.ExecuteReader175

DATAADAPTER

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 176/184

Sử  dụng  để  cập  nhật  dữ  liệu  từ  nguồn dữ liệu đến Dataset & ngược lại.

Gồm SqlDataAdapter &

OleDbDataAdapter. Phương thức 

- Fill: đồng  bộ  dữ  liệu  giữa Dataset &

nguồn dữ liệu.

176

DATABINDING

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 177/184

Ràng buộc giá trị trong nguồn dữ liệu với điều khiển của Winform. Simple Data Binding: 1 giá trị  từ dataset ràng buộc với 1 điều 

khiển.

TD: Cột Salary của bảng Employes ràng buộc với thuộc tính TextcủaTextBox txtSa

Dim t As DataTable = Dataset.Tables(“Employes”) txtSa.DataBindings. Add(“Text”, t, ”Salary”) 

Complex DataBinding: một  điều  khiển ràng buộc toàn bộ dataset. Chỉ có điều khiển DataGrid & ComboBox hỗ trợ loại này.

TD: Ràng buộc toàn bộ dữ liệu của trường DepartmentName với 

ComboBox cboDPNameDim t As DataTable = Dataset.Tables(“Daparment”) cboDPName.DataSource = t

cboDPName.DisplayMember = “DepartmentName” 

177

THÍ DỤ DATABINDING

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 178/184

Với CSDL Users.mdb, thiết kế Form cho phéphiển thị tên người dùng cùng các quyền tương ứng.

Giải quyết:

- Sử dụng  lớp cnAccess ở  phần  trước để  tạo kết nối.- Một đối tượng Command để thực thi truy vấn.

- Một  đối  tượng DataAdapter được dùng để 

thiết lập cho 1 Dataset.- Ràng buộc Dataset với lưới hiển thị.

178

Public Class frmUser

Inherits System.Windows.Forms.Form

Private cn As cnAccess

Private dr As OleDb OleDbDataReader

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 179/184

Private dr As OleDb.OleDbDataReader

Private com As OleDb.OleDbCommand

Private da As OleDb.OleDbDataAdapter

Private dt As DataSet

Private Sub Form1_Load(ByVal sender As _ 

System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

cn = New cnAccess("F:\Data\Bai giang\VBNet\users.mdb")

com = New OleDb.OleDbCommand("SELECT Users.UserName, “ & _  “ Roles.RoleName FROM Users, Roles, RoleUser WHERE “ & _  “Roles.RoleID = RoleUser.RoleID AND Users.UserName = “ & _ 

“RoleUser.Username") com.Connection = cn.conn

da = New OleDb.OleDbDataAdapter(com)dt = New DataSet

da.Fill(dt)

grdHT.DataSource = dt.Tables(0)

End Sub

179

THÍ DỤ VỀ CẬP NHẬT DỮ LIỆU

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 180/184

Cũng với CSDL Users.mdb, thiết kế Form cho phép thêmquyền cho người dùng.

Giải quyết:

- Kết nối đến CSDL nhờ lớp cnAccess.

- Ràng buộc ComboBox người dùng với 

dữ liệu của bảng Users

- Ràng buộc ComboBox quyền với 

dữ liệu của bảng Roles

- Thêm quyền cho người dùng xác định thực chất là thêm vào

bảng RoleUser (người dùng, mã quyền).

180

Public Class frmComInherits System.Windows.Forms.Form

Private cn As cnAccess

Private comUser, comRole As OleDb.OleDbCommand

Private drUser drRole As OleDb OleDbDataAdapter

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 181/184

Private drUser, drRole As OleDb.OleDbDataAdapter

Private dt As DataSet

Private Sub frmCom_Load(ByVal sender As System.Object, ByVal e As _ 

System.EventArgs) Handles MyBase.Load

cn = New cnAccess("F:\Data\Bai giang\VBNet\Baigiang\users.mdb")

comUser = New OleDb.OleDbCommand("Select UserName From Users")

comUser.Connection = cn.conn

drUser = New OleDb.OleDbDataAdapter(comUser)dt = New DataSet

drUser.Fill(dt, "Users")

cboUser.DataSource = dt.Tables("Users")

cboUser.DisplayMember = "UserName"

comRole = New OleDb.OleDbCommand("Select * From Roles")

comRole.Connection = cn.conndrRole = New OleDb.OleDbDataAdapter(comRole)

drRole.Fill(dt, "Role")

cboRole.DataSource = dt.Tables("Role")

cboRole.DisplayMember = "RoleName"

End Sub  181

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnAdd.Click

Dim r() As DataRow

„ Tìm mã quyền dựa vào tên quyền trên ComboBox tên quyền

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 182/184

„ Tìm mã quyền dựa vào tên quyền trên ComboBox tên quyền 

r = dt.Tables("Role").Select("RoleName = '" & cboRole.Text & "'")

Try

Dim comT As OleDb.OleDbCommand

„ Thực thi câu truy vấn hành động 

comT = New OleDb.OleDbCommand("Insert Into RoleUser Values(" & _ 

r(0).Item(0) & ",'" & cboUser.Text & "')", cn.conn)

comT.ExecuteNonQuery()

MessageBox.Show("Thêm hoàn tất!") 

Catch e1 As ExceptionMessageBox.Show("Dữ liệu đã có. Thêm không thành công!") End Try

End Sub

End Class

182

KẾT QUẢ 

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 183/184

183

8/3/2019 Bai Giang VB

http://slidepdf.com/reader/full/bai-giang-vb 184/184

CÁM Ơ N ĐÃ QUAN TÂM!!!