H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Ch
ươ 11: ng
S d ng m ng và t p h p (Collection)
ậ ợ
ử ụ
ả
--------oOo--------
N i dung th o lu n: ả ậ ộ
- T ch c thông tin d li u có chi u dài c đ nh và m ng đ ng ổ ứ ữ ệ ố ị ề ả ộ
i kích th - D tr m ng d li u khi đ nh nghĩa l ữ ệ ự ữ ả ị ạ ướ c m ng ả
- X lý t p h p các đ i t ố ượ ử ậ ợ ng đi u khi n trên form ể ề
- S d ng vòng l p ử ụ ố ặ For Each…Next đ duy t qua danh sách t p h p các đ i ể ệ ậ ợ
ngượ t
- T o t p h p c a riêng b n đ qu n lý d li u chu i ỗ ạ ợ ủ ạ ậ ữ ệ ể ả
Khi ch ng trình tr nên l n và l ng thông tin và d ươ ở ớ ượ ữ li u l n, b n không th ch dùng ệ ớ ể ỉ ạ
t h n đó là m ng. M ng ch a danh bi n mà còn c n đ n m t công c l u tr , x lý t ộ ữ ử ụ ư ế ế ầ ố ơ ứ ả ả
sách tu n t các ph n t ầ ự ầ ử cùng đ nh d ng. ị ạ
Chúng ta cũng có th nhóm các đ i t ng vào thành t p h p đ d qu n lý, dùng vòng ố ượ ể ể ễ ậ ả ợ
c a t p h p. l p For each…Next đ duy t qua các ph n t ể ặ ầ ử ủ ậ ệ ợ
Các tính năng m i trong VB.NET: ớ
- M ng có ch s c s là 0 ỉ ố ơ ở ả
- Hàm Lbound luôn tr v 0 là gi ả ề ớ ạ i h n th p nh t c a m ng. Hàm ấ ủ ấ ả Ubound trả
i h n trên c a m ng. S ph n t Ubound()-1 v gi ề ớ ạ ầ ử ủ c a m ng là ả ủ ả ố
- VB.NET dùng l p ớ System.Collections đ x lý t p h p ợ ể ử ậ
ể - B n có th ch a các đi u khi n trong m ng n u m ng c a b n khai báo ki u ể ứ ủ ạ ề ể ế ạ ả ả
Object
1. Làm vi c v i m ng các bi n ệ ớ ả
ế
M ng giúp qu n lý các d li u l n h t s c d dàng. Vi c truy c p các ph n t ế ứ ữ ệ ớ ầ ử ủ c a ễ ệ ả ả ậ
m ng thông qua ch s . ỉ ố ả
1.1. T o m ng ạ ả
Vi c khai báo m ng t ng t nh khai báo bi n. ng ch a các thông ệ ả ươ ự ế Vi c khai báo th ư ệ ườ ứ
tin nh :ư
- Tên m ng: Tên đ i di n cho m ng, vi c truy c p m t ph n t m ng g m tên ầ ử ả ệ ệ ả ạ ả ậ ộ ồ
m ng và ch s m ng. ỉ ố ả ả
- Ki u d li u: T t c các ph n t ể ữ ệ ấ ả ầ ử trong m ng ph i có cùng ki u. ả ể ả
- Kích th c m ng: Là s chi u c a m ng. ướ ề ủ ả ả ố
Biên so n: Ph m Đ c L p - 1 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
- S ph n t c a m ng: S ph n t t ầ ử ủ ầ ử ố ả ố ố i đa c a m ng ủ ả
1.2. Khai báo m ng c đ nh ố ị ả
Cú pháp chung khai báo m ng có kích th c là: ả ướ
Dim ArrayName(Dim1Index, Dim2Index) As DataType
Trong đó:
- ArrayName: tên m ngả
- Dim1Index và Dim2Index: là hai chi u c a m ng ề ủ ả
- Datatype: ki u d li u c a m ng. Khi ch a xác đ nh ki u c th , có th dùng ể ụ ể ữ ệ ủ ư ể ể ả ị
ki u Object. ể
Ví d :ụ
có tên ầ ử ứ ề ả ộ Khai báo Dim Employee(4) As String khai báo m ng m t chi u ch a 5 ph n t
là Employee có ki u String. ể
khóa Public B n cũng có th khai báo m ng m t cách toàn c c trong module b ng t ộ ụ ể ạ ả ằ ừ
nh sau: ư
Public Employee(4) As String.
M ng m t chi u có d ng: ề ả ạ ộ
Employee
0
1
2
3
4
Đ khai báo m ng hai chi u mang tên ScoreBoard b n có th khai báo nh sau: ư ể ề ể ả ạ
Dim ScoreBoard(1, 4) As Short
M ng này g m 2*5 = 10 ph n t ng ng v i 10 ô vuông g m hai dòng và 5 c t t ầ ử ươ ứ ộ đánh ả ồ ớ ồ
0. s t ố ừ
trong m ng 1.3. Làm vi c v i các ph n t ệ ớ ầ ử ả
Sau khi khai báo, b n có th s d ng m ng. Vi c truy c p vào m t ph n t ể ử ụ ầ ử ủ ả c a m ng ệ ạ ả ậ ộ
nh tên m ng và ch s c a m ng đ t trong ngo c đ n, ch s là s nguyên ặ ỉ ố ủ ỉ ố ả ả ặ ờ ơ ố , là bi nế
nguyên hay bi u th c có giá tr . Đ duy t qua t t c các ph n t trong m ng, dùng vòng ứ ể ể ệ ị ấ ả ầ ử ả
l p For…Next. Ví d : ụ ặ
Biên so n: Ph m Đ c L p - 2 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
employee(3) = "Thanh Van"
Phát bi u trên gán cho ph n t i ô th 4) tên là “Thanh Van”. ầ ử ể có ch s th 3 (t ỉ ố ứ ạ ứ
ScoreBoard(0, 2) = 12
Phát bi u trên gán cho ph n t dòng 0, c t 2 giá tr là 12. ầ ử ở ể ộ ị
1.4. T o và s d ng m ng có kích th c c đ nh ử ụ ả ạ ướ ố ị
Bây gi ta t o ví d nhietdo đ ghi l ờ ụ MyFixedArray s d ng m ng m t chi u có tên ử ụ ề ạ ả ộ ể ạ i
t đ cao th p hàng ngày trong tu n. M ng này đ c khai báo đ u form và giá tr nhi ị ệ ộ ấ ầ ả ượ ở ầ
đ c gán giá tr b ng hàm ượ ị ằ ủ InputBox nh vòng l p For…Next. Toàn b n i dung c a ộ ộ ặ ờ
m ng sau đó l i vào m t textbox cũng nh vòng l p For…Next. ả i đ ạ ượ c hi n th l ể ị ạ ặ ộ ờ
Thi t k giao di n: ế ế ệ
i pháp và thêm vào m t d án có cùng tên là MyFixedArray. Thi T o m i m t gi ớ ạ ộ ả ộ ự t kế ế
giao di n nh hình: ư ệ
Trong đó: nút button1 có text là “Đi n nhi t đ ”, button2 là “Hi n th nhi t đ ”, button3 ề ệ ộ ể ị ệ ộ
là “Thoát”.
Vi t mã: ế
Tr c h t ta khai báo m ng nhietdo ngay d i dòng ướ ế ả ở ướ ư
Public Class Form1 nh sau:
Dim nhietdo(6) As Single
Khai báo nh th này nghĩa là t ư ế ấ ả ả t c các th t c, các hàm đ u có th s d ng m ng ể ử ụ ủ ụ ề
này.
Biên so n: Ph m Đ c L p - 3 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Ti p theo ta t o ra s ki n nh p vào các giá tr nhi t đ trong tu n b ng cách t o th ự ệ ế ạ ậ ị ệ ộ ầ ằ ạ ủ
ư ậ t c ụ Button1_Click và nh p mã nh sau:
ộ ủ
ề
ệ
Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim Prompt, tieude As String Dim i As Short Prompt = "Đi n vào nhi t đ c a ngày." For i = 0 To UBound(nhietdo) tieude = "Ngày " & (i + 1) nhietdo(i) = CInt(InputBox(Prompt, tieude)) Next End Sub
Trong đó, hàm Ubound(nhietdo) là hàm l y v ch s trên c a m ng nhietdo, trong ỉ ố ủ ề ấ ả
tr ng h p này là 6. ườ ợ
Sau đó ta cho hi n th các giá tr nhi t đ trong b y ngày trong tu n cũng nh giá tr ể ị ị ệ ộ ư ả ầ ị
nhi t đ trung bình b ng th t c i dùng click vào nút “Hi n th ệ ộ ằ ườ ể ị ủ ụ Button2_Click khi ng
nhi t đ ” nh sau: ệ ộ ư
ộ ủ
ệ
ầ
Private Sub Button2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim ketqua As String Dim i As Short Dim tong As Single = 0 ketqua = "Nhi t đ c a tu n: "
& vbCrLf & vbCrLf
For i = 0 To UBound(nhietdo) ketqua = ketqua & "Ngày " & (i + 1) & _ vbTab & nhietdo(i) & vbCrLf tong = tong + nhietdo(i) Next
ệ
ộ
& _
ketqua = ketqua & vbCrLf & _ "Nhi t đ trung bình: " Format(tong / 7, "0.0")
TextBox1.Text = ketqua End Sub
Th t c này l i s d ng vòng l p For…Next đ duy t l i các ph n t ủ ụ ạ ử ụ ệ ạ ể ặ ầ ử trong m ng sau ả
khi đã đ c gán giá tr th t c button1_Click. ượ ị ở ủ ụ Bi n ế ketqua đ ượ ỗ c dùng đ làm chu i ể
k t xu t g p các giá tr ph n t ế ấ ộ ầ ử ả m ng. Sau m i l n g p ta s d ng h ng s ộ ử ụ ỗ ầ ố vbCrLf để ằ ị
khi n d u ng t dòng và d u v đ u dòng (t ng đ ng v i hai hàm Chr(13) và ề ầ ế ấ ắ ấ ươ ươ ớ
vbTab đ phân cách gi a ph n ghi ngày và ghi nhi Chr(10)). H ng ằ ữ ể ầ t đ . ệ ộ
B n t o th th c Button3_Click và nh p phát bi u End đ k t thúc ch ng trình. ủ ụ ạ ạ ể ế ể ậ ươ
ng trình: Ch y ch ạ ươ
B n ch y ch t đ 7 ngày r i cho hi n th giá tr đó lên ạ ạ ươ ng trình và nh p đ giá tr nhi ậ ủ ị ệ ộ ể ồ ị ị
xem sao.
Biên so n: Ph m Đ c L p - 4 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
1.5. T o m ng đ ng ộ ạ ả
Vi c dùng m ng là r t thu n ti n. Tuy nhiên khi b n ch a bi t chính xác s ph n t ư ệ ệ ả ấ ậ ạ ế ầ ử ố
i dùng nh p vào bao nhiêu c a m ng là bao nhiêu thì sao? Ví d khi b n mu n đ ng ủ ụ ể ả ạ ố ườ ậ
nhi ệ ộ t đ tùy thích, nh p càng nhi u thì đ chính xác càng cao. ề ậ ộ
VB gi Kích th ả i quy t vi c này b ng m ng đ ng. ằ ế ệ ả ộ ướ c m ng đ ng ch đ ộ ỉ ượ ả c ch đ nh khi ị ỉ
ch ng trình th c thi ch không đ nh trong lúc vi t mã. Vi c khai báo tr c kích th ươ ự ứ ị ế ệ ướ ướ c
m ng là không c n thi ả ầ ế t nh ng cũng c n dành ch tr ầ ỗ ướ ư c cho m ng đó. ả
Các b ướ ạ c t o m ng đ ng: ả ộ
- Ch đ nh tên và ki u cho m ng khi thi t k form, ví d ị ể ả ế ế ụ Dim nhietdo() As
ỉ Single
- Thêm mã xác đ nh kích th c m ng khi ch ng trình th c thi. Ví d khi ị ướ ả ươ ự ụ
ch ươ ng trình ch y b n h i xem ng ạ ạ ỏ ườ i dùng mu n nh p bao nhiêu ngày ậ ố , ví d :ụ
Dim songay As Integer
songay = InputBox("Ban muon nhap bao nhieu ngay?", "Tao mang dong")
- Dùng bi n songay đ đ nh l i kích th c m ng (tr đi 1 vì m ng tính t 0). Ví ể ị ế ạ ướ ừ ả ả ừ
d ụ
If songay > 0 Then ReDim nhietdo(songay - 1)
- Ti p theo ta dùng hàm Ubound(nhietdo) đ xác đ nh s ph n t c a m ng. ầ ử ủ ế ể ả ố ị
Bây gi chúng ta s làm l ờ ẽ ạ i ví d trên s d ng m ng đ ử ụ ụ ả ng:ộ
- Tr c h t, b n khai báo l i m ng đ ng và khai báo bi n songay ch a s ngày ướ ế ạ ạ ứ ố ế ả ộ
ng i dòng khai báo l p form1: ườ i dùng mu n nh p b ng đo n mã ngay d ằ ậ ạ ố ướ ớ
Dim nhietdo() As Single Dim songay As Integer
- Sau đó s a l i mã c a th t c Button1_Click nh sau: ử ạ ủ ụ ủ ư
Dim Prompt, tieude As String
ộ ủ
ề
ệ
Dim i As Short Prompt = "Đi n vào nhi t đ c a ngày."
'Nhap so ngay muon ghi nhiet do songay = InputBox("Ban muon nhap bao nhieu ngay?", "Tao mang dong") If songay > 0 Then ReDim nhietdo(songay - 1)
For i = 0 To UBound(nhietdo) tieude = "Ngày " & (i + 1) nhietdo(i) = CInt(InputBox(Prompt, tieude))
Next
- Ti p theo thay s 7 trong th t c Button2_Click b ng bi n ủ ụ ế songay: ế ằ ố
ệ
ộ
ketqua = ketqua & vbCrLf & _ & _
"Nhi t đ trung bình: "
Biên so n: Ph m Đ c L p - 5 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Format(tong / songay, "0.0")
- B n có th dùng phát bi u i n u ng i dùng nh p vào ể Try…Catch đ b t l ể ắ ỗ ế ể ạ ườ ậ
m t s nh h n 0. ộ ố ỏ ơ
- Ch y l i ch ng trình và k t qu rõ ràng linh đ ng h n. ạ ạ ươ ế ả ộ ơ
2. D tr s n m ng b ng phát bi u REDIM ằ
ự ữ ẵ
ể
ả
Trong ví d trên, chúng ta đã đ nh l i kích th c b ng t khóa REDIM. i kích ụ ị ạ ướ ằ ừ Khi đ nh l ị ạ
th c nh th thì d li u cũ c a m ng s m t h t. Các ph n t s có giá tr là 0 hay ướ ẽ ấ ế ư ế ữ ệ ầ ử ẽ ủ ả ị
NULL.
Đ gi nguyên giá tr các ph n t cũ, b n có th dùng t khóa ể ữ ầ ử ị ể ạ ừ Preserve đi kèm phát bi uể
Redim. Ví d :ụ
If songay > 0 Then ReDim Preserve nhietdo(songay - 1)
V i phát bi u này thì các ph n t ầ ử ớ m i nh n giá tr là 0 hay NULL. ị ể ậ ớ
Ví d ta đ nh nghĩa m ng đ ng: Dim mangdong() As string ụ ả ộ ị
Sau đó tái đ nh nghĩa kích th c m ng là 200: ị ướ ả
Redim mangdong(200) As String
mangdong(200) = 200
Gi ta m r ng m ng này v i câu l nh Preserve: ờ ở ộ ệ ả ớ
Redim Preserve mangdong(300)
Khi đó giá tr c a ph n t ầ ử ị ủ ề mangdong(200) v n là 200. Vi c tái đ nh nghĩa m ng đa chi u ệ ẫ ả ị
cũng t ng t ươ . ự
3. Làm vi c v i t p h p đ i t
ng Collection
ệ ớ ậ ợ ố ượ
Ti p theo chúng ta s làm quen v i t p h p. T p h p cũng t ng t ớ ậ ế ẽ ậ ợ ợ ươ ự ư nh m ng nh ng ư ả
nó dùng đ x lý các ph n t ki u đ i t ng, có kh i l ng và kích th ể ử ầ ử ể ố ượ ố ượ ướ ớ ơ c l n h n.
Trong VB, các đi u khi n trong form cũng đ c nhóm thành t p h p g i là Controls ề ể ượ ậ ợ ọ
Collection – t p h p các đi u khi n. M i thành ph n đi u khi n khi b n cho vào form ề ể ề ể ậ ầ ạ ợ ỗ
c đ a vào trong t p h p đi u khi n. M i t p h p trong ch ng trình đ u có đ u đ ề ượ ỗ ậ ư ề ể ậ ợ ợ ươ ề
ậ m t tên riêng đ ta tham chi u đ n nó. B n có th dùng Object Browser đ xem các t p ể ế ế ể ể ạ ộ
ng c a h th ng, đi u này s đ c h ng d n c th trong ch ng 13. h p đ i t ợ ố ượ ủ ệ ố ẽ ượ ướ ề ẫ ụ ể ươ
ng trong t p h p 3.1. Tham chi u đ n đ i t ế ế ố ượ ậ ợ
B n có th tham chi u đ n m t đ i t ng trong t p h p thông qua ch s nh m ng. ộ ố ượ ể ế ế ạ ỉ ố ư ở ả ậ ợ
Trong VB thì các đ i t ng đ c đ a vào t p h p theo th t đ o ng ố ượ ượ ư ứ ự ả ậ ợ ượ ầ c, t c là ph n ứ
đ a vào s m nh t có ch s cao nh t và ng i, ph n t đ a vào sau cùng có ch t ử ư ỉ ố ấ ấ ớ c l ượ ạ ầ ử ư ỉ
Biên so n: Ph m Đ c L p - 6 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
ng ph n t sau cùng s nh nh t là 0. Ví d , đ truy c p thu c tính Text c a đ i t ố ụ ể ố ượ ủ ấ ậ ỏ ộ ầ ử
trên form b n s d ng ch s th t là 0 nh sau: ạ ử ụ ỉ ố ứ ự ư
ử
ầ
ố
Controls(0).Text="ph n t cu i cùng"
khác trên form, b n s d ng ch s khác nh 0, 1,… Mu n truy c p các ph n t ậ ầ ử ố ạ ử ụ ỉ ố ư Ví dụ
ng trên form: vòng l p for…next sau s in ra tiêu đ c a 4 đ i t ẽ ề ủ ố ượ ặ
For i = 0 To 3
ketqua &= Controls(i).Text & vbCrLf Next
ấ ạ B n có th dùng vòng l p For…Next nh trên, tuy nhiên hi u qu và d hi u nh t b n ễ ể ư ể ệ ạ ặ ả
nên dùng vòng l p For Each…Next. ặ
3.2. S d ng vòng l p For Each…Next ặ ử ụ
M c dù b n có th tham chi u đ n các ph n t trong t p h p riêng l nh ng h u nh ầ ử ể ế ế ặ ạ ậ ợ ẻ ư ầ ư
các thao tác trên t p h p đ u duy t t ậ ệ ừ ầ đ u đ n cu i t p h p b ng vòng l p For Each… ằ ố ậ ề ế ặ ợ ợ
Next.
Các thao tác th di chuy n các đ i t ng, s p x p, đ i tên hay thay đ i l ườ ng g p là: ặ ố ượ ể ổ ạ i ế ắ ổ
kích th c c a toàn b t p h p. Cú pháp c a vòng l p nh sau: ướ ủ ộ ậ ủ ư ặ ợ
ử
ố
ố
ậ
ợ
ng trong t p h p
Dim CtrlVar As Control ... For Each CtrlVar in controls ượ ệ Kh i l nh x lý đ i t Next
Ví d sau ta s d ng t p h p đ i t ng trên form, ví ử ụ ố ượ ụ ậ ợ ng Controls đ x lý các đ i t ể ử ố ượ
d ụ MyControlsCollection.
Tìm hi u ch ng trình: ể ươ
Ch ng trình có m t form chính. Trên form chính có ba nút nh n. Khi ng ươ ấ ộ ườ ấ i dùng nh n
ấ vào nút th nh t có text “Đ i tên” thì nút nh n này đ i text thành “Đã đ i tên”, nút nh n ấ ứ ấ ổ ổ ổ
th hai s di chuy n sang trái 40 đ n v và đ i text t “Di chuy n” thành “Đã di ứ ẽ ể ơ ổ ị ừ ể
chuy n”, nút nh n th ba có text “Đ ng yên” khi ng i dùng click vào đây thì nút này ứ ứ ể ấ ườ
đ i text thành “Đây đ ng yên” còn các nút khác di chuy n sang trái 40. ổ ứ ể
Thi t k form: ế ế
Form có giao di n nh sau: ư ệ
Biên so n: Ph m Đ c L p - 7 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Các b n t o m i m t gi ạ ạ ớ ộ ả i pháp và thêm vào m t d án có cùng tên ộ ự
MyControlsCollection r i thi t k form nh hình. ồ ế ế ư
Vi t mã: ế
Khai báo m t bi n ế Ctrl ngay d ộ ướ i dòng khai báo l p form1 nh sau: ớ ư
Dim ctrl As Control
T o th t c ạ ậ ấ ở ổ ộ ủ ụ btndoiten_Click và nh p mã nh sau ( đây nút nh n “Đ i tên” có thu c ư
tính Name là “btndoiten”):
ổ
Private Sub btndoiten_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btndoiten.Click For Each ctrl In Controls If ctrl.Name = "btndoiten" Then ctrl.Text = "Đã đ i tên" End If Next End Sub
Trong đo n mã trên ta s d ng vòng l p for each … next đ duy t qua các ph n t trong ử ụ ầ ử ể ệ ạ ặ
ữ t p h p các đi u khi n controls c a form. Ta cũng dùng phát bi u if đ l c ra nh ng ậ ể ọ ủ ề ể ể ợ
đi u khi n có thu c tính Name là “btndoiten” đ thao tác. ể ề ể ộ
T ng t b n t o th t c ươ ự ạ ạ ư ậ ấ ủ ụ btnmove_Click và nh p mã nh sau (nút nh n có text “Di
chuy n” có thu c tính Name là “btnmove”): ể ộ
Private Sub btnmove_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnmove.Click For Each ctrl In Controls If ctrl.Name = "btnmove" Then ctrl.Text = "Đã di chuy n"ể ctrl.Left = ctrl.Left + 40 End If
Biên so n: Ph m Đ c L p - 8 - Add: cnt-44-dh, ứ ậ ạ ạ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Next End Sub
Th t c ủ ứ ủ ụ btnstatic_Click (btnstatic là tên c a nút “Đ ng yên”):
ứ
Private Sub btnstatic_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnstatic.Click For Each ctrl In Controls If ctrl.Name = "btnstatic" Then ctrl.Text = "Đây đ ng yên" Else ctrl.Left = ctrl.Left + 40 End If Next End Sub
ng trình: Ch y ch ạ ươ
Công vi c c a b n gi là n F5 đ ch y ch ng trình xem thành qu chúng ta đã làm. ệ ủ ạ ờ ể ạ ấ ươ ả
i dùng
4. T t o t p h p c a ng ự ạ ậ ợ ủ
ườ
VB cho phép t o m t t p h p c a ng ợ ủ ộ ậ ạ ườ i dùng đ l u tr t ể ư ữ ừ ể các thành ph n đi u khi n ầ ề
nh nút nh n, nhãn,… đ n các ki u đ n gi n nh chu i, s nguyên và các ki u c s ơ ở ư ư ế ể ể ả ấ ỗ ố ơ
khác t ng t nh m ng. ươ ự ư ả
Cú pháp khai báo:
Dim MyCollection As New Collection()
Trong đó MyCollection là tên c a t p h p, ph ủ ậ ợ ươ ậ ng th c New kh i t o vùng nh cho t p ở ạ ứ ớ
ng th c h p. Sau khi t o t p h p b n có th dùng ph ợ ợ ạ ậ ể ạ ươ ứ add đ thêm ph n t ầ ử ể ậ dl vào t p
t. h p. Đ duy t t p h p b n dùng vòng l p ợ ợ ệ ậ ặ for each next nh đã bi ư ể ạ ế
Trong ví d sau đây chúng ta s làm quen v i cách s d ng t p h p gi a danh sách các ớ ử ụ ữ ụ ẽ ậ ợ
đ c ng đ a ch Internet ỉ ị ượ ườ ạ i dùng s d ng g n đây nh t. Đ g i trình duy t IE, b n ấ ử ụ ể ọ ệ ầ
dùng ph ng th c ươ ứ System.Dyagnostics.Process.Start.
Tìm hi u ch ng trình: ể ươ
Ch ng trình có m t form chính g m m t textbox và hai nút nh n. Ô textbox cho phép ươ ấ ộ ộ ồ
nh p vào đ a ch website, nút nh n th nh t đ ng i dùng click vào duy t trang web có ấ ể ứ ậ ấ ị ỉ ườ ệ
t kê t t c nh ng trang web ng i dùng đ a ch ghi trong ô textbox, ô nh n th hai đ li ị ể ệ ứ ấ ỉ ấ ả ữ ườ
đã duy t b ng cách nh p đ a ch URL vào trong ô textbox. ệ ằ ậ ỉ ị
Thi t k giao di n: ế ế ệ
B n t o m t gi i pháp và thêm m t d án m i cùng tên là MyURLCollection và thi ạ ạ ộ ả ộ ự ớ t kế ế
giao di n nh sau: ư ệ
Biên so n: Ph m Đ c L p - 9 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
Vi t mã: ế
Tr ướ ế c h t ta t o m t t p h p đ ch a các tên đ a ch web mà ng ể ứ ộ ậ ạ ợ ỉ ị ườ ằ i dùng đã thăm b ng
phát bi u sau đ t ngay d i dòng khai báo l p form1: ể ặ ướ ớ
Dim URLsVisited As New Collection()
t c các th t c trong form đ u có th truy c p đ n t p h p này. V i phát bi u này thì t ể ớ ấ ả ế ậ ủ ụ ể ề ậ ợ
Ti p theo t o th t c Button1_Click và nh p mã nh sau: ủ ụ ư ế ạ ậ
Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click URLsVisited.Add(TextBox1.Text) System.Diagnostics.Process.Start(TextBox1.Text) End Sub
Ph có n i dung là ươ ng th c Add(TextBox1.Text) s thêm vào t p h p m t ph n t ẽ ầ ử ứ ậ ợ ộ ộ
thu c tính text c a ô textbox1. ủ ộ
Sau đó ta cũng t o th t c Button2_Click cho phép ng i dùng li t kê t t c các trang ủ ụ ạ ườ ệ ấ ả
web đã duy t b i ng i dùng (các ph n t ệ ở ườ ầ ử trong t p h p): ậ ợ
Private Sub Button2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim URLname, AllURLVisited As String For Each URLname In URLsVisited AllURLVisited = AllURLVisited & URLname & vbCrLf Next MsgBox(AllURLVisited, MsgBoxStyle.Information, _ "Websites Visited") End Sub
ng trình: Ch y ch ạ ươ
n F5 ch y ch Ấ ạ ươ ế ng trình. B n có th nh p các đ a ch khác đ a ch c a localhost n u ỉ ủ ể ậ ạ ị ỉ ị
b n có k t n i Internet. ế ố ạ
Biên so n: Ph m Đ c L p - 10 - Add: cnt-44-dh, ứ ạ ạ ậ VIMARU
H ng d n l p trình VB.NET ẫ ậ ướ ươ ậ ng 11: S d ng m ng và t p ử ụ ả Ch h pợ
5. T p h p COLLECTION trong ng d ng VBA
ậ ợ
ụ
ứ
B n có th vi ể ế ạ t các ng d ng macro cho ng d ng văn phòng b ng ngôn ng VBA ụ ụ ứ ữ ứ ằ
(Visual Basic for Application). Trong các ng d ng này thì t p h p đóng vai trò r t quan ứ ụ ấ ậ ợ
tr ngọ . Có th tham kh o thêm trong các quy n sách c a trang Appress.Com. ủ ể ể ả
6. T ng k t ch
ng
ổ
ế
ươ
ng nh ng gì đã h c. Làm b ng t ng k t ch ổ ế ả ươ ọ Đ ng th i dùng t p h p thay th cho bài ậ ữ ế ồ ờ ợ
ng tr c. t p v m ng trong ch ậ ề ả ươ ướ
Biên so n: Ph m Đ c L p - 11 - Add: cnt-44-dh, ứ ậ ạ ạ VIMARU