VB Net

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 218

BO GIAO DUC VA AO TAO AI HOC QUOC GIA THANH PHO HO CH MINH TRNG AI HOC KHOA HOC T NHIEN

KHOA CONG NGHE THONG TIN

O AN TOT NGHIEP KHOA CONG NGHE THONG TIN CHUYEN NGANH : CONG NGHE PHAN MEM

e tai:

TM HIEU MICROSOFT VISUAL BASIC.NET VA NG DUNG

GVHD: SVTH :

NGUYEN TAN TRAN MINH KHANG VO HOANG ANH MSSV: 9800503 TRAN TRUNG HIEU MSSV: 9800552

Tp. HCM 7/2002

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Li Cam n
"!#

Chung em xin chan thanh cam n thay Nguyen Tan Tran Minh Khang, ngi a hng dan chung em rat nhiet tnh trong qua trnh thc hien e tai. Xin cam n tat ca cac thay co khoa CNTT, anh ch sinh vien i trc, cac ban sinh vien cung khoa a tan tnh giup , gii thieu tai lieu, sach v cho chung em trong 4 nam hoc qua. Mac du a co gang va no lc trong viec tm hieu, nghien cu va thc hien e tai, nhng do thi gian co phan han che, noi dung e tai kha mi nen viec thc hien o An se khong tranh khoi thieu sot. Rat mong nhan c s ong gop y kien cua tat ca thay co, anh ch va cac ban e tao ieu kien cho viec thc hien o An Tot Nghiep ngay cang hoan chnh hn. Xin chan thanh cam n !. Thang 7 nam 2002 Nhom sinh vien thc hien e tai Vo Hoang Anh Tran Trung Hieu

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Li Gii Thieu
$%&

Trong vai thap nien tr lai ay, cong nghe thong tin phat trien mot cach manh me. May tnh a tr nen pho bien, no tr thanh mot cong cu tr giup ac lc cho con ngi. Hau het, moi cong viec van phong eu a s dung may tnh, phan mem may tnh. Song song ben canh o, cac ngon ng lap trnh e tao ra cac phan mem cung ngay cang phat trien phong phu : ngon ng lap trnh hng cau truc, ngon ng lap trnh hng oi tng , ac biet la lap trnh Web, cong nghe Internet Visual Basic.NET la mot trong so cac cong cu e viet chng trnh phan mem. Ngay t luc s khai, ngon ng lap trnh Visual Basic(tien Visual Basic.NET ) a c Microsoft xay dng da tren c s cua mot ngon ng lap trnh a chc nang de s dung va c rat nhieu lap trnh vien chon lam ngon ng chnh cho mnhva nay Visual Basic.NET lai c Microsoft tung ra vi nhieu tnh nang mi nham ap ng nhng phan ma Visual Basic 6.0 cha ho tr c hay cha thoa man nhng ngi lap trnh tren the gii. V vay vi nhng cai mi cua Visual Basic.NET (v du nh: hng oi tng, lap trnh Web, o hoa, ) se dan nhng nha lap trnh en vi nhng ha hen mi .

------oOo------

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Phan 1..........................................................................................................................7 TM HIEU VISUAL STUDIO.NET ......................................................................7 Chng 1 .....................................................................................................................8 GII THIEU VISUAL STUDIO.NET.......................................................................8 1.1. Cac khoi kien tao cua .NET(CLR,CTS va CLS) ..........................................8 1.2. Cac th vien c s .NET (Base class library) ...............................................9 1.3. Nh phan.NET (NET assembly).....................................................................9 1.4. Vung d lieu Meta (MetaData)....................................................................9 1.5. Qua trnh th hien luong cong viec cua .NET ............................................10 1.6. Cac khong gian ten (Namespace) cua .NET...............................................10 1.7. Visual Studio.NET........................................................................................12 Chng 2 ...................................................................................................................18 NGON NG VISUAL BASIC.NET........................................................................18 2.1. Gii thieu :....................................................................................................18 2.2. Namespaces..................................................................................................18 2.3. Kieu d lieu ..................................................................................................23 2.3.1. Hang (Constants) ........................................................................................24 2.3.2Cac Toan T va Phep Toan.........................................................................24 2.3.3Cau truc.........................................................................................................26 2.3.4Lenh re nhanh. .............................................................................................26 2.3.4.1 Lenh IFTHEN ELSE ................................................................26 2.3.4.2 Lenh Switch Case.............................................................................27 2.3.5Lenh Lap.......................................................................................................28 2.3.5.1 Lenh While Loops ............................................................................28 2.3.5.2 Lenh For Loops ................................................................................29 2.3.6Mang .............................................................................................................30 2.3.7Ham ...............................................................................................................32 Chng 3 ...................................................................................................................36 HNG OI TNG MI TRONG VB.NET(OOP)...........................................36 3.1. Van e khai quat cua hng oi tng .......................................................36 3.1.1.Classes va Objects, nguyen tac Abstraction ..............................................36 3.2. Fields, Properties, Methods va Events, nguyen tac Encapsulation............37 3.2.1. Inheritance (Tha Ke)......................................................................39 3.2.2. Polymorphism (a dang) .................................................................41 3.3. Dung hng oi tng trong VB.NET.........................................................42 3.3.1.Tao mot Class mi ......................................................................................42 3.3.1.1. Class Keyword..............................................................................43 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 1

MUC LUC

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

3.3.1.2. Classes va Namespaces ...............................................................43 3.3.1.3. Tao ra Methods.............................................................................44 3.3.1.4. Tao ra Properties ..........................................................................45 3.3.1.5. ReadOnly va WriteOnly property ...............................................45 3.3.1.6. Default Properties ........................................................................45 3.3.2.Overloading methods(phng thc qua tai) ...............................................47 3.3.3.Object Lifecycle (cuoc i cua oi tng).................................................47 3.3.3.1. New method(tao phng thc mi) .............................................47 3.3.3.2. Termination(s hoan thanh, ket thuc) .........................................49 3.3.3.3. Dung Dispose Method..................................................................50 3.3.4.Tha ke ........................................................................................................51 3.3.5.Ngan can Tha ke .......................................................................................54 3.3.6.Tha ke va Pham vi hoat ong...................................................................54 3.3.7.Protected Methods.......................................................................................56 3.3.8.Overriding Methods.....................................................................................56 3.3.8.1. Virtual Methods............................................................................57 3.3.8.2. Keyword Me.................................................................................58 3.3.8.3. Keyword MyBase.........................................................................59 3.3.8.4. Keyword MyClass ........................................................................60 3.3.9.Overridding Method New ...........................................................................62 3.3.10.Tao BaseClasses va Abstract Methods ....................................................62 3.3.10.1. Keyword MustInherit (Phai c Tha Ke) ...............................62 3.3.10.2. Keyword MustOverride (Phai b Lan Quyen) ............................63 3.3.10.3. Abstract Base Classes ..................................................................63 3.3.11.Shared class members ( Cac thanh vien e dung chung cua class) ........64 3.3.11.1. Shared Methods............................................................................64 3.3.11.2. Shared Variables ..........................................................................65 3.3.11.3. Global values................................................................................66 3.3.12.Events (S kien) ........................................................................................67 3.3.12.1. Raising Event e x ly trong mot Project khac ..........................67 3.3.12.2. Shared Events ...............................................................................70 3.3.13.Early Binding hay Late Binding (Hieu lc Sm hay Tre) .......................71 3.3.13.1. Dung Object Type ........................................................................72 3.3.13.2. Late Binding va Reflection..........................................................72 3.3.13.3. Dung Function CType ..................................................................73 3.3.14.Tha ke t mot ngon ng khac .................................................................74 3.3.14.1. Tao mot VB.NET BaseClass .......................................................74 3.3.14.2. Tao mot C# SubClass...................................................................74 3.3.14.3. Tao mot program Client...............................................................76 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 2

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Chng 4 ...................................................................................................................78 LAM VIEC VI OI TNG O HOA(GDI+) ..................................................78 4.1. So sanh gia o hoa cua VB.NET va VB 6.0 .............................................78 4.2. Khao sat Khong gian o hoa GDI+ ............................................................78 4.3. Khai quat ve Khong gian ten System.Drawing ..........................................79 4.4. Xay dng mot khong gian lam viec vi GDI+............................................81 4.4.1Cac kieu tien ch cua Sytem.Drawing.........................................................82 4.4.1.1 Kieu Point(F) ....................................................................................82 4.4.1.2 Kieu Rectangle(F)............................................................................83 4.4.1.3 Kieu Size(F) va Region ...................................................................83 4.4.1.4 Lp Region .......................................................................................83 4.4.2Trnh ieu khien Paint() ...............................................................................84 4.4.3Lp Graphics.................................................................................................87 4.5. Tm hieu ve mau (color) ..............................................................................88 4.6. Lam viec vi Phong ch ..............................................................................90 4.7. Khong gian ten System.Drawing.Drawing2D............................................91 4.8. Chuyen at cac anh......................................................................................93 Chng 5 ...................................................................................................................94 NHAP, XUAT va Namespace SYSTEM.IO...........................................................94 5.1. Kieu Directory(Info) ....................................................................................94 5.2. Kieu FileInfo ................................................................................................95 5.3. Xem xet phng phap FileInfo.Open() .......................................................96 5.4. Kieu FileStream ...........................................................................................97 5.5. Kieu Streamwriter & StreamReader ...........................................................97 Chng 6 ...................................................................................................................99 GII THIEU WINDOWS FORMS .........................................................................99 6.1. Hai khong gian ten GUI ...............................................................................99 6.2. Khai quat ve Windows.Forms ......................................................................99 6.3. Tao mot Form ...............................................................................................99 6.3.1.Tao form vi VB.NET...............................................................................100 6.3.2.Lam viec nhieu form trong mot Project vi VB.NET .............................104 6.4. Them mot s kien ieu khien vao Form(Event Handler) ........................106 6.4.1.Lam viec vi cac s kien chuot:...............................................................106 6.4.2.Lam viec vi cac s kien ban phm..........................................................109 6.5. Xay dng mot ng dung MDI (Multiple document interface) ...............111 6.5.1.Xay dng Form Cha(MDI parent ) va form con (MDI children).............111 6.6. Tao thc n ca so( Windows Menu).....................................................112 6.7.1.Kieu Menu$MenuItemCollection.............................................................114 6.7.2.Them he thong menu vao trong Form(adding menus to a form) ............115 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 3

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

6.7.3.Dung PopUp Menu vao trong Form .........................................................117 6.7.4.Dung ContextMenu vao trong Form.........................................................117 6.7. Tm hieu ve thanh tnh trang(status bar) ...................................................118 6.8. Them Toolbar vao form ............................................................................119 Chng 7 .................................................................................................................121 LAP TRNH VI CAC WINDOWS FORMS CONTROL TRONG VB.NET ....121 7.1. He phan cap Windows Forms ....................................................................121 7.2. Cac control trong WindowsForms: ............................................................123 7.2.1.TextBox control .........................................................................................123 7.2.2.RichTextBox control .................................................................................124 7.2.3.Label control..............................................................................................124 7.2.4.Button control ............................................................................................124 7.2.5.RadioButton va GroopBox control ...........................................................125 7.2.6.ListBox control ..........................................................................................125 7.2.7.ComboBox control.....................................................................................126 7.2.8.TrackBar control........................................................................................127 7.2.9.MonthCalender Control.............................................................................128 7.2.10.Cac ieu khien con chay : DomainUpDown va NumericUpDown ......130 7.2.11.Lam viec vi cac ieu khien Panel .......................................................132 7.2.12.Lam viec vi ToolTips Gan cac ToolTips cho cac control ................133 7.2.13.Anchoring (bo neo)..................................................................................134 7.2.14.Docking (gan vao) ...................................................................................136 7.2.15.Control Splitter ........................................................................................138 Chng 8 .................................................................................................................142 ADO.NET ...............................................................................................................142 8.1. ADO.NET la g ? .......................................................................................142 8.1.1.S khac nhau gia ADO.NET va ADO co ien: .....................................142 8.1.2.Hoat ong toan canh cua ADO.NET........................................................143 8.1.3.Phng thc ket noi d lieu cua ADO.NET.............................................144 8.2. Mo hnh hoat ong cua ADO.NET............................................................145 8.3. Kien truc cua ADO.NET............................................................................146 8.4. Cac kieu cua khong gian (Namespace) System.Data...............................146 8.4.1.Kieu DataSet .............................................................................................147 8.4.1.1 Vai tro cua DataSet........................................................................147 8.4.1.2 Cac tnh chat cua DataSet..............................................................149 8.4.1.3 Cac phng thc cua DataSet........................................................150 8.4.2.DataTable ..................................................................................................151 8.4.2.1.Vai tro cua DataTable............................................................................151 8.4.2.2.Tnh chat cua DataTable........................................................................151 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 4

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

8.4.2.3.Xay dng va thao tac DataTable...........................................................152 8.4.3.DataColumn...............................................................................................153 8.4.4.DataRow ....................................................................................................154 8.5. Cac kieu cua khong gian (Namespace) System.Data.OleDb...................155 8.5.1.OleDbConnection ......................................................................................156 8.5.2.OleDbCommand........................................................................................157 8.5.3.OleDbDataReader.....................................................................................157 8.5.4.OleDbParameter........................................................................................158 8.5.5.OleDbDataAdapter....................................................................................160 8.6. Cac kieu cua khong gian (Namespace) System.Data.SqlClient ..............161 8.7. Van dung Wizards va dung DataGrid ......................................................162 Chng 9 .................................................................................................................167 GII THIEU ASP.NET (ASP+) ............................................................................167 9.1 Gii thieu ASP.NET..................................................................................167 9.2 Tm hieu bo khung web nen the he ke tiep NGWSF(Next Generation Web Service Framework). .....................................................................................167 9.2.1.Gii thieu :.................................................................................................167 9.2.2.Tm hieu khung nen NGWSF ...................................................................168 9.2.3.Ngon ng trung gian pho dung (common intermediate)..........................169 9.3 C s ha tang cua cac ng dung Web .......................................................170 9.4 Nhng khac biet gia ASP.NET va ASP .................................................171 9.5 ASP.NET va dch vu Web..........................................................................173 9.6 ASP.NET cau hnh va phan phoi ng dung. .............................................173 9.6.1.Tap tin web.config.....................................................................................173 9.6.2.Tap tin global.aspx. ...................................................................................174 9.7 Trang thai cua bien Session va Application trong ASP.NET...................174 9.8 X ly loi trong ASP.NET. ..........................................................................175 9.9 Ket chng..................................................................................................176 Chng 10 ...............................................................................................................177 CACH TAO TRANG ASP.NET ............................................................................177 10.1. Gii thieu Web Forms............................................................................177 10.2. So sanh s khac biet gia Web forms va Windows forms ...................177 10.3. Sau ay chung ta se xem cach tao mot Web forms n gian. .............178 10.4. Cach a mot controls vao Web Forms ................................................180 10.5. Cac thanh phan ieu khien trong ASP.NET .........................................184 10.5.1.ieu khien noi tai (intrinsic control) ......................................................185 10.5.2.ieu khien danh sach (Listcontrol) ........................................................186 10.5.3.ieu khien a nang (rich control)...........................................................187 10.5.4.ieu khien kiem tra (Validate control) ..................................................187 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 5

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Chng 11 ...............................................................................................................188 XAY DNG TRANG ASP.NET NANG CAO .....................................................188 11.1. Lap trnh vi ma an. ...............................................................................188 11.2. Tao cac mau trang co kha nang dung lai (Pagelets). ...........................190 11.2.1.Xay dng cac mau Pagelet .....................................................................191 11.2.2.V du ve s dung Pagelet........................................................................192 11.2.3.nh ngha thuoc tnh va phng thc cho Pagelets. .............................193 11.3. S dung vung em Cache cua ASP.NET..............................................194 11.3.1.Lap vung em cho d lieu ket xuat. .....................................................194 11.3.2.S dung cache e lu tr bien moi trng .............................................196 11.3.2.1 Tao va truy xuat cac bien cua oi tng cache ........................196 11.3.2.2 S dung cache trong ASP.NET..................................................197 11.4. Ket chng..............................................................................................198 Chng 12 ...............................................................................................................199 NANG CAP CAC E AN VB 6.0 LEN .NET......................................................199 (Upgrading VB to .NET) ........................................................................................199 12.1. Nhng ieu lu y (considerations) trc khi nang cap len .NET.........199 12.2. Cac bc tien hanh Nang cap (Upgrade)..............................................200 12.3. Co nen nang cap khong ?.......................................................................202 PHAN 2...................................................................................................................203 BAI NG DUNG ...............................................................................................203 e tai ......................................................................................................................204 Xay dng Trang Web Day Hoc VB.NET.............................................................204 1. Hien Trang......................................................................................................204 2. Yeu cau ...........................................................................................................204 3. Phan Tch ........................................................................................................204 S o lp ...........................................................................................................204 Reletionships.....................................................................................................204 Mo ta d lieu cac bang ....................................................................................205 4. Cai at .............................................................................................................206 5. Giao dien.........................................................................................................207 S o giao dien .................................................................................................207 Cac trang chnh .................................................................................................208 TAI LIEU THAM KHAO ......................................................................................215

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Tm Hieu Visual Studio.NET

Phan 1

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Chng 1

GII THIEU VISUAL STUDIO.NET


Ngon ng VisualBasic c nhieu nha lap trnh chon la mot ngon ng chnh cho viec thiet ke,lap trnh nhng ng dung, ac biet la ng dung quan ly c s d lieu , Nhng oi vi ngon ng VB th khong lam ho va long rat nhieu van e nh : ho tr lap trnh hng oi tng, o hoa , ac biet la lap trnh ve cac ng dung Web .nay VisualStudio.NET ra i a ap ng c mot phan nao mong ch cua nhng ngi lap trnh. Nen tang .NET cua Microsoft bieu th mot phong cach hoan toan mi la e xay dng cac ng dung co phan phoi , ng dung Desktop, va di ong. Va cung dnh dang g vi COM co ien, VB 6.0, ...hoac bat ky c cau tien .NET nao. V rang .NET la s chuyen hng triet e e ri xa loi lam viec hien hanh cua tien trnh phat trien Win32, Microsoft cung a cho xuat xng mot t cap nhat mi tinh cua ngon ng lap trnh VisualBasic von d pho dung, co ten la VB.NET, cung a c hng cu the ve pha cac ng dung .NET . Khi tm hieu qua VB.NET ban se thay VB.NET khong n thuan la ban nang cap cua VB 6.0. Thay v the, tot nhat ta nen VB.NET nh la mot ngon ng lap trnh mi n gian tnh c co ve ta ng ngi nh la lap lai trc ay cua mot ngon ng. e tm hieu VB.NET ta phai tm hieu s lc ve c che hoat ong cung nh cach thc to chc cua hng tiep can mi cua .NET 1.1. Cac khoi kien tao cua .NET(CLR,CTS va CLS) Tren quan iem cua lap trnh vien.NET co the c hieu nh mot moi trng thi gian chay mi va mot th vien lp c s chung. Tang thi gian chay c goi la Common Language Runtime(CLR). Vai tro chnh cua CLR la nh v, va quan ly cac kieu .NET nh danh. CLR quan tam en mot so chi tiet cap thap chang han nh quan ly bo nh t ong, tch hp ngon ng, va trien khai gian lc (va nh phien ban) cac th vien ma nh phan. Khoi kien tao khac cua cua .NET o la Common Type System (CTS). CTS mo ta ay u tat ca cac kieu d lieu kha d ma thi gian chay ho tr, ch nh cach tng tac cua cac kieu o vi nhau va neu chi tiet cach bieu th chung theo dang thc d lieu Mata.NET. Commom Language Specification (CLS) la mot loat cac quy tac nh ngha cho mot tap con cac kieu chung bao am cac file nh phan .NET co the c dung mot cach thong suot qua tat ca cac ngon ng nham en nen tang .NET. Cac kieu d lieu noi tai cua CLS nh bang sau sau : SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 8

Hien nay tren the gii

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Lp c s .NET System.Byte System.Int16 System.Int32 System.Int64 System.Single System.Double System.Object System.Char System.String System.Decimal System.Boolean

Phan bieu th VB.NET Byte Short Integer Long Single Double Object Char String Decimal Boolean

Phan bieu th C# Byte Short Int long float double object char string decimal bool

Cac th vien c s .NET (Base class library) Ngoai cac nh chuan CLR , CTS va CLS, nen tang .NET con cung cap mot so th vien lp c s san co cho tat ca cac ngon ng lap trnh .NET. Khong nhng th vien lp c s nay goi rieng nhieu kieu nguyen thuy khac nhau (v du IO tap tin, chuyen at o hoa, va kha nang tng tac vi cac thiet b phan cng ben ngoai ) ma con cung cap phan ho tr cho mot so dch vu ma hau het cac ng dung i thc yeu cau (v du : ieu tac Data Base, Tch hp XML,) 1.3. Nh phan.NET (NET assembly) ng dung .NET xay dng t cac assemblies. Moi assembly phai co mot manifest(ban ke). Co the no nam rieng trong mot file hay nam ben trong mot module. Manifest cha nhng metadata sau ay: Ten va Version number cua assembly Nhng assembly khac (ke ca version number cua assembly) ma assembly nay tuy thuoc vao e chay Types (classes va members) ma assembly nay cho xuat khau Assembly nay oi hoi ieu kien an ninh nao (security permissions) Manifest cho phep ta dung hn mot version cua assembly (tng ng vi DLL trc ay) cung mot luc. T ay khong con register DLL na. Thay vao o, ta ch can copy cac assembly vao mot subfolder /bin cua chng trnh chnh. 1.4. Vung d lieu Meta (MetaData) Metadata la cac d kien cat ngha(mo ta) cho ta biet ve d kien nh lp, cau truc , kieu iem danh,vv.. V du IDL [interface Definition Language] la mot ngon ng Meta dung e mo ta cac kieu ham ben trong mo he phuc vu COM a SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 9

1.2.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cho Th du XML Schema cua mot XML file la metadata cat ngha ve data structure cua data trong file XML. Chnh cai XML Schema cung la mot file XML. Cac ng dung .NET components, goi la Assembly, cha rat nhieu metadata e cat ngha ve chnh no (self describing). Tm biet ve mot ng dung .NET e co the lam viec vi no th goi la Reflection. 1.5. Qua trnh th hien luong cong viec cua .NET Ma nguon .NET cua VB.NET, C#,C++.NET,

Vai trnh bien dch .NET

Hp tap DLL/EXE (IL va d lieu meta)

Thi hanh ng dung

Cac khong gian ten (Namespace) cua .NET Trong .NET th Namespace(tm hieu ro chng sau) quan trong nhat ma ta chu y o la ten System. Khong gian ten nay cung cap mot than loi ma cac kieu ma ta can huy ong nhieu vi t cach la mot nha phat trien. Namespace System cung cap nhieu khong gian ten .NET c the hien bang nh sau : Cac Namespace cua .NET Cac Namespace.NET Y ngha System Ben trong System co nhieu lp cap thap ng pho vi vi cac kieu nguyen thuy, cac phep SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 10

1.6.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

System.Collections

System.Data System.Data.Commom System.Data.OleDb System.Data.SqlClient System.Diagnostics

toan hoc, gom rac ,v.v.v Namspace nay nh ngha mot so oi tng thung cha lu tr v du : Array Ust,Queue,Sortadlist Cac NameSpace nay c dung cho thao tac C s d lieu.

Namespace nay chung ta gap nhieu kieu co the c cac ngon ng .NET s dung e gi roi va theo doi thi hanh cua ma nguon. System.Drawing Namespace nay cung cap o hoa GDI+ v du System.Drawing.Drawing2D nh Bitmap, . System.Drawing.Printing System.IO Namespace nay gom ay u cac ieu tac xuat nhap bao gom xuat nhap tap tin , vung em v.vv System.NET Namespace nay cha cac kieu lien quan en lap trnh mang.(yeu cau, ap ng , noi,) System.Reflection nh ngha cac muc ho tr tnh nang kham pha System.Reflection.Emit kieu vao thi gian chay, tao ong va trieu goi cac kieu tuy bien. System.Runtime.InteropServ Cung cap cac ac cu e tng tac vi ma ices khong quan[unmanaged code] System.Runtime.Remoting System.Security Bao mat la mot kha tch hp cua vu tru .NET. ay gap nhieu ng pho vi cac mat ma hoa quyen,v.v. System.Threading Namespace nay ng pho vi cac van e lap sau. ay gap nhieu kieu Mutex, Thread va Times out System.Web Namespace nay c ng dung cho viec lap trnh web. System.Windows.Forms Cung cap cac control cho ngi dung thiet ke giao dien mot cach trc quan. System.Xml Cha nhieu bieu th cho XML loi, cac can tot [primitives]va cac kieu ieu tac vi d lieu Xml. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 11

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

1.7.
sau:

Visual Studio.NET e chay Visual Studio.NET ta phai tham khao va tien hanh theo nh bc

Co hai cach e bat au mot project mi trong VS.NET. Hoac Click New Project trong trang Web StartPage nh di ay:

Hoac dung Menu command File | New | Project giong nh trong VB6 IDE:

Khi Add New Project, Name se la subfolder name cua New Project. Ban co the SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 12

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

chon VB.NET, C# hay VC++.NET project. Trong tng lai chung ta se ch nham vao VB.NET va C# thoi. Ngoai ra SetUp and Deployment bay gi la mot loai project nam trong IDE cua Visual Studio.NET, ta khong can phai chay rieng chng trnh Package and Deployment ben ngoai VB6 IDE nh trc ay. Solution trong VS.NET co the cha hn mot Project va bao gom tat ca nhng files ban liet ra la can thiet cho Solution. Neu mot trong nhng files ay b thay oi ben ngoai VS.NET, khi VS.NET kham pha ra no se load vao trong VS.NET cho ban neu ban ong y.

e m mot Solution/Project co san, ban co the click link cua ten project tren trang StartPage, hay dung Menu command File | Open | Project , hay Menu Command File | Recent Projects. Visual Studio.NET IDE

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

13

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Giao dien cua VS.NET co nhng ac iem giong nh Delphi va Visual InterDev cho code c phat sinh t ong, Windows nam chung thanh Tab set hay float khap ni, va ho tr Solution rat thch hp cho viec trien khai cua ca oi. Toolbox ben trai cha Controls cho Windows Forms, Web Forms, General Components, Data Components, HTML tags, XML Schema tools v.v... Khi mot Form ang hien th, click len mot button trong Toolbox e chon Tool Set ban can. Toolbox trang thai Fixed displayed (nh trong hnh tren) khi cay ghim pha tren am xuong. Ban co the click cay ghim cho no nam ngang va vertical Toolbox tab hien ra ben trai. Luc ay, Toolbox trong trang thai Auto Hide (hien ra/rut vao) nh di ay:

Ban co the goi hau het cac Windows hien th bang cach dung Menu commands View, View | Other Windows va Debug | Windows:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

14

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cac Windows ben phai co the noi, nam chong len nhau thanh nhng Tabs trong mot tap Window hay nam canh nhau vertically tiled. Nam Tittle bar e di nguyen mot tap Window i. Nam Window Tab cua mot tap Window e keo ch mot Window ra. Ban co the e chong hai Windows lai vi nhau bang cach nam Tittle bar cua mot Window e chong len mot Window khac. Th nhch i, nhch lai, trc khi buong Window ra e lam quen vi ket qua. Pha di co Task List Window e ban gi so sach ve dien tien cua d an va quan ly ca oi. Khi ban dung menu command Build | Build e compile program, neu co errors chung se c hien th trong Task List Window. Double click len mot hang error e mang cursor en cho gay ra error ay trong code window. Trong hnh di ay, ta co y comment out hang Dim sw As StreamWriter:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

15

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ngoai ra, e Debug bay gi ban co Output Window e in ra cac messages ma trong VB6 ban dung Immediate Window. Th du trong VB6 ban viet: Debug.Print "Count=" & CStr(Count) e in ra trong Immediate Window, th trong VB.NET ban co the viet: Console.WriteLine("Count= {0}", Count) e in ra trong Output Window. D nhien ban van co the tiep tuc dung Immediate Window trong cong tac Debug nh trc ay trong VB6. Cha het, VS.NET con cho ban Command Window e ta co the enter nhng VS.NET commands e manipulate IDE, x ly macros, .v.v e hien th Window nay ban dung menu command View | Other Windows | Command Window. e tien hn, ban drag title bar cua no e chong len tab bar cua Task List va Output windows.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

16

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Neu ta enter mot command nh: File.AddNewProject IDE se hien th Add New Project dialog. VS.NET ho tr Macro e ban co the record va playback mot chuoi cong tac. Phng tien Integrated Debugging cho ta Debug Menu, Call Stack Window, Breakpoints Window va Watch and Value Display Windows. Thng thng ban se Add Reference cac .NET components. Nhng ban cung co the dung ActiveX (co san trong VB6) trong .NET application bang cach Add Reference COM (click Tab COM tren Add Reference Dialog). .NET se goi ActiveX thanh mot NET component (click Yes tra li cau hoi "Would you like to have a wrapper generated for you?"). Ngoai ra dung Add Reference Projects e refer en DLL cua cac User developed DLL.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

17

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

NGON NG VISUAL BASIC.NET


2.1.

Chng 2

VB7 a hoan toan la Object Oriented, tc la cho ta dung lai (reuse) classes/forms theo cach tha ke that thoai mai, nen no khac VB6 nhieu lam. Dau vay, oi vi VB6 programmers hoc VB.NET khong kho. Ly do la VB.NET khong cho them nhieu t mi (reserved words). Noi chung cac y niem mi trong VB.NET eu de lnh hoi, nhat la khi em ra ap dung cach thc te. o la nh Microsoft van gi nguyen tac dau va lam san (cua VB6) nhng g rac roi pha sau san khau, e ta co the tap trung vao viec tm kiem mot giai phap, thay v qua ban tam vao cach thc lam mot viec g. Chnh nguyen tac ay a giup Microsoft chieu mo c 3 trieu VB6 programmers tren khap the gii. VB.NET cong hien cho VB programmers mot cong cu rat hu hieu e dung cho moi hoan canh, t database, desktop, distributed, Internet cho en real-time hay mobile (pocket PC). Nhng u iem (features) cua VB.NET en t chc nang cua .NET Framework. No mang en phng tien lap trnh cho mang cach Object Oriented nh XML, Remoting, Streaming, Serialisation, Threading .v.v... Nhng th nay tuy la nhng khong kho hoc, ngc lai se tiet kiem rat nhieu th gi. Mac dau VB6 la mot ngon ng lap trnh trng thanh va hieu nang, chac chan hay con ton tai trong nhieu nam na, nhng hoc them VB.NET la mot au t tng oi t ton kem va am bao hue li gap bao nhieu lan trong hang thap nien ti. 2.2. Namespaces Namespaces la mot cach at ten e giup sap at cac Classes ta dung trong program mot cach th t hau de tm kiem chung. Tat ca code trong .NET, viet bang VB.NET, C# hay ngon ng nao khac, eu c cha trong mot namespace. iem nay cung ap dung cho code trong .NET system class libraries. Chang han, cac classes cua WinForms eu nam trong System.Windows.Forms namespace. Va cac classes dung cho collections nh Queue, Stack, Hashtable .v.v.. eu nam trong System.Collections namespace. Tat ca code ta viet trong program cua mnh cung eu nam trong cac namespaces. Trc ay trong VB6, moi khi nhac en mot Class trong mot COM ten SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

VB.NET, con goi la VB7, chang qua la C# viet theo loi Visual Basic. Nay

Gii thieu :

18

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

CompName ta viet CompName.Classname (con goi la PROGID) , tc la cung dung mot dang namespace. Tuy nhien phng phap nay co mot vai gii han: a ch cua class b buoc cng vao component ang cha no. Nhng classes khong nam trong mot COM component th khong co "namespace". Cach goi ten PROGID ch co mot bac thoi, khong co bac con, bac chau. Ten cua Component luon luon co hieu lc tren khap ca computer. Namespaces trong .NET khac phuc c moi gii han noi tren trong VB6. Nhieu assemblies co the nam trong cung mot namespace, ngha la classes tuyen bo trong cac components khac nhau co the co chung mot namespace. ieu nay cung ap dung xuyen qua cac ngon ng, giup cho mot class viet trong VB.NET co the nam trong cung mot namespace vi mot class viet trong C#, chang han. Hn na, trong mot assembly co the co nhieu namespaces, du rang thong thng ta ch dung mot namespace duy nhat cho tat ca cac classes trong ay. Nh la mot assembly trong .NET th ai khai tng ng vi mot COM component. Tat ca code trong .NET eu nam trong nhng assemblies. By default, ten cua project c dung lam namespace. Neu ban right click len project name NETListbox trong Solution Explorer cua program Demo, roi chon Properties trong popup menu, IDE se hien th Property Pages dialog nh di ay:

Ban thay Root namespace cua project la NETListbox. Ban co the thay oi ten namespace ay neu ban muon. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 19

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Namespaces co the c phan chia th bac giong nh Folders trong mot File Directory. No se giup user sap at cac classes theo ung nhom cho trong sang va de oc. Th du ban ang viet mot program cho mot hang san xuat, ban se dung namespace NhaSanXuat root level. Ben trong namespace ay ban se tao them cac nhanh cua chng trnh nh: 1.NhaSanXuat.TonKho 2.NhaSanXuat.SanPham 3.NhaSanXuat.KeToan.ChiPh 4.NhaSanXuat.KeToan.ThuNhap Nh the ta a nh ngha mot base namespace ten NhaSanXuat, vi nhng namespaces con, chau ben trong, moi namespace co cha classes, modules, enums, structures va cac namespaces khac. Moi namespace cha nhng phan cua code thch hp cho no trong program noi chung. Trong File Directory, ta co the co hai files du mang cung ten nhng nam trong hai folders khac nhau. Giong nh vay, trong .NET ta co the co hai classes co cung mot ten nhng nam trong hai namespaces khac nhau. o la v khi ta viet ten cua mot class vi ca namespace cua no th co the phan biet vi mot class khac vi cung ten. Local va Global Namespaces Khac vi COM components vi "namespace" cua chung ap dung cho khap ca computer, namespaces cua .NET thong thng la Local, ch co application program cua no thay ma thoi. .NET cung ho tr Global namespace, nhng phai c ky ten (digitally signed) va ang ky vi.NET runtime e cha no trong global assembly cache. Cong viec lam mot namespace Global rac roi nh the e giam thieu trng hp ta tr ve tnh trang DLL hell trc ay. Dung Namespaces Ta co the dung namespaces bang cach noi thang ra (explicitly) vi nguyen ten (Direct Addressing) hay ham y (implicitly) vi Import keyword. Nhng ieu tien quyet la ta phai reference cai assembly cha namespace ma ta muon dung. Ta thc hien viec ay vi Menu command Project | Add References. Khi Add References dialog hien ra, chon Tab .NET cho standard .NET components hay Tab Projects cho DLL cua mot .NET project khac , highlight DLL ban muon roi click Select button, oan click OK.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

20

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Chang han ta muon read va write t studio (cai console input/output stream). Cai namespace ta can se la System.Console. Trong cach Direct Addressing ta se code nh sau e viet hang ch "Chao the gii": System.Console.WriteLine ("Hello world!") Neu ta dung Import keyword bang cach nhet vao cau Imports System.Console au code module, ta co the code gon hn: WriteLine ("Hello world!") Di ay la mot so namespaces thong dung: Namespace System.IO Chc nang Classes ien hnh oc/Viet files va FileStream, Path, StreamReader, cac data streams StreamWriter khac o hoa Bitmap, Brush, Pen Color, Font, Graphics

System.Drawing

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

21

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

System.Data

Quan ly data

DataSet, DataTable, DataRow, SQLConnection, ADOConnection Queue,

System.Collection System.Math System.Diagnostics System.XML

Tao va quan ly cac ArrayList, BitArray, loai collections Stack, HashTable Tnh toan Debug Sqrt, Cos, Log, Min Debug, Trace

Lam viec vi XML, XMLDocument, XMLElement, Document Object XMLReader, XMLWriter Model Cho phep kiem soat Cryptography, an ninh Policy Permission,

System.Security

Aliasing Namespaces (dung b danh) Khi hai namespaces trung ten, ta phai dung nguyen ten (ke ca goc tch) e phan biet chung. ien hnh la khi ta dung nhng namespaces lien he en VB6 nh Microsoft.Visualbasic. Thay v code: Microsoft.Visualbasic.Left ( InputString,6) ta tuyen bo: Imports VB6= Microsoft.Visualbasic Sau o ta co the code: VB6.Left ( InputString,6) Dung Namespaces keyword Trong th du ve program co Root Namespace la NhaSanXuat nh noi tren, neu ta muon at ra mot namespace con la TonKho, ta phai dung NameSpace keyword trong code nh sau: ' Root Namespace la NhaSanXuat Namespace TonKho Class PhongLanh ' Code cho Phong Lanh End Class End Namespace Bay gi muon noi en class PhongLanh ben trong namespace TonKho ta se code nh sau: NhaSanXuat.TonKho.PhongLanh SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 22

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Kieu d lieu Mot thay oi ln cho Data Type cua VB.NET, la nhng variables dung Data Type a phng nh Integer, Single, Boolean,.v.v.. eu la nhng Objects. Chung eu c derived (xuat phat) t Class can ban nhat ten Object trong VB.NET. Neu ban th dung Intellisense e xem co bao nhieu Functions/Properties mot Object loai Integer co, ban se thay nh di ay:

2.3.

Danh sach kieu d lieu Kieu Boolean Byte Char Decimal Double Integer Long Object Short Single Kch thc 4 Bytes 1 Bytes 2 Bytes 12 Bytes 8 Bytes 4 Bytes 8 Bytes 4 Bytes 2 Bytes 4 Bytes MSSV:9800503 MSSV:9800552 23

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

String UserDefined

10 Bytes Tong kch thc cua cac thanh phan

Co mot vai khac biet gia VB va VB.NET o Trong VB6 ta biet mnh se gap Division by Zero error khi mau so bang 0, nhng ay program se viet trong Output Window ch Infinity (vo cc). Tng t nh vay, neu ta viet code: Dim dValueA As Double Dim dValueB As Double dValueA = 0 dValueB = 0 Console.WriteLine(dValueA / dValueB) Ket qua se la ch NaN (Not a Number) hien th trong Output Window. o VB.NET dung Decimal data type vi 128 bits e thay the Currency data type trong VB6. No co the bieu dien mot so ti 28 digits nam ben phai dau cham e cho that chnh xac. He cang nhieu digits nam ben phai dau cham th tam tr so cua Decimal cang nho hn. o Kieu Variant khong con ton tai trong VB.NET o Co the khi tao bien khi khai bao vd : Dim x as Integer = 5 Dim dblValue as Double = 22.5 2.3.1. Hang (Constants) Hang giong vi bien nhng khong the thay oi gia tr khi a thay bao.Khi khai bao Constants trong VB.NET ta phai khai ro Data type cua no la String, Integer, Boolean ..v.v.: Vd : Public constant myConstantString As String = "happy" Public Const maxStudent As Integer = 30. 2.3.2 Cac Toan T va Phep Toan. Cac toan t trong VB.NET Pham Tru toan t SVTH:Vo Hoang Anh Tran Trung Hieu Ky hieu 24

MSSV:9800503 MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

So mu Cong, Chia Tr, Nhan,

^ +, -, *, / \ Mod & =, <>, <, >, <=, >=, Like, Is, TypeOf., .Is Not And, AndAlso Or , OrElse Xor

Chia so nguyen Modulus Chap noi Quan he Phu nh ieu kien va ieu kien hoac ieu kien Xor

VB.NET cho ta them cach viet phep toan mi ma C programmers rat thch t lau nay. X += 4 tng ng vi X = X + 4 Mess &= " text" tng ng vi Mess = Mess & " text"

Arithmetic Operation Cong Tr Nhan Chia Chia Integer Luy tha Ghep Strings

Trong VB6 X = X +5 X = X - 10 X=X*7 X = X / 19 X = X \ 13 X=X^3 X = X & "more text"

Cach viet tac mi X += 5 X -= 10 X *= 7 X /= 19 X \= 13 X ^= 3 X &= "more text"

Ta van co the tiep tuc dung cach viet trong VB6, nhng bay gi co them mot cach viet gon hn. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 25

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

2.3.3 Cau truc Cau truc cho phep tao ra nhng loai d lieu theo ngi dung T khoa Type trong Visual Basic c thay the bang Structure Cac bien khai bao trong cau truc phai khai bao vi t khoa Dim Cu phap : [Public|Private|Friend] Structure varname NonMethod Declarations Method Declarations End Structure Vd :
Public Structure UStudent

Public FullName As String Public Age As Integer End Structure 2.3.4 Lenh re nhanh. Lenh IFTHEN ELSE 2.3.4.1 Cu phap : If condition Then [statement] [Else if conditions-n Then [elseifstatements]]. . . [Else [else statement]] End If Cac phep toan so sanh : =, <, <=, >, >=, <>, Cac toan t ieu kien : And, Or, Not .

Cac ky t ai dien so sanh khi dung vi t khoa Like

Ky t ? * # [DanhSachKyT] [!DanhSachKyT] SVTH:Vo Hoang Anh Tran Trung Hieu

Cong dung ai dien cho mot ky t ai dien cho nhieu ky t ai dien cho ky t so ai dien cho mot ky t nam trong danh sach cac ky t ai dien cho mot ky t khong nam trong danh sach cac ky t MSSV:9800503 MSSV:9800552 26

e tai:Tm hieu VB.NET va ng dung Vd : abcdefg Like a*a abcdefga Like a*a abc Like a?c a1a Like a#a abcdefga Like a[a-z]a

GVHD:Nguyen Tan Tran Minh Khang

bieu thc sai bieu thc ung bieu thc ung bieu thc ung bieu thc sai

Trong VB6, neu ta viet:

Cac phep toan logic : And , Or, Xor, Not.

Dim myInt As Integer myInt = 0 If (myInt <> 0) And (17 \ myInt < 5 ) Then Th se b Division by Zero error, v mac dau phan (myInt <>0) la False, nhng VB6 van tiep tuc tnh phan (17 \ myInt < 5 ), va tao ra error v 17 chia cho mot so 0. Trong vai ngon ng lap trnh khac, khi (myInt <>0) la False th no khong tnh them na, tc la no noi rang khi mot phan cua AND la False th nhat nh ket qua cua Logical Statement trong IF phai la False. ac tnh nay goi la ShortCircuit (i tac). Neu ta dung code noi tren trong VB.NET, no van cho Division by Zero error giong nh VB6. Tuy nhien, neu ta muon dung ac tnh Short-Circuit th ta ch can thay the ch And bang AndAlso nh sau: Dim myInt As Integer myInt = 0 If (myInt <> 0) AndAlso (17 \ myInt < 5 ) Then Short-Circuit cung ap dung cho Logical OR khi ta thay the ch Or bang OrElse e noi rang khi phan au cua OR la True th nhat nh ket qua cua Logical Statement trong IF phai la True 2.3.4.2

Lenh Switch Case

Cu phap : Select Case testexpression [Case expressionlist-n [statements-n]]. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 27

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

[Case else [elsestatements]] End Select Co the dung nhieu bieu thc hay nhieu mien Vd : Select case intTest case 1 To 5, 10 To 15, 21 Do some thing End Select Select case strTest Case match1, match2 do something Case match3 do something case Else do somethingelse EndSelect 2.3.5 Lenh Lap 2.3.5.1 Lenh While Loops Cu phap : Do [{While | Until} condition ] [statements] [Exit Do] [statements] Loop hay Do [statements] [Exit Do] [statements] Loop [{while | Until} condition] Theo nhieu cach Do/ While va Do/Until c dung xen ke. Do/ While se thc hien dong lap cho en khi ieu kien ket thuc la False. Mat khac Do/Until se thc hien dong lenh ket thuc la True. Vd : Dong lap se tang val en 100 se dng . SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 28

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dim val as Integer = 0 Dim x as Integer = 0 Do While val <100 val += 1 x += 1 If x == 10 Then Exit Do End If Loop hoac dung Dim val as Integer = 0 Do Until val = 100 val += 1 x += 1 If x == 10 Then Exit Do End If Loop Dong lap se ngng khi val = 100 nhng no tang val trc khi xet ieu kien. Dim val as Integer = 0 Do val += 1 Loop While val < 100 Dim val as Integer = 0 Do val += 1 Loop Until val = 100 2.3.5.2 Lenh For Loops Lenh For Loops Cu phap : For counter = start To End [Step step] [statements] SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 29

hoac

e tai:Tm hieu VB.NET va ng dung [Exit For] [statements]

GVHD:Nguyen Tan Tran Minh Khang

Next For Each element In Group [statements] [Exit For] [statements] Next [element] For Each dung cho vi mang hoac Tap hp (collection) vd : Dim I as Integer Dim val as Integer = 0 Neu khong khai bao Step : mac nh la 1 For I = 1 To 10 val = val + 5 Next

Dim objItem, MyCollection as Object For Each objItem in MyCollection If objItem .Val = 5 Then Exit For End If Next 2.3.6 Mang Trong VB.NET, Mang co ch so bat au la 0. Mang la tap hp cac phan t co cung kieu d lieu c ban (integer, long, String ). Cac phan t mang trong VB.NET co the la cac oi tng, cac giao dien, cac cau truc. Mang co the mot hoac nhieu chieu (toi a 60 chieu ). So phan t trong mang toi a 264 1. Co the khi gan khi khai bao. Co the dung ham LBound va UBound e lay ch so au va cuoi cua mang T ong phat sinh t System.Array (s khac biet ro nhat gia VB va VB.NET) Cac phng thc chon loc cua System.Array SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 30

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Phng Thc BinarySearch() Clear ()

Y ngha Phng thc tnh nay tm phan t trong mang Phng tnh nay gan cac phan t trong mang cung gia tr (bang 0 cho mang gia tr , bang Null cho mang tham chieu oi tng. Dung chep cac phan t t mang nguon sang mang ch Phng phap nay ao ngc cac noi dung cua mot mang mot chieu Sap xep mot mang mot chieu

CopyTo() Reverse() Sort()

vd : Mang mot chieu Khai bao mang co 11 phan t (0, 1, . . ., 10) Dim arr(10) as Integer hoac Dim arr() as Integer = New Integer(10){} Khai bao va gan gia tr Dim arr() as Integer = {0,1,2,3,4} Dim str() as String = {aaa,bbb,ccc, ddd} hoac Dim str(3) as String str(0) = aaa str(1) = bbb str(2) = ccc str(3) = ddd For I = LBound (arr) To UBound(arr) arr(I) = I Next

vd : Mang a chieu.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

31

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dim arr(5,10) as String Dim arr( , ) as String = {{11,12,13},{21,22, 23}} Dim arr(3,5,7) as integer Dim I as integer Dim J as Integer Dim K as Integer For I = LBound (arr,1) To UBound (arr,1) For J = LBound (arr,2) To UBound (arr,2) For K = LBound (arr,3) To UBound (arr,3) arr (I,J,K) = 0 Next Next Next

Mang ong Giong nh VB, mang co the hieu chnh kch thc bang t khoa Redim(huy cac noi dung hien hanh cua mang) hoac dung cac t khoa redim Preserve (bao toan cac gia tr ben trong mang hien hanh). Tuy nhien khac vi VB, ban khong the thay oi kieu c s cua mot mang bang t khoa As. vd : Dim arr() as Integer Dim I as Integer Redim arr(I) For I = 0 To 3 arr(I) = 0 Next 2.3.7 Ham Ham la khoi cac oan lenh c goi (co the truyen tham so ). Khi oan lenh nay thc thi th oi vi Function se tra ve gia tr, con Procedure khong tra ve gia tr. Cu Phap : [Public | Private | Friend | Protected] [Static ] Function name [(arflist)] [As type] [statements] SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 32

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

[name = expression ] [Exit Function ] [statements] [name = expression] End Function o Public : Cho phep moi lp co the truy cap ti. o Private : Ch co the truy cap bi lp nh ngha phng thc. o Friend : Ch co the truy cap cong cong trong pham vi mot project. o Protected : Ch co the dung boi lp nh ngha cung nh cac lp con. vd : Class SomeClass { Accessible anywhere Public Sub MethodA() End Sub Accessible only from SomeClass types Private Sub MethodB() EndSub Accessible from SomeClass and any Descendent Protected Sub methodc() EndSub Accessible from within the same assembly Friend Sub MethodD() EndSub }

Co 2 cach e tra ve gia tr : dung ten ham e gan hay dung t khoa Return. Mat nh tham so cua ham c truyen bang tr thay v truyen bang bien nh trong VB. Dung t khoa Optional e khai bao cho nhng tham so mac nh. Nhng phai khi gan gia tr mac nh nay. Dung t khoa delegate e goi con tro ham. Delegate la mot cach giup ta pass mot procedure nh mot parameter vao trong mot method. Y niem nay c goi la Function Pointer hay SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 33

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Callback. Mot trng hp co ien ta dung Delegate la cung cap mot dataArray e sort vi mot Function e so sanh moi hai items trong array. Trong VB.NET ta dung AddressOf operator e pass mot procedure. Ta declare mot Delegate bang cach noi no la mot procedure di dang nao, co bao nhieu parameters, moi parameter thuoc loai data type nao. Th du: Delegate Function IsGreater (ByVal v1 As Integer, ByVal v2 As Integer) as Boolean Khi viet code ta c yen tam se c cung cap mot Function co dang ay va ai khai code nh sau: Public Sub DoSort (ByRef DataArray() As Integer, Greater As IsGreater) Dim outer As Integer Dim inner As Integer Dim temp As Integer For outer = 0 To UBound(DataArray) For inner = outer + 1 To UBound(DataArray) If GreaterThan.Invoke( DataArray(outer), DataArray(inner)) Then temp = DataArray(outer) DataArray(outer) = DataArray(inner) DataArray(inner) = temp End If Next Next End Sub e y cach dung Method Invoke e goi mot Delegate. Bay gi ta ch can cung cap Delegate routine ma ta a ha: Public Function myIsGreater (ByVal v1 As Integer, ByVal v2 As Integer) as Boolean Return ( v1 > v2) End Function Tiep theo ay la cach ta dung Delegate noi tren: Dim myData() As Integer = { 2, 5, 8, 13, 26} SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 34

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

DoSort (myData, AddressOf myIsGreater) Khi mot Subscriber registers vi mot Publisher mot routine e Handle mot loai Event, ta cung dung delegate nh sau: AddHandler Button4.Click, AddressOf Button4_Click Khi mot Event Click xay ra Button4, system se execute Sub Button4_Click.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

35

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

HNG OI TNG MI TRONG VB.NET(OOP)

Chng 3

VB.NET khac phuc nhng gii han ve oi Tng (Object-Oriented)


cua VB6 va mang en cho ta mot ngon ng lap trnh hoan toan Object-Oriented (OO). Gan nh moi th trong VB.NET eu lien he vi Object. e tm hieu ve hng oi tng trong VB.NET chung ta can phai nam lai mot so van e sau. 3.1. Van e khai quat cua hng oi tng 3.1.1. Classes va Objects, nguyen tac Abstraction Theo phng phap oi tng, program (ngi lap trnh) c thiet ke e mot phan code ai dien cho mot vat tng ng ngoai i. No c goi la Class. Khi lap trnh VB6 ta a dung nhng controls t Toolbox nh Textbox, Label, Listbox ..v.v.. Textbox la Class cua cac Objects Text1, Text2. Cung nh Label1, Label2 la nhng Objects tao ra t Class Label. Ta hay dung hai t Class va Object lan lon nhau. ieu o khong quan trong, mien la ta biet rang Class la mot y niem Tru tng (Abstraction), con Object la mot vat thc hu. Giong nh Class CaS la mot y niem tru tng, con Object KhanhHa cua Class CaS la mot ngi bang da, bang tht vi tieng hat c nhieu ngi ngng mo.

Ta noi Object la mot Instance cua Class, va ta instantiate Class e co mot Object. Thng thng khi ta phan tch mot van e e thiet ke chng trnh th cac Danh t (Nouns) la nhng Classes. Gia du ta phan tch hoat ong cua SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 36

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

mot Nha Kho. Ta co phong cha, ngan tu, bai nhan hang, xe nang hang, nhan vien ..v.v., moi th eu co the la mot Object nen ta se thiet ke mot Class cho no. 3.2. Fields, Properties, Methods va Events, nguyen tac Encapsulation Class CaS dien ta CaS la ngi nh the nao. Nh SoBaiHat la mot Public Variable cua Class, c goi la Field co the c oc/viet trc tiep. Con Kieu toc (dai, ngan, mau en, co soc nau ...), Giong hat (cao, tram, ..). la nhng Properties. Chung cung giong nh Field nhng c implemented (thi hanh) bang cach dung procedures Property Get va Property Set. Property Set co the c coded e kiem soat neu "Kieu toc" khong thch hp th se b loai bo. Ngc lai, neu "Kieu toc" thch hp va c ap dung th ta se thay ket qua ngay la CaS lai ep them ra. Thng thng Fields va Properties la cac Danh t (Nouns). Mot CaS co kha nang nCa, KyTenLuNiem, TrnhDien. Ta goi o la nhng Methods ma ta implemented bang Subs va Functions (th du nh Function KyTenLuNiem se return mot ch ky). Thng thng Methods la nhng ong t (Verbs) oi vi code ben trong Class th Property giong nh mot Method con oi vi Client (tc la program ang dung Class) th Property giong nh Field. oi khi, neu trnh dien lau, CaS can mot ly nc. CaS se Raise Event KhatNc e nhan vien trong hau trng phuc vu. Ta goi chung Fields, Properties, Methods va Events la nhng Class Members (Cac Thanh vien cua Class) Co mot ngoai le ve s khac biet gi Class va Member, o la khi ta dung cac Shared Class Members cua mot Class th ta khong nhat thiet phai instantiate mot Object. Ta co the dung thang ten cua Class nh mot Object. Cai li iem cua Object Oriented Programming la ta co the goi tat ca nhng ac iem, kha nang cua mot Class vao trong mot Unit of Code (n v ma) t tuc. Khi chung ta lch s yeu cau th CaS nCa. Ta biet CaS ca th thu hut long ngi, nhng ta khong can biet lam sao CaS at en trnh o nh vay. o khong phai la chuyen e chung ta quan tam. oi vi ta Class CaS la mot Black Box, ta khong biet va khong can biet chuyen g xay ra ben trong. Neu sau nay CaS thay oi ky thuat n ca e hat de va hay hn, ieu o khong anh hng g en chung ta. ac tnh OO ay goi la Encapsulation (Goi kn).

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

37

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Hnh Encapsulation (Goi kn). Cach ta lap trnh vi Class ch khac cach ta lap trnh trc ay mot chut thoi. Neu trc ay ta phai t lam, th bay gi ta instantiate mot Object cua Class chuyen tr nhng chuyen ta muon lam, roi bao no lam cho ta. So vi ngoai i, th du ban co m mot tiem photocopy. Sau mot nam ban t trong coi, cong chuyen lam an on nh va co ket qua tot. Ban muon m them mot tiem photocopy na cho khac. Trc khi i lo cho khac ban huan luyen nghe photocopy cho mot ngi lam cong trung thanh, roi giao cho ngi ay lam quan ly e thay the ban. Ngi o la mot Object cua Class QuanLyTiemPhotoCopy. Tr lai cach lap trnh, nhng cong viec ban lam hang ngay trong tiem photocopy la nhng Methods. Tat ca o ac, so sach cua tiem la nhng Properties. Ban a sap at moi tuan phai goi ngi lai quet don tiem, moi thang phai bao tr cac may photocopiers, o la nhng Events. Bay gi ban goi tat ca nhng th ay lai thanh Class QuanLyTiemPhotoCopy. Lan au ban instantiate Class QuanLyTiemPhotoCopy lam thanh ChuA ngi se thay the ban lam quan ly tiem photocopy au tien. Khi ban muon m them tiem th ba, ban se instantiate Class QuanLyTiemPhotoCopy mot lan na lam thanh DB , ngi se thay the ban lam quan ly tiem photocopy th nh. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 38

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi a phan chia trach nhiem cac phan code thanh nhng Class, ban co the tap trung t tng vao tng Class mot, khong can phai co nh moi th trong au khi giai quyet chuyen g. V code cua Class nao ch lam viec va anh hng trong pham vi hoat ong cua no, khong ung cham en ai khac. Neu co g truc trac, thng thng ta co the xac nh o la loi cua Class nao tng oi de dang. Co mot cau hoi ua rang theo phng phap OO th: "Thay mot bong en can bao nhieu programmers?". ap: "Khong can programmer nao het, ban bao en t thay bong cua no." (Li ap khac: "Khong can programmer nao het, Microsoft a oi tieu chuan ra bong em.") Do o, neu trc kia ban lap trnh e t mnh lo lieu cong chuyen th bay gi hay giao cho cac Objects t lo cho chung. Tc la trc ay, neu ban la chu ien moi nam ban phai i gop lua ruong, th bay gi ban bao cac ta ien phai t em nop lua vao trong kho cho ban.Hay khong?. Ch trong the gii lap trnh OO, ta mi co the lam c chuyen nh vay.

3.2.1. Inheritance (Tha Ke)

Nguyen tac Encapsulation noi tren cho phep ta dung nhieu Objects cua mot hay nhieu Classes mot cach an toan, tc la khong s Methods cua cac Objects chong len nhau. Gia s ta muon dung lai mot Class e lam mot Class mi, ac biet hn, th du nh ta muon lam nen mot Class CaS t Class NgheS. Cach lam ay goi la Inheritance (Tha ke). Cong viec tha ke nay c thc hien qua mot qua trnh goi la Subclassing. ay ta dung lai Class NgheS ma hoan toan khong ung en Source Code (Nguon Ma) cua Class NgheS. Nguyen tac ay goi la Reusability (Dung lai). Lu y la neu ta dung lai Source code ma co sa oi mot chut trong Source Code th khong the goi la Reuse c v co the viec sa oi Source Code o se gay ra bugs( loi ky thuat ) mi. Ta phai ch can Inherit t Object Code cua mot Class cung c th mi that s la Reuse. Ta dung Inheritance e cho them cac Class Members, tc la them ac tnh va chc nang. Th du NgheS th co Property TamHon (NhayCam (Sentitive) , ThMong (Romantic),...), va Methods KyTenLuNiem, TrnhDien. Class CaS se gi y cac ac tnh va chc nang ay va them Sub nCa, Function HatNhacYeuCau, .v.v.. Tng t nh vay, ta cung co the tha ke t Class NgheS e tao ra Class HoaS. Class HoaS se gi y cac ac tnh va chc nang cua Class NgheS nhng them Function VeChanDung, Sub TrangTr. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

39

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Trong th du noi tren, ngi ta goi Class NgheS la Parent Class, Super Class hay Base Class. Con Class CaS va Class HoaS c goi la Child Class hay SubClass. Neu ta lai Inherit Class CaS e tao ra Class CaSTanNhac va Class CaSCoNhac th trong trng hp nay CaS la Parent Class va CaSTanNhac vi CaSCoNhac la Child Classes. Moi Cas la mot NgheS nen ta co moi lien he "IS (La)" gia hai classes nay. No khac vi moi lien he "HAS (Co)". Th du neu trong Class CaS co mot Object thuoc Class auBep, th mot CaS co the cho ta mot ba an ngon nhng khong han cho chnh CaS nau. No giong nh ngoai i CaS KhanhHa mn mot au bep e ai khach. Ta se noi Class CaS co moi lien he HAS (Co) vi Class auBep trong trng hp nay, ch khong phai Class CaS IS (La) mot Class auBep. Trong .NET ta ch co Single (n) Inheritance, tc la mot Class khong the Inherit t hai hay ba Classes khac. Giong nh noi Con tha ke t Cha va Cha tha ke t OngNoi, khong co nhac g en Me hay BaNoi. Mot Child Class ch co mot Parent Class, ngc lai, mot Parent Class co the co nhieu Child Classes.

Hnh : inheritanse(tha ke) SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 40

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Polymorphism la kha nang dung Class Members trung ten cua Objects thuoc ve cac Classes khac nhau. Th du Objects KhachHang va NhanVien eu co Property Name. Neu ta co the lap trnh e dung Name ma khong can noi ro no thuoc ve Object KhachHang hay NhanVien th o la Polymorphism. Polymorphism the hien di nhieu hnh thc: ' Late Binding (Hieu lc tre): Co ngha la i en gi chot, khi thc thi, th code mi biet no ang lam viec vi loai Object nao. Ch binding noi en "hieu lc", late binding la co hieu lc tre. ieu nay c thc hien bang cach ha hen mot Object thuoc Parent Class e trong luc runtime ta co the giao cho code mot Object thuoc Child Class. Th du ta ha vi khan gia se co mot CaS trnh dien, luc m man ta co the cung cap mot CaSTanNhac hay mot CaSCoNhac.

3.2.2. Polymorphism (a dang)

Hnh: late binding(hieu lc tre) ' Overloading (Qua tai, a co roi ma con cho them) : Overloading cho phep ta viet trong cung mot Class nhieu versions khac nhau cua Property hay Method. Chung c phan biet nh dung parameters khac data type hay con so parameters khac nhau. Th du mot version cua Sub c passed cho mot Integer Parameter, mot version khac c passed cho mot String Parameter, mot version khac lai c passed cho hai parameters. Khi ta goi mot Method cua Class, no se da vao data type cua parameters ta pass va so parameters ta pass e execute ung version cua Method. Mot th du ve Overloading ngoai i la khi ta yeu cau CaS n ca ta c phep e ngh CaS hat theo Karaoke, hay c Ban Nhac Song phu hoa, hay them ca mot nhom ca s khac phu hoa .v.v.. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 41

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

' Overriding (Lan quyen) : Overriding ap dung cho Child Class oi vi Parent Class. Trong Child Class ta cung cap mot Method cung ten, cung so parameters va cung parameter data type vi mot Method trong Parent Class ( ay khong nhat thiet phai la Cha, co the la OngNoi hay nhieu i trc) e dung no thay the cho Parent Class Method. Ta noi Child Class thay oi behaviour (tanh tnh, cach x s) cua Parent Class. ai khai giong nh cu LLien trc ay Hat nhac hai hc, bay gi co KhanhHa tha ke t cu nhng override Method Hat cua cu va co implement mot Method Hat mi dung cho nhac tr tnh. Luc runtime, neu mot Object khong co implementation cua mot Method th CLR (Common Language Runtime) se dung Method cua Parent Class cua no. Trong th du tren v co KhanhHa co mot implementation cho method Hat nen system se dung method o, thay v dung method Hat cua cu LLien. 3.3. Dung hng oi tng trong VB.NET 3.3.1. Tao mot Class mi Ban tao mot Class mi trong VB.NET IDE bang cach dung Menu Command Project | Add Class. Dialog Add New Item se hien ra, chon Class trong so hnh cac Icons nam trong khung ben phai cua Dialog.

Source code cua Class mi nay se c cha trong mot VB source file vi extension vb. Trong VB.NET tat ca moi VB source files eu co SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 42

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

extension .vb. System se nhan dien ra loai VB file (form, class, module,.v.v..) nh oc content cua file, ch khong da vao file extension. Neu ban muon at ten cho Class mi nay la TheClass chang han, th ban co the sa ten no trong Dialog. Khi ban click button Open mot file mi se c cho them vao trong Project va no cha hai hang code sau:
Public Class TheClass End Class

Trong mot .vb file ta co the viet nhieu Classes, code cua moi Class nam trong mot Class ... End Class block. Th du: Public Class TheClass Public Sub Greeting() Box.Show("Hello world", MsgBoxStyle.Information, "TheClass") End Sub End Class
MessageBox.Show va MsgBoxStyle.Information trong VB.NET thay the MsgBox va vbInformation trong VB6.

3.3.1.1. Class Keyword

3.3.1.2. Classes va Namespaces


Nhac lai la .NET dung Namespace e sap at cac Classes cho th t theo nhom, loai. Namespaces c declared vi mot Block Structure giong nh sau: Namespace DoAnVB_NET Public Class TheClass Public Sub Greeting() MessageBox.Show("Hello world", MsgBoxStyle.Information, "TheClass") End Sub End Class End Namespace Muon noi en bat c Class, Structure, hay th g c declared ben trong mot Namespace...End Namespace block ta phai dung ten Namespace trc. Th du: Private myObject As DoAn_VB_NET.TheClass Mot source file co the cha nhieu Namespaces, va ben trong moi Namespace lai co the co nhieu Classes. Ngoai ra, Classes thuoc ve cung mot Namespace co the nam trong nhieu SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

43

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

files khac nhau trong mot VB.NET project. Th du ta co mot source file vi code nh sau: Namespace DoAn_VB_NET Public Class TheClass ' Code End Class End Namespace La mot source file khac trong cung project vi code: Namespace DoAn_VB_NET Public Class TheOtherClass ' Code End Class End Namespace Vay th trong Namespace DoAn_VB_NET ta co hai Classes TheClass va TheOtherClass. Nh la, by default, Root Namespace cua mot VB.NET project la ten cua project ay. Khi ta dung Namespace block structure la chung ta ang them mot tang ten vao Root Namespace. Do o, trong th du tren neu ten project la MyProject th, t ben ngoai project ay, ta co the declare mot variable nh sau: Private myObject As MyProject. DoAn_VB_NET.TheClass

3.3.1.3. Tao ra Methods


Methods trong VB.NET co hai th: Sub va Function. Function th phai return mot ket qua. By default, parameters cua Method la ByVal ch khong phai ByRef. Tc la neu muon parameter nao ByRef th phai nh khai ra ro rang. Nhac lai la khi mot variable c passed vao trong mot method bang ByVal th system cho method o mot copy (ban sao) cua variable, do o, tr so cua variable khong b thay oi bi cong tac cua method. Ngc lai, neu mot variable c passed vao trong mot method bang ByRef th method dung chnh variable o, do o, tr so cua variable co the b thay oi bi cong tac cua method. Ta co the gii han viec s dung mot method bang cach ap at mot Access Modifier (sa oi quyen truy nhap) hay con goi la Scoping keyword (pham vi hoat ong): ' Private - ch cho phep code trong cung Class c goi. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 44

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

' Friend - ch cho phep code trong cung project/component c goi. ' Public - cho phep ai goi cung c. ' Protected - cho phep code trong subclasses (classes con, chau) c goi. ' Protected Friend - cho phep code trong cung project/component hay code trong subclasses c goi. 3.3.1.4. Tao ra Properties Trong VB.NET ta ch dung mot routine duy nhat cho moi Property, vi hai ch Get va Set nh sau (khong con dung ch Let cua VB6 na): Private mdescription As String Public Property Description() As String Set (ByVal Value As String) mdescription = Value End Set Get Description = mdescription End Get End Property

3.3.1.5.

ReadOnly va WriteOnly property Bay gi neu Property la ReadOnly ta se lay phan Get ra va viet: Public ReadOnly Property Age() As Integer Get Age = 3 End Get End Property hay WriteOnly ta se ay phan Set ra va viet: Private _data As Integer Public WriteOnly Property Data() As Integer Set (ByVal Value As Integer) _data = Value End Set End Property

Default Property la property cua Object ma program dung khi ta ch cho ten cua Object va khong noi ro property nao. Th du trong VB6 khi ta code: TextBox1 = "The house of rising sun" SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 45

3.3.1.6. Default Properties

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

VB6 hieu rang ta muon dung Default Property text cua Textbox1 nen code ay tng ng vi: TextBox1.text = "The house of rising sun" Trong VB6 khi ta dung keyword Set vi ten cua Object, th du nh: Dim myTextBox As Textbox Set myTextBox = TextBox1 Program se hieu la ta muon noi en chnh Object myTextBox . Neu khong th no biet ta muon noi en Object Default Property ma lam bien code cho ro ra. Trong VB.NET Default Property phai la mot Property array. Mot Property array la mot property c Indexed (noi en tng Item bang con so Index) giong nh mot array. Ly do chnh cua s bat buoc nay la e khoi lan lon gia hai trng hp ta noi en Default property cua mot Object hay chnh Object ay, v trong VB.NET ta khong con dung Set keyword cho Object assignment na (ta ch con dung keyword Set trong Property ma thoi). Bay gi he muon noi en Default Property cua Object th phai dung Index. Th du e noi en chnh Object, ta code: myValue = myObject e noi en Default Property Item 3 cua Object, ta code: myValue = myObject(3) S thay oi t VB6 nay co ngha la mot property array procedure phai nhan mot parameter. Th du: Private theData(100) As String Default Public Property Data(ByVal Index As Integer) As String Get Data = theData(Index) End Get Set(ByVal Value As String) theData(Index) = Value End Set End Property T nay ta khong the code: TextBox1 = "Good morning!" nh trong VB6 c na, ma phai code: TextBox1.text = "Good morning!" SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 46

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

V Property Text khong con la Default Property cua TextBox. 3.3.2. Overloading methods(phng thc qua tai) Mot trong nhng chc nang a dien (Polymorphism) hung manh nhat cua VB.NET la overload (qua tai, co roi ma con cho them) mot method. Overloading co ngha la ta co the dung cung mot ten cho nhieu methods mien la chung co danh sach cac parameters khac nhau, hoac la parameter dung data type khac nhau (td: method nay dung Integer, method kia dung String), hoac la so parameters khac nhau (td: method nay co 2 parameters, method kia co 3 parameters). Overloading khong the c thc hien ch bang cach thay oi data type cua Return value cua Function. Phai co parameter list khac nhau mi c. Di ay la th du ta dung Overloading e code hai Functions tm data, mot cai cho String, mot cai cho Integer: Public Function FindData(ByVal Name As String) As ArrayList ' find data and return result End Function Friend Function FindData(ByVal Age As Integer) As ArrayList ' find data and return result End Function e y la ta co the cho moi overloading Function mot pham vi hoat ong (Scope on implementation) khac nhau. Trong th du tren ta dung Access Modifier Public cho Function au va Friend cho Function sau. 3.3.3. Object Lifecycle (cuoc i cua oi tng). Object Lifecycle (cuoc i cua Object) c dung e noi en khi nao Object bat au hien hu va khi nao no khong con na. S d ta can biet ro cuoc i cua mot Object bat au va cham dt luc nao la e tranh dung no khi no khong hien hu, tc la cha ra i hay a khuat bong roi.

3.3.3.1.

New method(tao phng thc mi)

Trong VB6, khi mot Object thanh hnh th Sub Class_Initialize c thc thi (executed). Tng ng nh vay, trong VB.NET ta co Sub New(), goi la Constructor. VB.NET bao am Sub New() se c CLR(Common Language Runtime) goi khi Object c instantiated va no chay trc bat c code nao trong Object. Neu Sub Class_Initialize cua mot Class Object trong VB6 khong nhan parameter th Sub New() trong VB.NET chang nhng co nhan parameters ma con cho phep ta nhieu cach e goi no. S khac biet trong Constructors cua VB6 va VB.NET rat quan trong. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 47

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Tng tng ta co mot Khuon lam banh bong lan; khuon la Class con nhng banh lam ra t khuon se la cac Objects banh bong lan. Neu ta muon lam mot cai banh bong lan vi mot lp so-co-la tren mat th cong tac se gom co hai bc: ' Dung khuon (Class) nng mot cai Object banh bong lan (dung Sub Class_Initialize) . ' o len mat banh mot lp so-co-la (dung class Public Sub ThoaSocola) . en ay, moi chuyen tng oi on thoa. Bay gi, neu khach hang muon mot cai banh bong lan dung trng vt thay v trng ga th ta chu thua thoi, v khong co cach nao bao Sub Class_Initialize dung trng vt thay v trng ga ngay trong luc ang tao dng ra Object banh bong lan. Sub New() trong VB.NET co the nhan parameters nen no co the nhan ch th e dung trng vt ngay trong luc nng cai Object banh bong lan. Cai dang n gian nhat cua Sub New() ma ta co the dung la khong pass parameter nao ca (trong trng hp nay th giong nh Sub Class_Initialize cua VB6). Ta code Sub New() trong Class nh sau: Public Class BanhBongLan Public Sub New() ' Code to initialise object here End Sub End Class Ta instantiate mot Object banh bong lan nh sau: Dim myBanhBongLan As New BanhBongLan() e cho Users co s la chon khi instantiate Object, ta co the code them nhng Sub New khac, moi Sub dung mot danh sach parameter khac nhau. Th du:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

48

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Public Class BanhBongLan Public Sub New() ' Code to initialise object here End Sub Public Sub New(ByVal LoaiTrung As String) Select Case LoaiTrung Case "Vit" ' Code for TrngVt here Case "Ga" ' Code for TrngGa here End Select End Sub End Class Dung cung mot ten method e thc thi(implement) nhieu methods khac nhau c goi la overload. o la mot trng hp a dang (polymorphism) cua OO programming. Trong th du tren neu TrngVt va TrngGa la hai loai Data Types khac nhau th ta cung co the dung: Sub New (ByVal TrngVt As TrngVtDataType) e instantiate banh TrngVt va Sub New (ByVal TrngGa As TrngGaDataType) e instantiate banh TrngGa. Nh the ta khoi ban tam vi Select Case LoaiTrung khi ch dung mot Sub New duy nhat vi 1 parameter. Trong VisualStudio.NET, khi ta dung ten cua mot overloaded method, IntelliSense se hien th e hng dan ta anh vao parameter list khac nhau tuy theo method ta chon. 3.3.3.2. Termination(s hoan thanh, ket thuc) Trong VB6 mot Object se b huy diet khi cai reference (cho dung en Object) cuoi cung b lay i. Tc la khi khong co code nao khac dung Object na th Object se b t ong huy diet. System gi mot counter e em so clients ang dung Object. Cach nay hay cho khi counter tr thanh 0 th Object b huy diet ngay. Ta noi no co deterministic finalization, ngha la ta biet ro rang khi nao Object bien mat. Tuy nhien, neu ta co hai Object dung lan nhau (goi la circular references), th ngay ca en luc chung khong con hoat ong na, chung SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 49

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

van hien hu mai trong bo nh v cai Reference counter cua ca hai Objects khong bao gi tr thanh 0. Neu trng hp nay xay ra thng lan lan system khong con memory na, ta goi o la memory leak (b r bo nh) . .NET dung phng phap khac e quan ly chuyen nay. C moi choc, mot program se chay e kiem xem co Object nao khong con reference na e huy diet. Ta goi o la Garbage Collection (nhat rac). Ngay ca trng hp hai Objects co circular references nhng neu khong co code nao khac reference mot trong hai Objects th chung cung se c huy diet. Co ieu, cong tac nhat rac chay in the background (pha sau hau trng) vi u tien thap, khi CPU ranh rang, nen ta khong biet chac mot Object se b huy diet en bao gi mi that s bien mat. Ta noi no co nondeterministic finalization. Ta co the ep CLR nhat rac lap tc bang code: System.GC.Collect() Tuy nhien, ta ch lam viec ay khi ket qua thoi. Tot hn, ta duyet lai design cua mnh e cho phep cac Objects het xai co the ngoi chi trong bo nh ch en luc c huy diet.

3.3.3.3.

Dung Dispose Method

Neu ta co mot Object dung nhieu tai nguyen (resources) nh bo nh, database connection, file handle,.v.v. va ta can phai tha cac tai nguyen ra ngay sau khi Object khong con hoat ong na, ta can thi hanh (implement) mot Interface ten IDisposable vi Implements keyword nh sau: Public Class TheClass Implements IDisposable Ban phai viet code cho Sub Dispose giong nh sau: Private Sub Dispose() Implements IDisposable.Dispose ' Viet clean up code ay e tha cac tai nguyen ra End Sub Sau o ban van phai viet code cho Client e no goi Dispose Method trong IDisposable interface. Ban can phai dung CType e (loai khoi)cast Object Class khi goi Dispose. Dim objObject As New TheClass() CType (objObject, IDisposable).Dispose() e lay i Reference en mot Object (goi la Dereference Object) ban co the dung: SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 50

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

myObject = Nothing e y la ta khong co dung (t khoa)keyword Set nh trong VB6. Nh la sau khi trnh bay (statement) tren c thc thi (executed) th myObject khong bien mat ngay nhng no i Garbage Collector en giai quyet. 3.3.4. Tha ke Tha ke (Inheritance) la kha nang cua mot Class at c interface (giao dien) va behaviours (thoi quen,tinh tnh) cua mot Class co san. Cai qua trnh e lam nen viec ay c goi la Subclassing. Khi ta tao ra mot Class mi tha ke ca interface lan behaviours t mot Class co san la chung ta a tao ra mot subclass cua Class nguyen thuy. Ngi ta noi o la mot moi lien he is-a (la mot), y noi Class mi la mot loai Class nguyen thuy. Ta phan biet moi lien he is-a vi moi lien he has-a (co mot). Trong moi lien he has-a, Object chu co the lam chu mot hay nhieu Objects t, nhng Object t la mot loai co the hoan toan khac vi Object chu. e bieu dien ac tnh Inheritance ta hay xet trng hp mot cong ty cung cap San pham va Dch vu. Ta co the code mot Class cho San pham (ProductLine) va mot Class cho Dch vu (ServiceLine) , rieng re nhau. Nhng v thay chung co nhieu iem tng ong nen ta se code mot Class goi la Mon hang (LineItem), roi inherit t LineItem ra ProductLine va ServiceLine. LineItem co cac properties ID, Item, Price (gia) va Quantity (so lng). No cung co mot Public Function e cho Amount (so tien). (Xem v du 3.1) Public Class LineItem Private mintID As Integer Private mstrItem As String Private msngPrice As Single Private mintQuantity As Integer Public Property ID() As Integer Get Return mintID End Get Set (ByVal Value As Integer) mintID = Value End Set End Property SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 51

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Public Property Item() As String Get Return mstrItem End Get Set (ByVal Value As String) mstrItem = Value End Set End Property Public Property Price() As Single Get Return msngPrice End Get Set (ByVal Value As Single) msngPrice = Value End Set End Property Public Property Quantity() As Integer Get Return mintQuantity End Get Set (ByVal Value As Integer) mintQuantity = Value End Set End Property Public Function Amount() As Single Return mintQuantity * msngPrice End Function End Class e tao Class ProductLine t Class LineItem ta phai dung Inherits keyword. Moi Object ProductLine la mot Object LineItem vi ProductID va Description. ProductID cua ProductLine c pass vao Sub New luc instantiate Object ProductLine. Con Description la mot ReadOnly property cua ProductLine. Ta co the code Class ProductLine nh sau: Public Class ProductLine SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 52

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Inherits LineItem Private mstrDescription As String Public ReadOnly Property Description() As String Get Return mstrDescription End Get End Property Public Sub New(ByVal ProductID As String) Item = ProductID mstrDescription = "No description yet" ' Default description ' Viet code ay e oc chi tiet cua Product t Database ' trong o co the co Description cua Product End Sub End Class Statement Inherits LineItem khien ProductLine tha ke moi interface va behaviours cua LineItem. Do o ta co the code mot Sub BtnProduct_Click e hien th chi tiet cua ProductLine trong mot Listbox nh sau: Protected Sub BtnProduct_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnProduct.Click Dim pl As ProductLine pl = New ProductLine("P1234") ListBox1.Items.Add("ProductItem:" & pl.Item) ListBox1.Items.Add("Description: $" & pl.Description) End Sub Trong code ben tren ta dung ca property Item cua Class LineItem lan property Description cua Class ProductLine. Ca hai eu la property cua ProductLine v no la mot SubClass cua LineItem. Giong nh vay, mot ServiceLine co the co ghi ngay gi cung cap service. Ta code Class ServiceLine nh sau: Public Class ServiceLine Inherits LineItem Private mdtDateProvided As Date SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

53

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Public Sub New() ' Make 1 as default number of services of this kind for invoice Quantity = 1 End Sub Public Property DateProvided() As Date Get Return mdtDateProvided End Get Set (ByVal Value As Date) mdtDateProvided = Value End Set End Property End Class Mot lan na ta dung Statement Inherits e noi rang ServiceLine la mot SubClass cua LineItem. Ta them property DateProvided vao interface tha ke t Class LineItem. 3.3.5. Ngan can Tha ke Bnh thng (By default) class nao cung co the c dung lam base class e t o ta tha ke. Nhng oi khi ta khong muon cho ai tha ke t mot Class nao o, e lam viec ay ta dung keyword NotInheritable khi declare class: Public NotInheritable Class KhongCon End Class Khi ta a dung keyword NotInheritable roi th khong class nao co the dung keyword Inherits e tao mot subclass t class ay. 3.3.6. Tha ke va Pham vi hoat ong Khi ta dung ac tnh tha ke e tao mot SubClass th class mi nay co u moi methods, properties va variables vi Access Modifier Public hay Friend cua SuperClass. Bat c th g declared la Private trong SuperClass th SubClass khong thay hay dung c. Co mot ngoai le la New method. Cac Constructor methods can phai c implemented(nh ngha) lai trong moi SubClass.Ta se ban vao chi tiet ve iem nay ben di. e lam sang to van e SubClass co the dung Class Members nao cua SuperClass, ta th code lai Function Amount trong LineItem class bang cach SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 54

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

khien no goi mot Private Function ten CalculateAmount e tnh ra Amount thay v e no tnh trc tiep nh trc ay: Public Function Amount() As Single Return CalculateAmount End Function Private Function CalculateAmount() As Single Return mintQuantity * msngPrice End Function Khi ta SubClass LineItem e tao ra ServiceLine class, bat c Object ServiceLine nao cung tha ke Function Amount v Function ay c declared Public trong BaseClass LineItem. Ngc lai, v Function CalculateAmount la Private nen ca ServiceLine class lan bat c client code nao dung mot LineItem Object eu khong truy cap no c. Nh the, mac dau ta goi Function Amount c, nhng en phien no goi Private Function CalculateAmount th co b tr ngai khong? Khong sao ca. V Function Amount nam trong cung Class vi Private Function CalculateAmount nen no co the goi c, du rang ta goi Function Amount t ServiceLine hay client code. Th du trong client code ta co nhng hang code nh sau: Protected Sub BtnShowAmount_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnShowAmount.Click Dim Service As ServiceLine Service = New ServiceLine() Service.Item = "Delivery" Service.Price = 50 Service.DateProvided = Now MessageBox.Show (Service.Amount.ToString, "Amount", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Ket qua se c hien th trong message box, cho thay Function CalculateAmount c Function Amount goi dum cho client code du rang ca client code lan ServiceLine code eu khong the goi trc tiep c. V du nh nha ban co mot may hien ai (may vi tnh chang han), va tat nhien la nhng ngi trong nhan ban co the s dung no c de dang. Nhng toi en s dung th khong c. Bi v Access Modifier cua may tnh la SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 55

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Private trong nha ban. Nhng ban co the s dung c bi v ban la Public, nen toi co the nh ban hoat ong no dum. 3.3.7. Protected Methods oi khi Public hay Private thoi cha u. Neu ta declare th g Private th no hoan toan gii han trong class, ngc lai neu ta declare no Public (hay Friend) th no co the c dung trong subclasses hay client code. Tuy nhien, co luc ta muon mot class member ch co the c dung trong subclasses thoi, ch khong cho client code dung. Trong trng hp ay ta dung keyword Protected. Th du: Public Class FatherClass Protected DiSan As Single End Class Public Class SonClass Inherits FatherClass Public Function ChiaCua() As Single Return Disan End Function End Class ay ta co BaseClass FatherClass vi Protected Field Disan. Khong co client code nao co the thay Field DiSan c. The nhng bat c SubClass nao cua FatherClass cung eu tha ke va dung c DiSan. Trong th du tren, mot lan na SubClass co mot Public method (ChiaCua) co the return mot protected value - nhng chnh value ay, DiSan, khong trc tiep cho phep client code dung. 3.3.8. Overriding Methods Chung ta biet rang ac tnh quan trong cua Inheritance la mot SubClass chang nhng tha ke behaviours cua ParentClass ma con co the override (lan quyen) cac behaviours ay na. Chung ta a thay mot SubClass co the extend (them ra) ParentClass bang cach cho them cac methods Public, Protected va Friend. Hn na, khi dung overriding, mot SubClass co the alter (sa oi) behaviours cua cac methods trong ParentClass. Bnh thng (By default), ta khong the override methods trong ParentClass tr khi cac methods ay c declared vi keyword Overridable trong ParentClass. Th du: Public Class ClassCha Public Overridable Sub ChaoHoi() MessageBox.Show("Chao cac chau", "Class Cha") End Sub SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 56

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

End Class Tiep theo, khi tao mot SubClass, neu muon ta co the override behaviour cua Sub ChaoHoi bang cach dung keyword Overrides nh sau: Public Class ClassCon Inherits ClassCha Public Overrides Sub ChaoHoi() MessageBox.Show("Tha cac Bac", "Class Con") End Sub End Class Bay gi ta co the viet client code nh sau: Private Sub BtnSubClassObject_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnSubClassObject.Click Dim obj As New ClassCon() obj.ChaoHoi() End Sub Khi ta click button BtnSubClassObject program se hien th message dialog di ay:

3.3.8.1. Virtual Methods


Tuy nhien, hay xem trng hp ta code nh sau: Private Sub BtnParentClassObject_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnParentClassObject.Click Dim obj As ClassCha obj = New ClassCon() obj.ChaoHoi() End Sub SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 57

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Trc het, ay co ve ky ky, tai sao declare mot variable loai ClassCha ma lai instantiate mot object ClassCon. Chuyen o hoan toan bnh thng, v ClassCon la mot ClassCha. Tc la mot variable loai ClassCha hay ClassCon eu co the cha, that ra la hold references to (point to, ch ti), mot instance cua ClassCon. iem nay ap dung tong quat khi ta dung Inheritance. Mot variable loai SuperClass co the hold reference to bat c SubClass Object nao tha ke t SuperClass ay. o la mot cach e ta implement tnh a dang (polymorphism). eu co the lam ta ngac nhien la khi ta click button BtnParentClassObject ta cung thay hien th message " Tha cac Bac". (Xem v du 3.2)

Sao la vay? Variable obj c declared la ClassCha tai sao message khong phai la "Chao cac chau"? Ly do la Sub ChaoHoi cua ClassCon c goi thay v Sub ChaoHoi cua ClassCha. Ta noi Sub ChaoHoi la Virtual method. Tat ca methods trong VB.NET eu la virtual. Y niem virtual e noi rang cai implementation cua con chau tre nhat trong dong ho c dung - khong can biet la variable co data type la class cua the he nao trong dong ho. Tc la, neu variable dung trong client code hold references to ClassOngNoi, ClassCha, ClassCon hay ClassChau th method trong ClassChau c goi. Neu trong ClassChau khong co implementation cua method th ta goi method trong ClassCon, neu khong co th goi method trong ClassCha .v.v.. theo th t t be di len be tren.

3.3.8.2. Keyword Me

Keyword Me c dung khi ta muon noi ro (explicitly) rang ta muon dung method cua chnh cai Class ang cha code ay, ch khong phai mot implementation nao khac cua method ay. Cung co trng hp ta phai dung keyword Me e noi ta muon dung class-level variable ch khong phai procedure-level variable co cung ten. Mot procedure-level variable, tc la local variable cua mot method, co SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 58

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cung ten vi mot class-level variable c goi la shadowed variable. Th du: Public Class TheClass Private strName As String Public Sub DoSomething() Dim strName As String strName = "Hieu" End Sub End Class ay, variable strName c declared class-level va ben trong Sub DoSomething. Ben trong method ay local variables (ke ca shadowed variables) se c dung v chung che ay class-level variables tr khi ta noi ro rang phai dung variable cua class-level bang cach dung keyword Me: Public Class TheClass Private strName As String Public Sub DoSomething() Dim strName As String strName = "Hieu" ' thay oi value cua local (shadowed) variable Me.strName = "Anh" ' thay oi value cua class-level variable End Sub End Class

3.3.8.3.

Keyword MyBase

Keyword Me rat tien dung khi ta muon dung Class members cua chnh Class cha code. Tng t nh vay, oi khi ta muon dung Class method cua BaseClass (cung goi la SuperClass), ch khong phai mot implementation cua method ay trong SubClass. Nh la mot virtual method luon luon goi cai at (implementation) cua Class tre nhat. T trong mot SubClass, neu muon goi mot method cua BaseClass ta dung keyword MyBase nh sau: Public Class ClassCon Inherits ClassCha Public Overrides Sub ChaoHoi() MessageBox.Show("Tha cac Bac", "Class Con") MyBase.ChaoHoi() End Sub SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 59

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

End Class Bay gi neu ta chay Sub ChaoHoi cua ClassCon ta se co hai messages, mot cai t ClassCon theo sau bi mot cai t ClassCha. MyBase ch noi en BaseClass trc tiep, tc la Class cha thoi ch khong noi en Class ong noi. Khong co cach nao e noi en hn mot the he. Dau vay, keyword Mybase co the c dung cho bat c th g a c declared Public, Friend hay Protected trong ParentClass. ieu nay ke luon ca nhng th ma ParentClass tha ke t cac the he trc trong gia nh, tc la ClassOngNoi, ClassOngCo .v.v..

3.3.8.4.

Keyword MyClass

V ly do virtual method, ta se gap nhng trng hp rac roi nh khi code cua ParentClass lai chay code cua SubClasses. Khi viet code cua mot class, t method nay ta thng goi nhng methods khac nam trong cung class. Th du nh: Public Class ClassCha Public Sub Voe() ChaoHoi() End Sub Public Overridable Sub ChaoHoi() MessageBox.Show("Chao cac chau", "Class Cha") End Sub End Class Trong trng hp nay, Voe goi Sub ChaoHoi e on tiep. e y la v ChaoHoi c declared Overridable nen rat co the mot SubClass se implement method ChaoHoi va lan quyen no. Th du: Public Class ClassCon Inherits ClassCha Public Overrides Sub ChaoHoi() MessageBox.Show("Tha cac Bac", "Class Con") End Sub End Class V ac tnh virtual cua ChaoHoi nen ta tng ClassCha execute chnh Sub ChaoHoi cua no nhng te ra no lai execute code cua ChaoHoi trong ClassCon. Trong code di ay, mot Object ClassCon goi Sub Voe cua ClassCha: SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 60

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Private Sub BtnSubClassObject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSubClassObject.Click Dim obj As New ClassCon() obj.Voe() End Sub Trong ClassCha, Sub Voe goi ChaoHoi cua chnh no, tuy nhien Sub ChaoHoi ay b overridden bi cai at (implementation) cua ChaoHoi trong ClassCon. Do o, program se hien th message "Tha cac Bac". Neu ta khong muon nh vay, ta muon Voe execute chnh code cua ChaoHoi trong ClassCha th phai dung keyword MyClass nh sau: Public Class ClassCha Public Sub Voe() MyClass.ChaoHoi() End Sub Public Overridable Sub ChaoHoi() MessageBox.Show("Chao cac chau", "Class Cha") End Sub End Class ay ta khong the dung keyword Me v Voe co goi ChaoHoi classlevel trong ClassCha ch khong phai trong mot SubClass, nhng b overridden. Hnh di ay minh hoa qua trnh goi Voe t client code:

Sub Voe that ra nam trong ClassCha ma ClassCon tha ke nen Voe c thc thi (executed) trong ClassCha va goi Sub ChaoHoi SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 61

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

trong cung class ( ClassCha). Nhng v ClassCon co mot cai at (implementation) cua Sub ChaoHoi nen no overrides ChaoHoi cua ClassCha. 3.3.9. Overridding Method New Chung ta a thay ta co the override methods va dung cac keywords Me, MyBase va MyClass e goi cac overriden methods trong day chuyen tha ke. Tuy nhien, oi vi Constructor cua class th co nhng luat le ac biet danh rieng cho method New. Nhng methods New khong t ong di truyen t BaseClass xuong SubClass. Moi SubClass phai co mot cai at (implementation) rieng cho Constructor du rang, neu muon, no co the goi vao BaseClass vi keyword MyBase: Public Class ClassCon Inherits ClassCha Public Sub New() MyBase.New() ' e them cac code khac e initialise tai ay End Sub End Class Khi goi Constructor cua BaseClass, ta phai goi no trc nhat - neu khong se b error. Tuy nhien ta khong can goi Constructor cua BaseClass v Constructor cua BaseClass c goi t ong. Co mot luat ac biet la neu tat ca methods New trong BaseClass eu oi hoi parameters th ta phai implement t nhat mot method New trong SubClass va ta phai at statement MyBase.New ngay pha au. D nhien la ta co the Overload method New trong SubClass, nhng ta phai t lo lieu cach goi mot method New thch hp trong BaseClass. 3.3.10. Tao BaseClasses va Abstract Methods Cho en gi ta a ban ve virtual method vi ac tnh override trong nguyen tac tha ke. Trong cac th du trc ay BaseClass c instantiated thanh Object e lam chuyen nay, chuyen kia. Nhng oi khi ta muon tao mot BaseClass ch e dung cho tha ke ma thoi.

3.3.10.1. Keyword MustInherit (Phai c Tha Ke)

Tr lai cai th du ve Inheritance vi Class LineItem. S d ta at ra Class LineItem la v no cha nhng th chung cho ca hai classes ProductLine va ServiceLine. Ch that ra mot Object cua Class LineItem khong cha u moi ac tnh e lam mot viec g thc te. Neu ta muon noi SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

62

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

ro rang Class LineItem ch c dung e tao nhng SubClasses bang cach tha ke t no, ta co the declare nh sau: Public MustInherit Class LineItem Tc la ta ch them keyword MustInherit thoi, ch khong thay oi g khac. Ket qua la t nay Client code khong the instantiate mot Object t Class LineItem. Do o dong code sau se b syntax error: Dim myObject As New LineItem() Thay vao o, neu muon dung LineItem ta phai tao SubClass t no.

3.3.10.2. Keyword MustOverride (Phai b Lan Quyen)


Tng t vi y niem Phai-c-tha-ke trong Class, ta cung co MustOverride cho mot method. Co the trong BaseClass ta khai bao mot method, nhng ta oi hoi method ay phai co mot cai at (implementation) trong SubClass. Ta declare nh sau: Dim MustOverride Sub CalculatePrice e y la ay khong co than the cua Sub CalculatePrice hay statement End Sub g ca. Khi dung MustOverride ta khong c phep cung cap mot cai at (implementation) cho method trong BaseClass. Mot method nh the c goi la abstract method (phng thc tru tng) hay pure virtual function (ham thuan ao), v no ch co phan khai bao ch khong co phan nh ngha. Nhng abstract methods phai c overridden trong bat c SubClass nao cua BaseClass th mi dung c. Neu khong, ta se khong co phan cai at (implementation) cua method au ca va khi compile se gap syntax error.

3.3.10.3. Abstract Base Classes

Neu hp ca hai y niem MustInherit va MustOverride lai ta se tao ra mot abstract base class. ay la mot Class ch co khai bao ch hoan toan khong co cai at (implementation). Ta phai SubClass t no th mi lam viec c, th du nh: Public MustInherit Class ClassCha Public MustOverride Sub Voe() Public MustOverride Sub ChaoHoi() End Class Ky thuat nay rat thch hp e ta code cai sn hay bo cuc cua program ngay trong luc thiet ke. Class nao tha ke ClassCha th phai implement ca Sub Voe lan Sub ChaoHoi, neu khong se b syntax error. Nhn ve mot phng dien, abstract base class rat giong khai bao Interface. Neu dung Interface, chung ta co the khai bao nh sau: SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 63

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Public Interface ICha Sub Voe() Sub ChaoHoi() End Interface Bat c class nao chu implement interface ICha th phai implement ca Sub Voe lan Sub ChaoHoi, neu khong se b syntax error - do o, ta thay Interface rat giong mot abstract base class. S khac biet chnh gia abstract base class vi Interface la cho tha ke. Khi ta tao mot class con bang cach SubClass t ClassCha, chnh class con ay lai cung co the c SubClassed. May class chau nay se t ong tha ke Voe va ChaoHoi t class con. Trong khi ay noi ve Interface, moi class phai t implement ICha mot cach oc lap va phai cung cap hai Subs Voe va ChaoHoi cua chnh no. V the, neu ta khong co y nh dung lai code cua cac Subs khi ta tao cac classes mi th ta co the dung interface. Ngc lai neu ta muon dung lai code trong SubClass theo nguyen tac tha ke th ta nen dung abstract base class. 3.3.11. Shared class members ( Cac thanh vien e dung chung cua class) Mac du Object rat hieu nang va hu ch, co khi ta ch muon truy cap cac variables hay methods cua mot class e lam viec ma khong can phai instantiate mot Object nao ca. Tc la y nh trong qua kh, khi viet VB6, ta dung cac variables hay methods cua mot BAS Module. ai khai giong nh thay v ky giao keo vi mot thau (Object) e thc hien mot cong trnh, ta ch muon mn th hay chuyen vien lam viec gia cong ( goi cac methods) thoi.

3.3.11.1. Shared Methods

Trong VB.NET chang nhng mot Class co cac methods va properties thong thng nh ta a thay - tc la nhng methods va properties cua mot Object ta co the dung ngay sau khi Object ay thanh hnh qua qua trnh instantiation - ma con co cac methods va properties ta co the dung ma khong can phai tao ra mot instance nao t Class. Chung c goi la shared methods. ( Trong cac ngon ng lap trnh khac cac methods nay con c goi la static methods hay class methods). Ta khong the truy cap mot shared method qua mot Object nh method bnh thng, nhng phai dung trc tiep ten cua class. Th du sau ay se minh hoa ieu nay: Public Class Math Shared Function Add( ByVal x As Single, ByVal y As SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 64

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Single) As Single Return x + y End Function End Class Sau khi nh ngha Class Math, ta co the dung Shared Function Add ma khong can instantiate mot Object thuoc class Math nh sau: Dim Result As Single result = Math.Add(12.5, 36.8) e y thay v dung mot object variable ta dung thang ten cua class Math e truy cap method Add. Vi mot method bnh thng th lam nh the se b syntax error, nhng trong trng hp nay th khong sao. Ta cung co the overload shared methods, tc la co the code nhieu shared methods vi cung mot ten nhng co nhng parameter lists khac nhau. Pham vi hoat ong bnh thng (Default Scope) cua shared methods la Public. Tuy nhien ta co the gii han viec truy cap chung bang cach dung nhng Access Modifiers nh Friend, Protected hay Private. That ra khi overloading mot shared method ta co the dung nhng scopes khac nhau cho moi shared method. Co mot th du ve shared method t .NET system class libraries. e m mot text file theo mode input, ien hnh ta dung shared method trong File class nh sau: Dim inFile As StreamReader = File.OpenText("words.txt") Dim strIn As String strIn = inFile.ReadLine() ay khong co object File nao c tao ra. Method OpenText la mot shared Function, no m input text file words.txt va cho ta mot object loai StreamReader ten inFile e ta dung sau o.

3.3.11.2. Shared Variables


oi khi ta muon tat ca objects cua cung mot class eu dung chung mot variable. Ta co the thc hien viec ay vi shared variables. Mot shared variable c khai bao vi keyword shared giong nh shared method: Public Class MyCounter Private Shared mintCount As Integer End Class SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

65

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ta co the cho shared variable mot scope Public hay Private tuy y, nhng By Default, scope cua shared variables la Private, khac vi shared methods th By Default la Public. iem quan trong cua shared variables la chung c dung chung gia moi instances (objects) cua cung mot class. Di ay la mot th du trong o ta gi cai counter co tr so tang them 1 moi lan co mot instance mi cua class MyCounter. Bat c luc nao ta cung co the biet co bao nhieu objects a c tao ra bang cach oc property Count: (Xem v du 3.3) Public Class MyCounter Private Shared mintCount As Integer Public Sub New() mintCount += 1 End Sub Public ReadOnly Property Count() As Integer Get Return mintCount End Get End Property End Class Nh the, neu ta chay client code di ay no se hien th ket qua la 3: Protected Sub Button1_Click( ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim obj As MyCounter obj = New MyCounter() obj = New MyCounter() obj = New MyCounter() MsgBox(obj.Count, MsgBoxStyle.Information, "Counter") End Sub Neu ta chay code them hai lan na, ta se co 6 va 9. He ta con chay chng trnh th cai counter con lam viec. Khi ta cham dt chng trnh th cai counter se bien mat.

3.3.11.3. Global values

Mot cach dung rat thong dung khac cua shared variable la xem no nh mot loai Global variable. Khi dung scope Public ta se co mot dang tng ng vi VB6 Global variable trong mot BAS Module. Th du nh: Public Class GlobalData Public Shared TotalCost As Single SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 66

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

End Class Sau o ta co the dung variable nay khap ni trong client code: GlobalData.TotalCost += 45.60

3.3.12. Events (S kien) 3.3.12.1. Raising Event e x ly trong mot Project khac

VB.NET khong ho tr Events t i cha en i con theo ung nguyen tac tha ke. Neu mot BaseClass nh ngha mot Public Event th ta ch co the raise event ay trong code cua BaseClass thoi ch khong the raise event ay trong SubClass nao cua BaseClass ay. Khac vi methods, ta khong the overload mot Event, tc la khong the dung mot ten cho hai Events co parameter list khac nhau. Ta co the tao mot Class Library Project vi mot Class trong o co raise mot Event roi tao mot project khac trong o co code e on nhan va x ly Event ay. e th viec nay ban hay tao mot Class Library Project mi vi ten ClassLibrary1 ve viet nhng dong code nh ngha Class Class1 vi Event TheEvent va Sub LamViec e raise Event nh sau: Public Class Class1 Public Event TheEvent() Public Sub LamViec() RaiseEvent TheEvent() End Sub End Class Ke o ban dung Menu command File | Add Project | New Project e them mot project mi vi ten EventClass. e co the dung Class1, ban can phai reference no vi Menu command Project | Add Reference..., chon Tab Projects va click Browse e chon ClassLibrary1.DLL t subfolder ClassLibrary1\bin cua solution nh trong hnh di ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

67

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Mot khi a referenced ClassLibrary1 vi Class1 trong ay, bay gi ban co the doubleclick len Form1 e code nh sau: Private WithEvents obj As ClassLibrary1.Class1 Private Sub Form1_Load( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load obj = New ClassLibrary1.Class1() End Sub Nh la ta phai declare variable obj thuoc loai ClassLibrary1.Class1 vi WithEvents. at mot Button ten BtnLamViec va doubleclick len no e code nh sau: Private Sub BtnLamViec_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnLamViec.Click obj.LamViec() End Sub e x ly Event cua obj ban chon ten t combobox pha tren ben trai, roi chon TheEvent t ComboBox ben phai nh trong hnh di ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

68

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

ay ta handle Event bang cach hien th mot message n gian: ang x ly mot Event t Class1. Bay gi ban co the chay program. Khi ban click Button BtnLamViec program se hien th message e chng minh rang t mot Application ta co the handle event trong Class cua mot Project khac. (xem v du 3.4)

Ghi chu : Ban dung ch Viet Unicode trong program th nh set up Advanced Save Option vi Menu command File nh trong hnh di ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

69

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi Dialog hien ra, ban chon Unicode (UTF-8) cho Encoding:

Neu ban quen set up Advanced Save Option nh tren, ch Viet se b lu tr di dang ANSI nen mot so se mat dau ch Viet va thay vao o bang nhng dau ?.

Events co the c declared la Shared. Shared methods ch co the raise shared events, chung khong the raise non-shared events. Th du nh: Public Class NguonEvent Shared Event EventDungChoSharedMethods() Public Shared Sub DungChung() SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 70

3.3.12.2. Shared Events

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

RaiseEvent EventDungChoSharedMethods() End Sub End Class Mot shared event co the c raised bi ca shared methods lan non-shared methods: Public Class NguonEvent Public Event TheEvent() Shared Event EventDungChoSharedMethods() Public Shared Sub DungChung() RaiseEvent EventDungChoSharedMethods() End Sub Public Sub LamViec() RaiseEvent TheEvent() RaiseEvent EventDungChoSharedMethods() End Sub End Class Neu ban tm cach raise mot non-shared event t mot shared method th se b syntax error. 3.3.13. Early Binding hay Late Binding (Hieu lc Sm hay Tre) Early Binding co ngha la program biet ro ngay t au loai Object (thuoc Class nao) se c dung trong hoan canh nao. No cho phep IntelliSense hien th cho ta thay nhng class members nao ta co the dung va compiler kiem xem nhng methods ta dung co hien hu khong. Early Binding code c compiled ra IL rat hieu nang v compiler biet ro rang data types cua cac parameters. Ngc lai Late Binding co ngha la ta lam viec cach linh ong vi mot Object luc run-time, tc la program khong biet trc Object ay thuoc loai nao. Late Binding cho ta s uyen chuyen ch lam sao Object cung cap ung method can thiet la u. Do o, ta khong hng c s sang trong IntelliSense cung cap va compiler khong the kiem soat loai Object trc dum cho ta c. Mac dau Late Binding code chay cham hn nhng no cho ta s t do giong nh khi lam viec ngoai i, e en gi chot mi xac nhan. By Default, moi objects trong VB.NET eu la Late Bound. Visual Studio.NET IDE vi Option Strict Off by default ap at luat o. Neu muon ap at Early Binding ta can phai nhet cau Option Strict On au mot source file. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 71

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ta co Late Binding khi compiler khong the xac nh loai Object ta ang goi. Ta co the thc hien ieu nay bang cach dung Object Type e tuyen bo mot cach m ho rang ta se dung mot loai Object nao o, v mot variable vi Object type co the hold-reference-to bat c mot Object nao. Do o, nhng dong code sau ay co the c dung cho bat c Object nao ma Class cua no co implement Sub CongTacToi va khong dung parameter nao ca: Option Strict Off Module LateBind Public Sub LamViec( ByVal obj As Object) obj.CongTacToi() End Sub End Module Neu obj passed vao Sub LamViec khong co mot Sub CongTacToi chang dung parameter nao het th program se b error luc run-time. Do o, ta nen luon luon dung mot Try Structure e bat cai error o. Th du nh: Option Strict Off Module LateBind Public Sub LamViec( ByVal obj As Object) Try obj.CongTacToi() Catch e As Exception ' Code e x ly trng hp Object khong thch hp Console.WriteLine("Invalid Object passed to LamViec") End Try End Sub End Module

3.3.13.1. Dung Object Type

3.3.13.2. Late Binding va Reflection


.NET framework ho tr mot y niem goi la reflection. No noi en kha nang cua program kiem tra .NET code e biet trong code co nhng th g. Ta dung namespace System.Reflection e viet code lam chuyen ay. Vi System.Reflection ta co the viet code e kham pha nhng classes nam trong mot assembly, e biet moi class co nhng methods, properties va events nao. Tiep theo o, ta co the dung reflection e instantiate va SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 72

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

dung nhng objects t cac classes ay. Ca qua trnh nay hoan toan linh ong - giong het nh Late Binding. That ra, CLR (Common Language Runtime) dung reflection e implement Late Binding dum cho chung ta. Thay v bat chung ta phai t dung reflection e code Late Binding, .NET a t te lo lang chuyen ay mot cach t ong cho chung ta. Dau ta co dung Late Binding hay khong, nhieu khi rat tien e ta pass reference en mot object nao o, t cho nay en cho khac, bang cach dung Data Type Object tong quat - khi nao can dung no th ta oi no ra ung loai Object trong hoan canh. Ta thc hien viec convert data type bang cach dung Function CType, ieu o cho phep ta noi trc Data Type Object se c converted ra object cua class nao e goi mot method theo cach Early Bound: Module LateBind Public Sub LamViec( ByVal obj As Object) CType(obj, TheClass).CongTacToi() End Sub End Module Trong th du tren du rang ta ang lam viec vi variable thuoc type Object - tren nguyen tac th co ve la Late Bound - nhng chung ta ang dung Function CType e convert obj ra mot object thuoc class TheClass. Ky thuat nay c goi la casting (o khuon). Neu ta xem TheClass nh mot cai khuon, khi ta ep obj vao khuon ay th giong nh o khuon e cho obj co dang cua TheClass. Function CType rat hu dung khi ta lam viec vi nhng objects co implement nhieu interfaces, v ta co the dung cung mot object cho nhng interfaces khac nhau. Gia du nh ta co mot object thuoc loai TheClass va no cung co implement mot interface ten MyInterface, ta co the dung interface ay trong code sau ay: Dim obj As TheClass obj = New TheClass CType(obj, MyInterface).DoSomething() Theo cach tren ta co the goi methods theo cach Early Bound trong nhieu interfaces cua mot object ma khong can phai declare mot variable mi. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 73

3.3.13.3. Dung Function CType

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Tha ke t mot ngon ng khac VB.NET code c compile ra IL (Intermediate Language) managed code, tc la code se c CLR (Common Language Runtime) chay trong .NET Framework. Moi managed code, khong can biet c compiled t ngon ng nao eu co the lam viec chung nhau, tc la ta co the tao mot class trong ngon ng nay va dung no trong mot ngon ng khac, ke ca viec tha ke. That ra hau nh ta luon luon lam viec ay khi viet VB.NET. o la v phan ln .NET system library c viet bang C#, nhng ta dung hay tha ke t no thng xuyen trong VB.NET

3.3.14.

3.3.14.1. Tao mot VB.NET BaseClass


Trong th du ve tha ke t mot ngon ng khac, trc het ta th tao mot Class Library Project trong VB.NET ten vblib va them vao o mot class n gian ten Parent giong nh sau: (xem v du 3.5) Public Class Parent Public Sub SayHello() MsgBox("Hello from Parent Class", MsgBoxStyle.Information, "Parent Class in VB.NET") End Sub End Class Ta se dung Parent lam BaseClass e tha ke thanh mot SubClass trong C#. 3.3.14.2. Tao mot C# SubClass Dung File | Add Project e them mot C# Class Library project mi va at ten no la cslib. Reference vblib bang cach dung Menu command Project | Add Reference... va chon Tab Projects, click Browse e tm vblib.dll trong vblib\bin subfolder. Lu y la ta va mi reference vblib.dll, cai assembly cua Class Parent, ch ta khong ung en hay can VB.NET source code cua Class Parent. Trong C#, ta se tha ke Class Parent qua reference BaseClass trong vblib.dll assembly. Bay gi code C# nh sau: (xem v du 3.5) namespace cslib { using System.Windows.Forms; using vblib; SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 74

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

public class cSharpclass : Parent { public cSharpclass() { MessageBox.Show("Instantiating cSharpclass object, inheriting VB.NET Parent class", "CSharp Class"); } } } Code C# ben tren co nhieu iem tng ong vi VB.NET. Tuy nhien v C# en t ngon ng lap trnh C va C++ nen no co syntax hi khac mot chut: Moi statement trong C# phai cham dt bang dau ; e anh dau cuoi hang Cap dau ngoac cong queo { .. } c dung e anh dau au va cuoi cua mot Statement Block thay v dung End Sub. Keyword using c dung thay v keyword Imports trong VB.NET C# th case sensitive, tc la phan biet ch hoa, ch thng - th du obj th khac vi Obj. Constructor method mang cung ten vi class thay v ten New nh trong VB.NET. Ta hay th i qua cac dong code. Cau th nhat nh ngha namespace cho source file. Trong C#, moi namespace phai c tuyen bo ro rang (explicitly declared) trong moi code module. namespace cslib Ke o la hai cau tuyen bo ta nhap khau System.Windows.Forms va vblib: using System.Windows.Forms; using vblib; Cau ke o tuyen bo cSharpclass tha ke t class Parent, e y cach dung dau : thay v keyword Inherits: public class cSharpclass : Parent Sau cung la Constructor dung chnh ten cua class: public cSharpclass() { MessageBox.Show("Instantiating cSharpclass object, inheriting VB.NET Parent class", "CSharp Class"); } e y cach dung MessageBox.Show giong het nh trong VB.NET e hien th mot message.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

75

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dung menu command File | Add Project e them mot VB.NET Windows Application project mi cho solution. Trong project mi nay ta dung menu command Project | Add Reference... e them references cho cslib va vblib. Right-click len project trong Solution Explorer va chon no lam Set As Startup Project e project nay chay khi ta bam F5. Bay gi at mot Button ten BtnStartDemo len Form va viet code di ay e x ly Event Click: Private Sub BtnStartDemo_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnStartDemo.Click Dim objCS As New cslib.cSharpclass() objCS.SayHello() End Sub Khi ta chay program va click button StartDemo ta se thay mot dialog cho biet Constructor cua cSharpclass ang c goi e instantiate object objCS: (xem v du 3.5)

3.3.14.3. Tao mot program Client

Tiep theo o mot dialog th nh hien th message t Sub SayHello ma objCS tha ke t BaseClass Parent:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

76

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

77

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

LAM VIEC VI OI TNG O HOA(GDI+)


quan en hnh ve, va xem xet tien trnh ap ng(va khi phat) cua cac viec sn ve. Ngoai ra ban co the phat trien nhieu cach khac nhau e co c mot oi tng Graphics. Sau khi hieu ro bo cuc chung cua phong canh GDI+, phan con lai chng se e cap en cach ieu tac [multipulate] cac mau, cac phong ch, cac hnh dang cac hnh, va cac anh bitmap. (Xem cac v du trong chng 4) 4.1. So sanh gia o hoa cua VB.NET va VB 6.0 Bat chap s viec Visual basic a luon la mot cong cu khac thng e xay dng cac Giao dien ngi dung o hoa[graphical user interfaces] ngon ng van thieu phan chuyen at o hoa nang lc cao. oi VB 6.0, c cung cap mot so kieu ieu khien GUI han che (chang han nh ieu khien Shape) cung nh mot vai ham GDI kha bat tien. Ngoai ra, cac phien ban trc ay cua VB a chu yeu van dung mot che o o hoa co ten twip trong khi o hau het cac ngon ng khac tren the gii lai chuyen at cac hnh anh bang dang thc pixelchung hn. Noi chung, neu can thc bat ky kieu tac dung chuyen at cao cap vao trong VB, ban phai ra ngoai ngon ng e ieu tac (tng tac vi API). oi VB.NET, bay gi ban co the xay dng cac ng dung cc ky manh lay hnh ve lam trong tam. Thc te cac lap trnh vien co kha nang tao cac ng dung o hoa khong thua kep g cac e an c xay dng bang C++. VB.NET van dung mot so khong gian ten .NET e cung cap cac dch vu chuyen at theo lap trnh. S that cua van e o la khong con lech chuyen at (hoac cac ieu khien) VB 6.0 cu quen thuoc nao con song trong the gii cua .NET. Thay vao o la cong nghe mi co ten GDI+ c tat ca cac ngon ng nham vao .NET s dung. Muc tieu cua chng nay gii thieu ve s phong phu cua GDI+, nen biet rang ay la mot lnh vc ma VB 6.0 va VB.NET khac nhau ro rat. 4.2. Khao sat Khong gian o hoa GDI+ .NET Framework cung cap mot so khong gian ten chuyen danh e chuyen at o hoa hai chieu. Ngoai nhng chc nang mong i tm thay mot goi o hoa(v du mau, phong ch, but , co,ieu tac anh.). Noi chung Khong gian ten nay tao thanh ac cu .NET co ten GDI+ Cac khong gian ten GDI+ Khong gian GDI+ Mo ta SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 78

Chng 4

Trong chng nay, chung ta tm hieu khai quat nhieu khong gian ten lien

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

System.Drawing

ay la khong gian ten GDI+ loi, nh ngha nhieu kieu e chuyen at c ban (phong ch , cac but co sn c ban,) cung nh kieu Graphics cc manh System.Drawing.Drawing2D Khong gian nay cung cap cac kieu dung cho cong nang o hoa hai chieu cao cap hn(v du nh cac co sn gradient va cac bien the hnh hoc) System.Drawing.imaging Khong gian nay nh ngha cac kieu cho phep ban trc tiep ieu tac cac anh o hoa( v du thay oi bang palete cua anh, trch d lieu meta anh, va ieu tac cac tap tin). System.Drawing.Print Khong gian nay nh ngha cac kieu cho phep ban chuyen dat cac anh thanh trang in, tng tac vi chnh may in va nh dang dang ve cua mot cua mot khoi in a cho. System.Drawing.Text Khong gian nay cho phep ban ieu tac cac su tap phong ch.

4.3.

Khai quat ve Khong gian ten System.Drawing Hau het cac kieu c dung khi lap trnh cac ng dung GDI+ eu co trong khong gian ten System.Drawing. Nh vay, ta co lp bieu th cac anh, cac sn co, cac but ve, va cac phong ch. Hn na, System.Drawing con nh ngha mot so kieu ha quan khac chang han nh : Color, Point, va Ractange. Bang sau liet ke mot so kieu loi cua System.Drawing(xem v du 4.2) Bang cac thanh vien cot loi cua khong gian System.Drawing Kieu System.Drawing Mo ta Bitmap Goi rieng mot anh a cho va nh ngha mot so phng phap e ieu tac d lieu o hoa c s. Brush, Brushes, - Cac oi tng Brush c dung e ien cac SolidBrush, phan ben trong cua cac hnh dang o hoa, chang SystemBrushs, han nh cac hnh ch nhat, cac hnh elip, va cac a TextureBrush giac. - Cac kieu nay bieu th mot so bien the co sn, vi Brush van hanh nh lp c s tru tng [abstract base class] cho cac kieu con lai. Cac kieu Brush bo sung c nh ngha trong khong gian ten System.Drawing.Drawing2D. MSSV:9800503 MSSV:9800552 79

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Color, SystemColors, ColorTranlator

- Kieu Color co the nh ngha mot so trng co the dung e cau hnh mau cac cua cac phong ch, cac co sn, cac but ve - Kieu ColorTranlator cho phep ban xay dng mot kieu Color .NET mi t cac phan bieu th mau khac( win 32 , Kieu OLE-COLOR, cac hang mau HTML,) - Kieu Font goi rieng cac ac tnh cua mot phong ch a cho (tc la ten kieu, am, nghieng, co ch,) - FontFamily cung cap kha nang tr tng cho mot nhom cac phong ch co mot thiet ke chung tng t nhng co mot so bien the nhat nh ve kieu dang. Lp loi nay bieu th mot be mat ve hp le, cung nh mot so phng phap e chuyen at cac van ban, cac anh, va cac khuon mau hnh hoc [geometric patterns]. Hay xem kieu nay la dang tng ng vi Win32 HDC cua .NET Lp nay bieu th cac bieu tng tuy bien [custom icons], cung nh loat cac bieu tng chuan do he thong cung cap. - Image la lp c s tru trng cung cap cong nang cho cac kieu nh Bitmap, Icon, va Cursor - ImageAnimator cung cap mot cach e lap lai qua mot so kieu phai sinh t Image theo quang thi gian a ch nh. Pen la oi tng e ve cac ng ke va cac ng cong[curves]. Kieu Pens nh ngha mot so tnh chat dung chung tra ve mot Pen mi theo mot mau a cho. Cac cau truc nay bieu th mot toa o (x,y) anh xa mot so nguyen hoac float (dau cham ong ) c s. Cau truc nay bieu th mot chieu kch ch nhat (mot lan na anh xa theo so nguyen hay float c s). Cac cau truc nay bieu th mot chieu cao / rong a MSSV:9800503 MSSV:9800552 80

Font , FontFamily

Graphics

Icon, SystemIcon

Image, ImageAnimator

Pen, Pens, SystemPens

Point PointF Ractangle RactangleF Size SizeF SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

StringFormat

Region

cho(mot lan na anh xa theo mot so nguyen hay float c s). Kieu nay c dung e goi rieng nhieu tnh nang khac nhau cua bo cuc van ban (tc: cach cang thang hang, khoang cach dong,..vv). Mo ta ben trong mot hnh anh hnh hoc gom co cac hnh ch nhat va cac lo canh [paths]

Nhieu kieu cot loi nay van dung mot so tnh chat ac trng (iem danh) hu quan., hau het no c nh ngha ben trong khong gian System.Drawing. Nhieu kieu ac trng (iem danh )nay c dung e cau hnh dang ve va cam nhan cua cac co sn va cac but ve. Bang cac kieu ac trng (iem danh) trong khong gian System.drawing Kieu ac trng (iem Mo ta danh) cua System.Drawing ContentAlignment Ch nh cach cang thang hang noi dung theo mot be mat ve[drawing surface] (gia , trai, phai,vv..) FontStyle Ch nh thong tin kieu dang ap dung cho van ban nh in am , nghieng v.v GraphicsUnit Ch nh n v o cua muc a cho (giong nh cac hang che o anh xa Win32) KnownColor Ch nh cac ten than thien cho cac mau he thong a biet. StringAlignment Ch nh cach cang thang hang cua mot chuoi van ban tng oi vi hnh ch nhat bo cuc cua no. StringFormatFlags Ch nh thong tin bo cuc va hien th cho cac chuoi van ban (v du : Nwap, LineLimit ) Stringtrimming Ch nh cach ta cac ky t ra khoi mot chuoi khong va lot trong mot hnh dang bo cuc. String Unit Ch nh cac n v o cua mot chuoi van ban. 4.4. Xay dng mot khong gian lam viec vi GDI+ Khi muon van dung GDI+ ban phai an nh tham chieu en System.Drawing.dll. tap tin nay cha cac kieu cua mot khong gian ten GDI+ cot loi. Nen biet rang neu la mot khong gian e an ng dung Windows mi bang VB.NET, tham chieu nay t ong an nh nhan danh ban. Sau khi an nh tham chieu nay, ban ch van dung t khoa Imports cua VB.NET va coi nh a san SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

81

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

sang e chuyen at. e xay dng mot ng GDI+ ta hay xem xet cac tien ch [utility type] ma khong gian ten System.Drawing nh ngha. 4.4.1 Cac kieu tien ch cua Sytem.Drawing Nhieu phng phap ve ma oi tng graphics nh ngha yeu cau ban ch nh v tr hoac vung ni ban chuyen at mot muc ban a cho. V du : dung phng phap DrawingString() yeu cau ban ch nh v tr e chuyen at chuoi van ban tren kieu phat sinh t control. V rang DrawString() a c qua tai mot so lan , tham so v tr nay co the c ch nh bang mot toa o hoac v tr cua mot hop e ve trong o. Cac phng phap kieu GDI+ khac co the yeu cau ban ch nh chieu rong va chieu cao cua mot muc a cho hoac cac bien noi bo trong mot anh hnh hoc. e ch nh thong tin nh vay, khong gian ten System.Drawing nh ngha ca kieu Point, Rectange, Region, va Size. Hien nhien, mot Point bieu hien mot toa o (x ; y). cac kieu Rectangle chot gi mot cap iem bieu th cac bien ben trai va di phai cua vung ch nhat. Cac kieu size tng t Rectangle tuy nhien, cac cau truc nay bieu th mot chieu kch a cho dung mot chieu cao va chieu rong a cho. Cac Region cung cap mot cach e bieu th va ieu tac be mat ve phi ch nhat [nonrectangular]. Cac bien thanh vien ma cac kieu Point, Rectangle, va Size s dung eu c bieu th noi bo di dang cac kieu d lieu so nguyen. Tuy nhien, neu can chi tiet hn, ban co toan quyen van dung cac kieu PointF, rectangleF, va SizeF tng ng, ma ( nh ban co the oan ) se anh xa theo mot dau cham ong ( hay dau phay ong = floating point number_ND ) c s ( bieu th di dang mot kieu d lieu Single VB.NET ). Bat chap phan bieu th d lieu c s, moi kieu co mot loat cac thanh vien giong nhau. Di ay neu khai quat. 4.4.1.1 Kieu Point(F) Kieu tien ch au tien can lu y o la System.Drawing.Point(F). bang co neu khai quat vai thanh vien loi. Bang cac thanh vien kieu Point(F)
THANH VIEN POINT VA POINTF Y NGHA

Phng phap nay phien dch mot kieu Point a cho theo mot kch thc a cho. IsEmpty Tnh chat nay tra ve True neu X va Y c an nh la 0. Offset() Cac tnh chat nay cho phep ban tm va an nh cac gia tr (x , y) c s. Bang : Cac thanh vien cua kieu point SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 82

XY

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

4.4.1.2 Kieu Rectangle(F) Giong nh Point, cac Rectangle cung hu ch trong moi ng dung (goc GUI hoac cac dang khac ). Bang liet ke cac thanh vien loi can lu y.
THANH VIEN RECTANGLE VA RECTANGLEF

Y NGHA

Inflate() Intersect() Union()

Cac phng phap chung nay cho phep ban m rong mot hnh ch nhat, cung nh tao cac hnh ch nhat mi la ket qua cua mot phep giao hoan [intersection] hoac hoi [union]. Cac tnh chat nay an nh cac chieu kch cu mot kieu Rectangle mi.

Top Left Bottom Right Height Width

Cau hnh chieu cao va chieu rong cua mot rectangle a cho.

Cac tnh chat nay tra ve toa o x hoac y cua goc ben trai Rectangle Co the dung phng phap nay e xac nh them mot Point (hoac Rectangle) a cho co nam trong cac bien cua Rectangle hien hanh hay khong. Tuyet vi e kiem tra ung [hit testing] mot iem ben trong hnh ch nhat Bang : Bang cac thanh vien cua kieu Ractangle Trong phng php hu ch nht ca Ractangle l Contains(). Phng php ny cho php bn xc nh xem mt Point hoc Ractangle cho c nm trong cc bin hin hnh ca mt i tng Ractangle khc hay khng. Kieu Size(F) va Region 4.4.1.3 La kieu kha n gian e ieu tac. Ngoai cac thanh vien c tha ke, cac kieu nay nh ngha cac tieu thanh vien v du nh Hight , Width. 4.4.1.4 Lp Region Kieu nay bieu th ben trong cua mot hnh dang hnh hoc [geomatric shape]. V duban tao mot hnh ch nhat 100x100 pixel. Neu muon nam quyen truy cap vung ben trong hnh ch nhat ban co the viet nh sau: get the interior of this Ractangle SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 83

X Y Contains()

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dim r as ractangle = New Ractangle(0,0, 100,100) Dim rgn as Regon = New Region (r) Sau khi co cac chieu kch ben trong cua hnh dang a cho (bao gom cac hnh hoc phc tap hn). Ban co the ieu tac hnh hoc o bang mot so tnh chat cua cac thanh vien cot loi cua lp Region (xem bang sau ay:) Thanh vien Y ngha Rigion Complement() Cap nhat phan rigion nay theo phan oi tng o hoa a ch nh khong giao hoan vi Region nay. Exclude() Cap nhat Region nay theo phan ben trong cua no khong giao hoan vi oi tng o hoa a ch nh. GetBounds() Tra ve RactangleF bieu th mot vung ch nhat nh bien Region nay. Intersect() c qua tai. cap region nay theo phan giao hoan cua chnh no vi oi tng o hoa a ch nh. IsEmpty() Kiem tra xem Region nay co mot phan ben trong MakeEmpmty() trong [empty interior] tren be mat ve a ch nh hay khong (hoac an nh Region hien hanh la trong). IsInfinite() Kiem tra xem Region nay co mot phan ben trong MakeInfinite() vo han tren be mat ve a ch nh ve hay khong (hoac an nh region hien hanh). Transform() Bien oi Region nay theo matrix a ch nh. Translate() nh v toa o cua Region theo khoi lng a ch nh. Union() Cap nhat Region nay theo phan hoi cua chnh no va oi tng o hoa a ch nh. Xor() Cap nhat region nay theo phan hoi tr phan giao hoan cua chnh no vi oi tng o hoa a ch nh. Bang : Thanh vien cua lp Region 4.4.2 Trnh ieu khien Paint() Nh ta a biet, lp control nh ngha mot phng phap co the chay e [overriable method] ten la OnPaint(). Khi mot form (hoac la mot hau due bat ky cua lp control ) muon chuyen at noi dung o hoa, mot cach tiep cap o la chay e phng phap nay va trch mot oi tng graphics t tham so PaintEventArgs en (tat nhien la dung tnh chat graphics): Public Class Form1 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 84

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Inherits System.Windows.Forms.Form Public Sub New() Mybase.New() this call is required by the windows form designer InitializeComponent() CenterToScreen() Me.Text = Basic paint form (Click on me) End sub Protected Overridees Sub OnPaint (Byval e as System.Windows.Forms.PaintEventArgs) Dim g as Graphics = e.graphics Rendeer a string directly into the form using a givent font and _ color. g.DrawString(Hello GDI+ , New font (Times new Roman, _ 20),New SolidBrush(color.Black),0,0) End sub End Class ' Chuyen at cac oi tng GDI+ ben ngoai cac tieu trnh Paint Ban co the chuyen at mot anh ben ngoai pham vi cua mot trnh ieu quan s kien Paint chuan. V du, mac nhan ban muon ve mot vong tron nho tai v tr (x,y) ma ban nhap chuot. Ban phai lam nh sau : Bc au tien la co mot oi tng Graphics hp le ma ban co the co c bang phng phap Graphics.FormHwnd() dung chung. Lu y ban ang chuyen handle hien hanh cua ban lam tham so duy nhat. Private Class Form1 MouseDown (Byval sender as object , _ Byval e as System.Windows.Forms.MouseEventArgs) _ Handle Mybase.MouseDown grad a new graphic Object Dim g as Graphics = e.graphics Now draw 10 x10 circle at the mouse click g.drawEllipes(new Pen(color.Green),e.X,e.Y,10,10) End sub Gi ay , trong khi logic nay chuyen at mot hnh ben ngoai mot trnh ieu quan s kien Onclick(), ban phai biet rang neu form c thoi phe chuan [invalidated] (va nh vay se c ve lai) th moi hnh tron se c SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 85

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

xoa. ieu nay co y ngha la tuyen trnh chuyen at nay ch xay ra trong ng canh cua mot cu phap nhap chuot. Cach tiep can tot hn o la e Logic MouseUp bo sung mot Point mi vao mot bo su tap noi bo (chang han nh : ArrayList) gom cac Point, theo sau la mot lenh goi invalidate(). Phng phap OnPaint() co the n gian lap lai qua su tap va ve tng muc. Public Class Form1 Inherits System.Windows.Forms.Form use to hold all the point Private myPsts as arrayList = new ArrayList() Private sub Form1_MouseDown(Byval sender as Object, _ Byval e as System.Windows.Forms.MoucseDown) _ Handle Mybase.MouseDown Grad a new Graphics Object Dim g as graphics = Graphics.FromHwnd(Me.Handle) Now draw 10 x10 circle at mouse click . g.drawEllipes(new Pen(color.Green),e.X,e.Y,10,10) add to point collection myPst.Add(New Point (e.X,e.Y)) End Sub Private Form1_Paint (Byval sender as Object, _ Byval e as System.Windows.Forms.MoucseDown) _ Handle Mybase.Paint Dim g as Graphics = e.graphics g.DrawString(Hello GDI+ , New font (TimesnewRoman_ , 20),New SolidBrush(color.Black),0,0) New SolidBrush((color.Back),0,0) Draw each point in the ArrayList dim p as Point For Each p in myPsts g.DrawEllipse(New Pen (color.Green),p.X,p.Y,10,10) next end sub End class

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

86

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

4.4.3 Lp Graphics Nam trong oi tng System.Drawing. Graphics , la ngo thong cua ban vi kha nang chuyen at GDI+. Lp nay bieu th mot ng ca thiet b thch hp [valid device context] (v du , mot Win 32 HDC tho). Phng phap nay cho phep ban chuyen at van ban, cac anh( cac bieu tng, cac anh bitmap, vvv ), cung nh nhieu khuon mau hnh hoc khac. Cac thanh vien cua lp graphics Cac thanh vien YNgha From Hdc() Cac phng phap dung chung nay cung cap mot FromHwnd() cach e co mot oi tng graphics hp le t mot FromImage() anh a cho(v du : bieu tng ,anh bitmap, ) hoac tieu cu GUI Clear() ien mot oi tng graphics bang mot mau a ch nh, xoa be mat ve hien hnh trong tien trnh. Cac phng phap nay ( trong so nhng phng DrawArc() phap khac ) c dung e chuyen at hnh anh DrawBezier() hoac khuon mau hnh hoc a cho. DrawBeziers() DrawCurve() DrawEllipse() DrawIcon() DrawLine() DrawLines() DrawPie() DrawPath() DrawRactangle() DrawRactangles() DrawString() Cac phng phap nay (trong so nhng phng FillEllipse() phap khac ) c dung e ien phan ben trong FillPath() [interior] cua mot hnh danh hnh hoc a cho. FillPie() FillPolygon() FillRactangle() MeasureString() Tra ve mot cau truc Size bieu th cac bien cua mot khoi van ban a cho. Song song vi viec cung cap mot so phng phap chuyen at, lp graphics con nh ngha cac thanh phan bo sung goi rieng cac chi tiet ve dang ve rieng va cam nhan cua tac vu chuyen at hien hanh. Va xem bang sau (cac tnh chat hu dung cua lp graphics). SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 87

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Tnh chat Graphics Clip ClipBounds VisibleClipBounds IsClipEmpty IsVisibleClipEmpty Transform PageUnit PageScale DpiX DpiY SmoothingMode PixelOffsetMode TextRenderingHint

Y ngha Cac tnh chat nay cho phep ban an nh cac tuy chon cat [ clipping options] c dung vi oi tng Graphics hien hanh

Cho phep ban bien oi toa o Cac tnh chat nay cho phep ban cau hnh iem goc [point of origin] cho cac tac vu chuyen at cua ban cung nh cau hnh n v o

Cac tnh chat nay cho phep ban cau hnh s bang phang cua cac oi tng hnh hoc va van ban. Chung c an nh bang cac kieu iem danh tng ng c nh ngha trong cac khong gian ten System.Drawing va System.Drawing.Drawing2D CompositingMode Tnh chat CompositingMode xac nh hnh ve se c CompositingQuality ghi e nen hay hay hoa xen vi nen. Gia tr c an nh bang kieu iem danh CompositingMode tng ng c nh ngha trong cac khong gian ten System.Drawing.Drawing2D Tnh chat CompositingQuality ch nh o phc tap cua tien trnh hoa xen [blending process]. No van dung kieu em danh CompositingQuality cung nam trong he thong System.Drawing.Drawing2D InterpolationMode Ch nh cach xen d lieu vao gia cac iem cuoi dung mot kieu iem danh hu quan.

4.5.

Tm hieu ve mau (color) Lp Graphics yeu cau ban ch nh mau se c dung trong khi ve. Cau truc Color bieu th mot hang mau ARGB(alpha red green - blue). Hau het cac kieu color co c thong qua mot so tnh chat chung, tra ve mot kieu color mi Cac thanh vien cua kieu Color Thanh Vien Y ngha Color FromArbg() Tra ve mot oi tng color mi da vao cac tr so Red, Green, Blue From Tra ve mot oi tng color mi da vao mot ten chuoi MSSV:9800503 MSSV:9800552 88

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

KnownColor() A,R,G,B IsNamedColor() Name

GetBrightness() GetHue() GetStaturation() TbArgb() ToknownColor() ( Lp ColorDialog Khong gian ten System.Windows.Forms con cung cap mot lp hop thoai nh san (ColorDialog) co the dung e nhac ngi dung ve s la chon mau cua ho. Trong hop thoai o ta co the la chon kieu hien th mau theo HSB hay RGB . Xem hnh sau : Xem v du 4.1

(v du Red) Cac tnh chat tra ve gia tr c gan cho kha canh alpha, red , green, blue Co the ap dung cho cac thanh vien nay cho mot oi tng co kieu color e xac nh xem cac gia tr ARGB hien hanh co co mot ten nh san (v du Red) hay khong, va neu vay, ta co the tm no thong qua tnh chat Name Cac kieu color GDI+ co mot gia tr Hue Saturation Brightness (HSB) ket hp. Cac phng phap truy tm cac phng phap cu the. Tra ve gia tr ARGB cua kieu Color hoac gia tr kieu iem danh KnownColor da vao oi Color hp le.

Hop thoai mau

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

89

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi o ta dung mau

e the hien ta dung oan len sau


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e_ As System.EventArgs) Handles Button1.Click If (cldlg.ShowDialog() <> DialogResult.Cancel) Then Me.BackColor = cldlg.Color End If End Sub

Lam viec vi Phong ch Khong gian ten System.Drawing cung cap mot kieu o la System.Dawing.Font bieu th mot phong ch a cho c cai at tren may cua ngi dung. Cac kieu cua font ch : Cac kieu cua Font Dien giai Bold Van ban in am Italic Van ban in nghieng SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 90

4.6.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Regular Van ban bnh thng Strickeut Van ban co mot vach ngang di Underline Van ban co gach di ( Ve o o font ch: Tat ca chieu kch cua font ch eu da vao gia tr ng c s[base line] la ng ke tng tng ma moi ky t at tren o. ( Khong gian ten cung nh nghia kieu FontFamily tru tng hoa mot nhom cac mat ch [typefaces] co mot thiet ke c ban tng t nhng vi mot bien the kieu dan (v du : font size, chang han mot ho cac font ch, giong nh Verdana , co the gop vai phong ch khac biet ve kieu dang va kch k nh Verdana co 12 in am, va Verdana co 12 in nghieng.) va ta co the tao mot oi font nh sau:
' Make a family of font Dim myFamily As System.Drawing.FontFamily = _ New System.Drawing.FontFamily("Verdana") ' Pass a family into font Dim myFont As Font = New Font(myFamily, 12) e.Graphics.DrawStrign("Hello ?", myFont, Brushes.Blue,_ 10, 10)

( Lp FontDialog e tao thuan tien cho ngi dung chon font Lp Control cung cap lp ForntDialog . Xem v du 4.3 Hnh:

Khong gian ten System.Drawing.Drawing2D Trong khong gian System.Drawing.Drawing2D cung chang khac g so vi khong gian System.Drawing, song chung ta can nhan thc rang nhieu cau hnh but ve(Pen) va co sn (Brush) hap dan hn. V du nh sn co gradient. Cac lp cua System.Drawing.Srawing2D Cac lp cua Y Ngha System.Drawing.Drawing2D SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 91

4.7.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

AdjectableArrowCap CustomlineCape

Blend ColorBlend GraphicsPath GraphicsPathIterator PathData

HatchBrush LinearGradientBrush Ngoai ra khong gian ten System.Drawing.Drawing2D con bo sung mot loat cac phng thc khac c dung e ket hp vi nhau. Cac phng thc cua System.Drawing.Drawing2D Cac Phng thc cua Y ngha System.Drawing.Drawing2D DashStyle Ch nh kieu dan cua ng gach cach c ve bang mot pen FillMode Ch nh cac to phan ben trong cua mot lo trnh khep kn. HatchStyle Ch nh cac khuon mau khac nhau san co cho cac oi tng HatchBrush LinearGradientMode Ch nh hng ap dung mot gradient tuyen tnh. LineCap Ch nh cac kieu dang mui hien hanh c dung bi mot Pen PenAlignment Ch nh cac cang thang hang cua mot pen tng quan vi ng ke ang ve. PenType Ch nh kieu khuon to ma mot pen s dung e ien cac dong. QualityMode Ch nh chat lng chung dung e chuyen SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 92

Cac mui but c dung e sn ve cac iem au va iem cuoi cua mot ng thang a cho. Cac kieu nay bieu th cac mui ten do ngi dung nh ngha va co hnh mui ten ieu chnh c. Dung e nh ngha mot khuon mau (va cac mau hoan xen [blend] )c dung e ket hp vi mot LinearGradientBrush. Mot oi tng GraphicsPath bieu th mot loat cac ng ke va ng cong lien thong. Lp nay cho ban chen hau het moi khuon mau hnh hoc (cac cung ,cac hnh ch nhat , cac ng ke , cac chuoi , cac a giac ,v,v) vao mau bieu th. PathData lu gi d lieu o hoa tao thanh mot mau bieu th. Cac kieu co sn la mat.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

SmoothingMode at mot anh o hoa. RenderingHint 4.8. Chuyen at cac anh. Khong gian System.Drawing.Image nh ngha mot so cac phng phap va tnh chat lu tr nhieu thong tin khac nhau ve loai pixel c s cua no bieu th v du nh Width, Height . Ngoai ra System.Drawing.Image con nh ngha mot lo cac kieu tao ieu kien thuan li cho cho mot so phep bien oi hnh anh cao cap. Cac thanh vien cua kieu Image( Trong System.Drawing.image) Ten thanh vien Image Y ngha FormFile() FromHBitmap() FromStream() Height Width Size PhysicalDemensions HorizontalResolution VirticalResolution Palete GetBounds() Tao mot anh t mot tap tin ch nh Tao mot Bitmap t Window Tao mot anh t luong d lieu a ch nh . Cac tnh chat tra ve thong tin lien quan en cac chieu kch c cua anh nay.

Save() Lp PictureBox e co the chuyen mot anh bitmap len form thiet ke trc ta dung control o la PictureBox (xem v du 4.4:)

Tra ve mot kieu d lieu ColorPalete bieu th bang chon mau c s dung cho anh nay. Tra ve mot hnh ch nhat bieu th kch c hien hanh cua anh. Lu mot anh ra tap tin.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

93

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

NHAP, XUAT va Namespace SYSTEM.IO


System.IO la vung cua cac th vien lp c s chuyen danh cho dch vu nhap xuat tap tin (va bo nh). Giong nh cac namespace khac , namespace cung cap nhieu lp, kieu nh danh, cau truc, Va sau ay la bang cac kieu loi cua System.IO Kieu loi System.IO Y ngha BinaryReader Cho phep ban lu tr va truy xuat cac kieu d lieu BinaryWrite nguyen thuy [primitive data types] (cac so nguyen , chuoi, ) di dang cac gia tr nh phan. BufferedStream Cung cap kho lu tr tam thi cho mot luong byte co the c chuyen y ra kho lu tr ve sau. Dung e ieu tac cac tnh chat cho th muc hoac tap Directory tin vat ly a cho cung nh tao cac tap tin mi va m DirectoryInfo rong cau truc th muc hien hanh. Cac kieu Directory File va Type chu yeu pho dien cong nang cua chung di FileInfo dang dung chung. Cac kieu DirectoryInfo va FileInfo pho dien tng t mot minh du oi tng hp le. FileStream Cho phep truy cap tap tin ngau nhien (tc cac kha nang tm kiem ) vi d lieu c bieu th di dang mot luong byte. MemotyStream Cho phep truy cap ngau nhien d lieu ngau nhien c phan luong[Streamed Data] c lu tr trong bo nh thay v trong mot tap tin vat ly. Streamwriter Dung e lu tr va truy tm thong tin van bang vao StreamReader (hoac t) mot tap tin. Cac kieu nay khong ho tr kha nang truy cap tap tin ngau nhien. StringWriter Giong nh cac kieu StreamReader/StreamWriter, cac StringReader lp nay cung khong lam viec vi thong tin van ban . Tuy nhien, kho lu tr c s la mot vung em chuoi[string Buffer] thay vmot tap tin vat ly. Xem cac v du chng 5 (cac v vu gop chng cac noi dung chng 5) Bay gi ta tm hieu mot vai kieu loi cua System.IO 5.1. Kieu Directory(Info) Lp nay cha mot loat cac thanh vien c dung a tao, xoa, nhan biet qua cac th muc va cac th muc con. Cac thanh vien c neu ra bang sau: SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 94

Chng 5

Trong c cau .NET, namespace

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cac thanh vien DirectoreyInfo Create() CreateSubdirectory() Delete() GetDirectories() GetFile() MoveTo() Parent V du Tao th muc

Y ngha Tao mot th muc (hoac cac th muc con ) can c vao ten ng dan. Xoa th muc va tat ca noi dung cua no. Tra ve mot mang cac chuoi bieu th tat ca cac th muc co trong th muc hien hanh. Lay cac tap tin trong th muc a ch nh(di dang mang cac kieu FileInfo) Di mot th muc va cac noi dung cua no e mot ng dan mi Truy tm th muc cha cua ng dan ch nh.

'Ta phai: Imports system.IO Tao thu muc ngay vi tri hien hanh Dim dir1 As DirectoryInfo = New DirectoryInfo(".") ' Tao thu muc co ch duong dan Dim dir2 As DirectoryInfo = New DirectoryInfo("C:\Hieu") V du tao va oc hien th thong tin th muc 'Ta phai: Imports system.IO Dim dir2 As DirectoryInfo = New DirectoryInfo("C:\Hieu") Console.WriteLine("FullName : {0}", dir2.FullName) Console.WriteLine("Name: {0}", dir2.Name) Console.WriteLine("Parent : {0}", dir2.Parent) ' Thoi gian(date) tao thu muc Console.WriteLine("Creation : {0}", dir2.CreationTime) Console.WriteLine("Root : {0}", dir2.Root) 5.2. Kieu FileInfo Vai tro cua FileInfo la goi rieng ve mot so chi tiet ve cac tap tin hien co tren o a cng(thi gian tao, kch c , thuoc tnh,) Cung nh tap giup tao va huy cac tap tin mi. Va FileInfo co cac thanh vien loi sau: Thanh vien FileInfo Y ngha AppendText() Tao mot kieu StreamWriter(c e cap phan sau) SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 95

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

CopyTo() Create()

CreateText() Delete() Directory DirectoryName Length MoveTo() Name Open() OpenRead() OpenText()

OpenWrite() V du tao va xoa mot file Imports system.IO ' Make a fileInfo Dim f As FileInfo = New FileInfo("C:\Test.txt") Dim fs As FileStream = f.Create ' Print some basic traints Console.WriteLine("Creation: {0}", f.CreationTime) Console.WriteLine("Full name: {0}", f.FullName) Console.WriteLine("File Attribute: {0}", f.Attributes.ToString) console.WriteLine("Press a key to delete a file" Console.Read() fs.Close() f.Delete() 5.3. Xem xet phng phap FileInfo.Open() e m tap tin ma dung phng phap FileInfo.Open() ta phai biet s ve 3 tham so cua phng thc o. V du ve FileInfo.Open() 'Dung FileInfo.Open() ' open (or Create) a filewith read/Write Attributes (no sharing) ' and store file handle in a FileStream SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 96

noi van ban vi mot tap tin Chep mot tap tin hien co sang mot tap tin mi Tao mot tap tin mi va tra ve mot kieu FileStream (c e cap phan sau)e tng tac vi tap tin c tao. Tao mot kieu StreamWrite ghi mot tap tin van ban mi. Xoa mot tap tin ket gan vi mot minh du FileInfo Lay th muc cua File Lay ng dan ay u tap tin Lay kch c cua tap tin hoac th muc Di mot tap tin ch nh en v tr mi Lay ten tap tin M mot tap tin co quyen u tien chia se va oc ghi khac nhau Tao mot FileStream ch oc Tao mot kieu StreamReader (c mo ta sau) oc t mot tap tin van ban hien co Tao mot kieu FileStream oc /ghi

e tai:Tm hieu VB.NET va ng dung object

GVHD:Nguyen Tan Tran Minh Khang

Dim file As FileInfo = New FileInfo("C:\Test1.txt") Dim s As FileStream = f.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, _ FileShare.None) s.Close()
file.Delete()

Phng thc Open nay can co 3 tham so : Tham so au (la kieu m): kieu FileMode Tham so th 2 : dung e xac nh cach oc / ghi cua luong c s co kieu la FileAccess tham so th 3 : Ch nh cach chia se tap tin hien hanh gia cac cach quan tri tap tin khac nhau. Co kieu la FileShare 5.4. Kieu FileStream Lp FileStream cung cap thc thi cac thanh vien Stream tru tng. Tc la FileStream cung cap kha nang m cac tap tin hien ang co cung nh tao tap tin mi. FileStream thng c tao bang kieu FileMode,FileAccess,FileShare 5.5. Kieu Streamwriter & StreamReader Streamwriter & StreamReader la nhng lp hu ch moi khi ban can oc hoac ghi d lieu goc ky t (v du : cac chuoi). Theo ngam nh ca hai kieu nay lam viec vi cac ky t Unicode.Tuy nhien, ban co the thay oi bang cach cung cap mot tham chieu oi tng System.Text.Encoding c cau hnh ung ang.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

97

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Va hnh sau ay co neu ra moi quan he gia moi kieu vi Object trong IO Object

TextReader

TextWriter

StreamReader StringReader

StreamWriter StringWriter

Hnh :Cac bo phan oc va bo phan ghi

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

98

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

GII THIEU WINDOWS FORMS


se tm hieu chi tiet cach xay dng mot ca so chnh (form). ong thi, ta cung tm hieu mot so lp lien quan en ca so, bao gom Application, MenuItem, ToolBar va StartusBar. Chng nay cung x ly cach nam bat va ap ng nhap lieu ngi dung ( tc quan ly cac s kien nh chuot, phm ) trong moi trng GUI. Qua o ta thay VB.NET la them nhieu nang lc hn VB co ien. 6.1. Hai khong gian ten GUI Khong gian .NET cung cap hai bo cong cu GUI(GUI toolkits): Windows.Forms va Web forms. Khong ten ten Windows.Forms cha mot so kieu cho phep ban xay dng cac ng dung e ban truyen thong [traditional desktop. Applications] cung nh cac tang trnh bay giau tnh nang khac [featre rich presentation layers] hoac he phan cap e dung trong mot ng dung x nghiep co phan phoi. Windows.Forms (giong nh VB 6.0 ) che dau cac Win32 API tho , cho phep ban tap trung vao chc nang cua ng dung , dung he thong kieu .NET quen thuoc. Mac khac, Web Forms(tm hieu chng sau) la mot bo cong cu GUI c dung trong khi phat trien ASP.NET. Phan ln cac kieu Web Forms eu nam trong khong gian ten System.Web.UI va System.Web.UI.WebControls. Dung cac kieu nay, ban co the xay dng cac trnh tien tieu oc lap trnh duyet(Browser independet front ends)da vao nhieu cong nghe chuan kha nhau nh : HTML , HTTP, Ngoai ra, Windows Forms va Web Forms cha mot kieu co ten giong nhau (v du : Button va checkBox ) vi cac thanh vien tng t (v du : BackColor va Text) chung khong the chia se mot thc thi chung va khong the x ly c nh nhau. 6.2. Khai quat ve Windows.Forms Windows.Forms la tap hp cac lp ,cau truc, giao dien , kieu iem danh. No cha mot so lng ln cac kieu ho tr trong tien trnh xay dng cac giao dien ngi dung (user interface) phong phu. 6.3. Tao mot Form Cach tao mot de nhat la ta s dung thiet ke cua Windows.Forms trong VB.NET. Cung giong nh VB 6.0, VisualStudio.NET cung cap mot so wizard tao mau khi au, va cac cong cu cau hnh (ToolBar) giup ta lam viec vi Windows Forms n gian. Mat khac ta cung co the xay dng mot ng dung Windows Forms SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 99

Chng 6

Chng nay se gii thieu ve khong gian ten System.Windows.Forms. Tai ay ta

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

viet hoan bang ma (dung Notepad chang han) va lu vi uoi *.vb.Sau o gi tap tin *.vb ket qua vao trnh bien dch VB.NET bang c /target:winexe. 6.3.1. Tao form vi VB.NET Chon File -> New -> Project. Mot hop thoai New Project xuat hien nh hnh sau:

Figure 1. The New Project dialog box

Chon Visual Basic Project ben khung ben trai hop thoai. Chon Windows Application ben khung ben trai cua hop thoai. anh ten vao trong TextBox Name . Chon ng dan cha tap Windows Application. Chon OK. Th VB.NET tao ra mot project cha mot form ben trong no va the hien no cho viec thiet ke (xem hnh sau)

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

100

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Hnh 2. The Windows Forms Designer

Ta co the xem code tao form trong Windows Forms, ta click phai chuot vao form designer chon View Code va the hien nh sau:
Public Class Form1 Inherits System.Windows.Forms.Form Windows Form Designer generated code End Class

No tao ra mot lp ten Form1 ke th t lp Form. Windows Forms Designer no cha mot oan code (mac nh sau ta New Project ) khi tao class Form1.Ben trc cua Windows Forms co dau + o la cai hay trong VB.NET nham lam cho viec viet code thuan tien , khong thay roi va khong thay nhieu code(dung cay the hien).Khi click vao dau + th bung rong va the hien nh hnh sau(t ong tao):
Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() call 'Add any initialization after the InitializeComponent()

End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

101

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() components = New System.ComponentModel.Container() Me.Text = "Form1" End Sub #End Region

PhngThc InitializeComponent() Lp Form1 c phat sinh t System.Windows.Forms.From. Phng thc InitializeCompont() c bao boc bi mot cap ch th #Region va #End Rigion. Khi mot khoi ma c bao boc bang cac ch th #Region, no co the c lc gon va c thay oi bang mot khoi chu giai (trong trng hp nay la, la Windows Forms Designer generated code). Phng thc InitializeCompont() c t ong cap nhat bi trnh thiet ke bieu mau e phan anh cac ca so ma ban thc hien vi Form va cac ieu khien cua no bang Visual Studio.NET IDE v du, hay xem ca so Properties trong hnh sau:

End Class

Hnh: Ca so Properties VB.NET IDE SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 102

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Neu dung ca so sa oi cac tnh chat Text va BackColor cua Form , ban thay InitializeComponent() a c sa oi cho phu hp :
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.BackColor = System.Drawing.SystemColors.Desktop Me.ClientSize = New System.Drawing.Size(292, 273) Me.Name = "Form1" Me.Text = "Form1" End Sub

Lp do Form phat sinh se goi InitializeComponent() ben trong hoat vi cau t ngam nh. Ta cung nen biet rang cach an toan nhat e cap nhat ma xuat hien ben trong phng phap initializeComponent() o la van dung ca so Properties cua Visual Studio.NET thay v phai trc tiep ieu tac ma ben trong phng thc. Neu bo sung vai ma h trong phng thc InitializeCompnent() co the lam te liet kha nang cua IDE hien th form vao thi gian thiet ke. Ngoai ra, cung nen biet rang vai tro cua InitializeComponent() o la su lieu cac chi tiet su oi ma trong thi gian thiet ket cua ban. Phng thc Dispose() iem ang quan tam trong oan code tren o la phng thc Dispose(). Phng thc thc nay c t ong goi khi Form cua ban sap huy, va no la mot ni an toan e huy moi tai nguyen c phan bo. Bay gi ta quay lai viec thiet ke mot v du Hello Windows Khi man hnh dialog Form designer ta tien hanh nh sau: ) Hieu chnh form lai , chon maximizeBox =false, MinimizeBox = false, text = Hello Windows. ) Tren thanh cong cu ToolBox chon Label keo tha vao form va chon thuoc tnh Label.text =Hello Windows va size = 26. ) Cung tren thanh cong cu TollBox chon Button keo tha vao form va at nhan cua button no lai(Text = OK).

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

103

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

) Double click vao button va anh code vao ) Nhan F5 hoac chon Debug -> Start Hien th dialog nh sau:
Me.Close( )// Dong cua so Me.Dispose( )// goi phuong thuc huy

Xem v du 6.1 6.3.2. Lam viec nhieu form trong mot Project vi VB.NET Project co nhieu form bao 1 form main va nhieu form phu V du 6.2

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

104

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Trong v du nay ta tao ra 3 form (MainForm, Age DialogBox va form Auxiliary ) trong o MainForm la form chnh. e goi cac form thanh vien trong form main ta phai khi tao no Tren form main co hai button e goi hai form thanh vien: oi vi Button Show Dialog Box ta phai khi tao cac thanh phan roi sau o mi goi phng thc LG.ShowDialog() va source nh sau:
Private Sub bttnAge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnAge.Click DLG.cmbDay.Text = "4" DLG.cmbMonth.Text = "November" DLG.cmbYear.Text = "1980" Dim DLG As New AgeDialog() Dim WithEvents FRM As New AuxiliaryForm()

Va dialog hien th (hnh)

DLG.ShowDialog() If DLG.DialogResult = DialogResult.OK Then MsgBox(DLG.cmbMonth.Text & " " & DLG.cmbDay.Text & ", " & DLG.cmbYear.Text) Else MsgBox("OK, we'll protect your vital personal data") End If End Sub

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

105

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

6.4.

Them mot s kien ieu khien vao Form(Event Handler) Trong lp control cung nh ngha mot so s kien co the c gom nhom theo logic thanh hai pham tru o la : Cac s kien chuot va cac s kien ban phm. Cac s kien cot loi cua kieu Control S Kien ConTrol Y ngha Lp Control nh ngha nhieu s kien c Click, Double Click, ng tac e ap ng lai nhap lieu chuot. MouseEnter, MouseLeave, MouseDown, MouseUp, MouseMove, MouseHover, MouseWheel. KeyPress, KeyUp, Lp Control cung nh ngha nhieu s kien KeyDown ap ng lai nhap lieu phm. 6.4.1. Lam viec vi cac s kien chuot: V du ban can chan mot s kien MouseUp, nut chuot nao nhan . Muc tieu o la hien th mot v tr (x,y) tai ni s kien MouseUp a xay ra. Khi muon ap ng cac s kien t trong mot ng dung WindowsForms, Ta co hai cach tiep can chung. ( Cach 1: Cach tiep can au tien (quen thuoc) o la : van dung c che s kien [event mechanis] VB.NET. Giong nh VB 6.0 VB.NET ho tr 2 hop liet ke tha c noi tai nh ca so ma. Khi khai bao mot oi tng bang t khoa WithEvent ban co the thay ten bien nay neu trong danh sach ben trai sau khi la chon tieu cu ma ban muon lam viec, danh sach tha ben phai cho phep ban chon cac s kien muon s dung no lam mot viec g o. Khi muon ap ng s kien tren Form chnh, ban s dung tiep can. Tuy nhien Form khong c neu theo ten danh sach tha oi tng (Object drop down list). Thay v the, ban can la chon (Base Class Events) xem hnh :

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

106

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi click vao MouseUp th VB.NET tao san mot ham nh sau:
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp Me.vtri.Text = e.X & "," & e.Y End Sub

Va khi chay:

Cung xem xet s kien MouseUp(hoac MouseDown) c gi. Neu muon xac nh chnh xac nut nao a c nhan, Ban can xem xet tnh chat Button cua MousewEventArgs. Gia tr cua nut c nhan c xac nh bi kieu iem danh MouseButtons v du:
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp Me.vtri.Text = e.X & "," & e.Y

Xac nh nut chuot nhan:

v du 6.3

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

107

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Nh vay khi nhap nut trai, ban thay hop thoai nh hnh sau:

If (e.Button = MouseButtons.Left) Then MessageBox.Show("Left click !") ElseIf (e.Button = MouseButtons.Right) Then MessageBox.Show("Right click") Else ' MouseButtons.Middle MessageBox.Show("Middle click") End If End Sub

Hnh: Dialog hien th s kien click chuot. ( Cach 2: Cach tiep can khac e ieu khien cac s kien chuot trong mot kieu phat sinh t control o la chay e ung phng phap c s, ma trong trng hp cua ban la OnMouseUp va OnMouseMove. Kieu control nh ngha mot so phng thc co the chay e[ overridable method ] c t ong goi khi s kien tng ng c tng tac. e chay e mot phng thc lp c s bang VS.NET IDE , ban la tuy y chon (overrides) t danh sach tha ben trai. Sau khi thc hien, danh sach ben phai hien th tat ca cac thanh vien Overridable ma ban co the thao tac va quan ly trong lp c phat sinh[derived class] xem hnh di ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

108

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Neu cap nhat form theo ky thuat nay, ban khong can ch nh mot trnh ieu khien va quan tr s kien tuy bien theo thu cong, va thay v the ban co the viet ma sau ay:
Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs) If (e.Button = MouseButtons.Left) Then MessageBox.Show("Left Click") Else If (e.Button = MouseButtons.Right) Then MessageBox.Show("Right Click") Else MessageBox.Show("Middle Click") End If Me.OnMouseUp(e) End Sub Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs) Vtri.Text = e.X & , & e.Y Me.OnMouseMoves(e) End Sub

Lu y cach cac ky danh(signatures) cua moi phng phap chap nhan mot tham so n le cua kieu MouseEventArg, thay v hai tham so tuan thu the uy quyen MouseEventHandler. Neu chay chng trnh mot lan na, ban se khong thay co ieu thay oi (la ieu tot nhat).Vay au la ky thuat ma ta phai dung khi muon ieu quan mot s kien cap form. Thong thng Ta ch can chay e mot phng phap OnXXX() neu co cong viec bo sung can thc hien trc khi phat ong s kien. Cach tiep can a dung (va la cach tiep can c Visual Studio.NET s dung theo nham nh ) o la kieu quan tr s kien trc tiep dung t khoa Handles a c thc hien trong v du chuot au tien. 6.4.2. Lam viec vi cac s kien ban phm Tien trnh x ly nhap lieu ban phm cung giong nh viec s ly chuot. Ma sau ay chot gi s kien KeyUp va hien th ten van ban cua ky t a c nhan. Tai ay, ban chot gi s kien nay bang ky thuat uy quyen [delegation] (co mot phng thc ten OnKeyUp() co the c chay e nh mot cach thay the) : V du 6.4

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

109

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi ta nhan phm A th co hnh sau:

Figure : Phm a c nhan hay cha. Nh a biet, kieu KeyEventArgs duy tr mot kieu iem danh [ennumeration] co ten KeyCode lu y lu gi ID cua phm nhan. Ngoai ra, kieu KeyEventArgs nh ngha cac tnh chat hu ch neu bang sau: Tnh chat Y ngha KeyEventArgs Alt Lay mot gia tr neu ro phm Alt a c nhan hay cha Control(Ctrl) Lay mot gia tr neu ro phm control a c nhan hay cha. Handled Tm hoac an nh mot gia tr neu ro s kien a c tac ong hay cha. KeyCode Tm ma ban phm cua mot s kien System.Windows.Forms.Control.KeyDown hoac System.Windows.Forms.Control.KeyUp Keydata Tm d lieu phm cua mot s kien System.Windows.Forms.Control.KeyDown hoac SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 110

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

System.Windows.Forms.Control.KeyUp Modifiers Neu ro cac phm chuyen nao ( Ctrl , Shift , hoac Alt) a c nhan Shift Tm mot gia tr neu ro phm shift a c nhan hay cha 6.5. Xay dng mot ng dung MDI (Multiple document interface) Cac ng dung MDI cho phep ngi dung co nhieu ca so m cung mot luc, khac vi ng dung SDI (single document interface)ch mot ca so bieu th mot t lieu [document] a cho cua ng dung trong mot thi gian. Thong qua v du VS.NET la mot ng dung MDI , va cung luc ban m nhieu t lieu t mot ng dung. Khi xay dng cac ng dung MDI bang Windows Forms, viec au tien cua ban la (tat nhien ) la tao mot application mi tinh. Form ban au cua ng thng thng la mot he thong lap lenh n [menuing system] cho phep ngi dung nap t lieu v du File/New/Open, cung nh sap xep cac ca so hien co trong mot ng dung ang m theo mot trat t nhat nh v du lien hoan [ cascade], xep lat doc [vertical tile], va xep lat ngang [horizontal tile] Ngoai ra, cac ng dung MDI con cho phep ban hp nhat cac lenh n . Khong gian ten Windows Forms cung nh ngha mot so tnh chat, phng phap, phng thc ,va s kien cho phep hp nhat cac lenh n theo lap trnh. Va con co mot he thong hp nhat ngam nhlam viec trong nhieu trng hp . 6.5.1. Xay dng Form Cha(MDI parent ) va form con (MDI children) MDI bao gom mot form chnh, ma chnh no khong phai the hien bat ky d lieu nao. Va co mot hay nhieu form con, no ch xuat hien ben trong form chnh va no dung e hien th trnh bay nhng tai lieu. Form chnh c goi la form cha (MDI parent), va nhng form con c goi la form con (MDI children) . Lp form co hai thuoc tnh ieu khien cac form o la : MDI parent , MDI children. Thuoc tnh IsMdiContainer (tra gia tr Boolean) xac nh co phai mot form c x ly la form MDI parent. at thuoc tnh MdiParent xac nh co phai mot form c x ly la form children hay khong. at thuoc tnh cua mot form the hien cua mot ng dung cua MDI parent tham chieu en mot MDI children. Thong qua v du sau: V du 6.5 MDI cc tieu
Imports System Imports System.Windows.Forms Public Module AppModule Public Sub Main() Application.Run(New MainForm()) End Sub End Module

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

111

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Public Class MainForm Inherits Form Public Sub New() ' Set the main window caption. Text = "My MDI Application" ' Set this to be an MDI parent form. IsMdiContainer = True ' Create a child form. Dim myChild As New DocumentForm("My Document", Me) myChild.Show() End Sub End Class Public Class DocumentForm Inherits Form Public Sub New(ByVal name As String, ByVal parent As Form) ' Set the document window caption. Text = Name ' Set this to be an MDI child form. MdiParent = Parent End Sub End Class

Khi ta thc thi chng trnh xem hnh sau:

Tao thc n ca so( Windows Menu) Khong gian ten System.Windows.Forms cung cap mot so kieu tao ieu kien thuan li cho viec xay dng cac Menu chnh (tc la cac Menu moc noi tai nh cua mot form), cung nh cac PopUp Menu (tc la cac menu Nhap phai). e bat au, ta xem mot Menu n gian tren cung (tomost menu ) cho ngi thoat bang cach vao Menu (File | Exit ) xem hnh sau:

6.6.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

112

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Lp au tien ta can lu y o la System.Windows.Forms.Menu, van hanh nh lp c s cho tat ca cac lp khac co lien quan en n (MainMenu, MenuItem, va ContextMenu). Lp Sytem.Windows.Forms.Menu la mot lp tru trng, va do o ban khong the tao mot v du trc tiep bang kieu nay. Thay v the ban tao cac v du bang mot hay nhieu trong so kieu c phai sinh. Lp Menu cung nh ngha mot so cac cach thao tac c ban. Chang han nh cung cap kha nang truy cap mot menu rieng le, hp nhat cac Menu Lu y, lp Menu nh ngha mot lp c long nghep (c bieu hien bang cu phap $ ) co ten la MenuItemConllection, c tha ke bi lp con MainMenu, MenuItem va ContextMenu c the hien nh hnh sau(He phan cap lenh n Windows.Forms), c truy cap bang tnh chat Menu.MennuItems . Menu Menu$MenuItemCollection

MainMenu

MenuItem

ContextMenu

Hnh :He phan cap lenh n Windows.Forms Lp c s Menu nh ngha mot so thanh vien nh sau: Thanh vien Menu Yngha Handle Tnh chat nay cung cap kha nang truy cap quan tr c s bieu th lenh n nay. IsParent Tnh chat nay ch nh Menu nay cha mot muc bat ky hay muc tren cung. MdiListItem Tnh chat nay tra ve MenuItem cha danh sach ca so con MDI. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 113

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Mot so tnh chat khac, tra ve mot kieu thuoc Menu.MenuCollection c long nghep, bieu th cac Menu com c s hu bi lp phat sinh t menu. GetMainMenu() Tra ve muc MainMenu cha lenh dn nay. MergeMenu() Hp nhat cac muc cua Menu khac vi Menu nay nh c ch nh bi cac tnh chat mergeOrder va mergeType cua chung. Dung e hp nhat lenh n cua mot thung cha Mdi vi lenh n cua con MDI ang hoat ong [active MDI child] cua no. CloneMenu() An nh Menu nay la mot ban sao ong nhat mot Menu khac. 6.7.1. Kieu Menu$MenuItemCollection Cac thanh vien quan trong nhat cua lp Menu o la tnh chat MenuItems; no tra ve mot kieu Menu$MenuItemCollection c long nghep(ky t $ bieu th mot kieu c long ghep ). No co hu ch khi muon thiet lap mot moi quan he logic gia cac kieu hu quan. Tai ay, kieu Menu$MenuItemCollection bieu th tat ca cac Menu con ma mot oi tng phai sinh t Menu s hu. V du , neu tao mot MainMenu e bieu th menu File tren cung. Ban bo sung MenuItems (v du : Open, Save ,Close, va Save As ) vao su tap [collection]. Menu$MenuItemCollection nh ngha cac cac thanh vien bo sung va g bo cac kieu MenuItem, co c so iem hien hanh cua cac MenuItem va truy cap mot thanh vien cu the trong su tap. Xem bang liet ke vai thanh vien cot loi. Thanh vien Y ngha Menu$MenuItemCollection Count Tra ve so lng cac MenuItem trong su tap. Add(),AddRange() Chen (hoac g bo) mot MenuItem mi vao su ,Remove() tap. Nen biet rang phng phap Add() a c qua tai nhieu lan e cho phep ban ch nh phm tat, cac the uy quyen , Addrange() hu ch cho no cho phep bo sung mot mang cac MenuItem trongmot lenh goi n le. Clear() Contains() SVTH:Vo Hoang Anh Tran Trung Hieu G bo cac muc ra khoi su tap Dung e xac nh xem mot MenuItem a cho MSSV:9800503 MSSV:9800552 114

MenuItems

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

co nam trong su tap hay khong,.

6.7.2. Them he thong menu vao trong Form(adding menus to a form)

Ban co the them (add) menu vao mot form de dang bang cach ta s dung Main menu control. Thng Menu them vao cung luc ta thiet ke form. Cach add mot menu vao 1 form trong cung luc thiet ke form theo cac bc nh sau: ) T File menu, chon New Project. ) Trong danh sach Visual Basic Projects , chon Windows Application template , va chon OK. ) Tren thanh ToolBox , chon Win Forms va double-click MainMenu control, mot menu no se t ong them vao form (the hien chuoi Type Here (xem hnh)) .

Hnh : Menu Designer ) Trong Menu Designer ban click vao Type Here chon no va anh ky t the hien cho Menu o v du anh ch &File xem hnh .

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

115

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Hnh : Menu File ) Tng t nh the ban tao nhng menu khac va nh the ban co the tao mot he thong menu hoan chnh. Xem hnh cua mot v du 6.6:

Hnh : v du n gian Menu. Chu y : e cho menu cang tien dung , hieu qua hn va noi bac VB.NET cung cap them mot so thuoc tnh sau : Thuoc tnh Dien giai Check Neu ro dau kiem tra co xuat hien ben canh van ban cua menu co hien len hay khong. DefaultItem Neu ro gia tr menu o la ngam nh hay khong. Enable Neu ro menu o co c kch hoat hay khong. Index An nh v tr cua menu trong trong menu cha. MergeOrder Tm va nh v tr tng oi cua menu khi menu cua no c hp nhat vi mot menu khac. MergeType Tm va nh gia tr va neu ro cach x ly cua menu nay khi menu cua no c hp nhat vi mot menu khac. OwnerDraw Tm va nh mot ga tr neu ro ma ban cung cap se mot menu hay Windows se ve menu khac. RadioCheck Tm va nh gia tr neu ro muc lenh n menu.Neu SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 116

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

c anh dau kiem. Co hien th mot dau nut radio thay v mot dau kiem hay khong. Shortcut nh phm tat (ShortCut key )ke hp voi mot menu. Show Shortcut nh van han cua lenh n. Access keys Tao nhng phm tat cua menu nh : Nhan phm Alt va nhan ky t gach di cua menu. Separator bars Dung e nhom cac lenh cung quan hen ben trong menu. Giup ta e doc chung. 6.7.3. Dung PopUp Menu vao trong Form ) Ngoai nhng menu tren ta con dung mot ky thuat khac o la Pop Up Menu (xem vi du sau:6.7)

6.7.4. Dung ContextMenu vao trong Form

No giong nh PopUp Menu la ta co the nh v tai cho ma ta can v du nh click chuot. Cach tien hanh: ) Ta dung tng t nh MainMenu tren ToolBox (xem hnh)

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

117

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

) Cac bc tiep tng t nh tao MainMenu. Lu y e cho ConText Menu hoat ong la ta chon thuoc tnh cua control v du : TextBox la ContextMenu= Ten cua ContextMenu ma ta tao no. Va v n gian ve ConTextMenu nh hnh sau (vn du 6.8):

Tm hieu ve thanh tnh trang(status bar) Thanh Status bar la mot thanh nam ngang (thng ben di mot form). Thanh status bar c dung e hien th thong tin nguyen ban v du nh: ngay ,thang hoac la mo ta cua mot menu item. Status bar cung the hien nhng phm nhan nh : Insert,Numlock, Bang thuoc tnh cua Status Bar control(chon loc) Thuoc tnh Mo ta AccesssibleDescription Mo ta nhng anh hng ti nhng vung client (bao lai) AccesssibleName Ten cua vung client bao lai SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 118

6.7.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

AllowDrop Anchor ContextMenu Cursor Enable Locked Font Panels

ShowPanels

Xac nh neu thanh trang thai se nhan keo keo va tha nhng ac ta. Neo cua status bar La nhng phm tat cua menu c the hien khi ngi dung click chuot phai len thanh status bar Cursor hien ra khi qua thanh(tren) status bar nh status bar nay co khang hoat ong hay khong Xac nh neu thanh status bar co the duy chuyen hoac thay oi kch thc. Xac nh phong ch ma thanh status bar dung e hien th. Tra ve kieu StatusBarPanelCollection c long ghep cha moi panel c duy tr bi StatusBar (giong nh menu) Xac nh gia tr neu ro cac khuong co c neu hay khong.

Them Toolbar vao form GUI cung cap mot cong cu na o la thanh Toolbar. Thanh cong cu nay cung cap mot bien phap thay the e kch hoat cho mot lenh n nao o. V du nh nhan nut Save, Mot so tnh chat cot loi cua Toolbar Tnh chat Mo ta ToolBar BorderStyle Loai vien xung quanh ieu khien nay, nh c ch nh bi bieu kieu iem danh BorderStyle Buttons Su tap cac nut thuoc ve thanh cong cu (v du ToolBar$ToolBarCollection) ButtonSize Xac nh kch c cua mot nut trong toolBar ImageSize Phng phap nay tra ve kch c cua cac anh trong ben trong danh sach anh cua ToolBar ShowToolTips Neu ro ToolBar co neu o gi nh [ToolTip] cho moi nut hay khong. ImageList Tra ve ieu khien imageList duy tr cac anh cho ToolBar nay Wrappable Dung cac thanh cong cu co the ong khung sang dong ke tiep khi ToolBar tr thanh qua hep e gop tat ca cac nut tren cung mot dong. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 119

6.8.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Khi mot form duy tr mot ToolBar, muc tieu o la tao vai oi tng ToolBarButton rieng re va bosung chung vao kieu ToolBar$ToolBarCollection. Moi nut co the cha van ban, cac anh, hoac ca hai. Cac thuoc tnh cua ToolBarButton Tnh chat Mo ta ToolBarButton DropDownMenu Cac ToolBarButton co the ch nh mot lenh n troi c neu moi khi nut tha [drop-down buuton] c an. Tnh chat nay cho phep ban ieu khien ung leng n c neu. Lu y ch c neu tnh chat Style c an nh la DropDownButton ImageIndex Tra ve ch muc cua anh ma ToolBarbutton nay ang dung. Ch muc en t ImageList cua ToolBar cha. Style Tra ve kieu dang cua nut ToolBar . ieu nay se hnh thanh kieu iem danh ToolbarButtonStyle Text Phu e xuat hien trong thanh ToolBar nay. ToolTpText Neu ToolBar cha co tnh chat ShowTooltips a bat, tnh chat nay mo ta van ban xuat hien cho nut nay. Visible Neu ro nut nay lo dien hay khong lo dien. V du ToolBar (xem v du Baitap/ToolBar)

e cho hnh anh vao trong Button ta phai tao ImagesList(c tao t ToolBox/ImageList)

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

120

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

LAP TRNH VI CAC WINDOWS FORMS CONTROL TRONG VB.NET Trong phan nay ta tm hieu ve :
Tm hieu tieu cu GUI c nh ngha trong System.Windows.Forms. Ngoai viec cung cap hang loat cac control trong Windows Forms ta con neu ra mot so van e khac nh : Thiet lap tab cho cac control , cau hnh cho cac cach ng x neo chet (docking) va neo (anchoring) cho ho cac kieu GUI. - Cach xay dng va ky thuat cua control ngi dung. - Xem xet mot at cu mi cua kiet truc .NET Windows forms : tnh tha ke Form. 7.1. He phan cap Windows Forms Trong khong gian ten System.Windows.Forms cha cac ieu khien va c xep theo mot he phan cap nh sau:
Control

Chng 7

Button Base Button CheckBox RadioButton DataGrid DatetimePick TextBox Base TextBox RickTextBox GroupBox SrollBar HSrollbar

Format Control ComboBox Label LableLink LiskBox CheckkedListBox ListView MDIClient MonthCalandar PictureBox ProcessBar Splitter StatusBar

ToolBar TrackBar TreeView SrollableControl

ContainerControl
Form control UserControl Panel

MultiplexPanel
TabPage UpDownBase

DomainUpDown

VSrollBar

NumericUpDown

TabBase

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 TabControl MSSV:9800552


TabStrip

121

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Bo sung cac control vao cac Form(bang cach viet code) Bat ke kieu Control nao chon at tren form, ta eu theo mot loat cac bc tng t (tat ca c t ong hoa trong VB.NET) nh sau : - Trc het tao mot so lng bien thanh vien bieu th qua cac muc GUI ma form duy tr. - Ke tiep, la ben trong cau t form (hoac trong phng phap initializecomponent()) ta cau hnh va hoat ong cua moi control nh dung cac tnh chat, phng phap, cac s kien a cung cap. - Cuoi cung (quan trong nhat) ,ta an control theo trang thai ban au cua no. Bo sung no vao bo su tap control cua Form (dung cac tnh chat control). Bo sung cac control vao cac Form(dung cac control co san tren thanh cong cu): Mac du ban co toan quyen viet ma Windows Forms. Nhng co cach de hn o la dung visual Studio.NET IDE lam nh sau: - Loi mot control ta dung len tren form th IDE ap ng bo sung mot bien thanh vien vao trong class Form. - Con ve viec quan ly cac s kien cho cac control trong GUI neu dung code th dung t khoa WithEvent(va chan cac s kien bang phng phap addHandler()). Con dung cong cu la ta dung quan ly s kien vao thi gian thiet ke nh hnh ben

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

122

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

7.2. Cac control trong WindowsForms: 7.2.1. TextBox control

Dung e nhap d lieu, va cho phep ngi dung cau hnh no di dang ho tr thanh cuon ... No thuoc lp c s TextBoxBase nen co mot so tnh chat cua TextBoxBase cung cap : Cac tnh chat cua TextBoxBase: Tnh chat y Ngha TextBoxBase AcceptsTab Neu ro thao tac nhan phm Tab trong mot TextBoxControl a dong co chuyen Tab vao chnh control hay khong, thay v di tieu iem en control ke tiep trong th t Tab AutoSize Xac nh kch c cua control co t ong ieu chnh khi font ch c gan hay khong . BackColor nh mau nen hoac mau mat tien cua control ForColor HideSelection Cho biet mot gia tr neu ro van ban c la chon trong TextBox co gi nguyen trang thai hay khong.khi mat forcus hay khong. MaxLength Chieu dai chuoi toi a cua textBox control Modiified nh gia tr neu ro textBox control a c sa oi bi ngi dung ke t khi control c tao hoac noi dung cua no thay oi lan chot. Mutiline Ch nh van ban nay co nhieu dong hay khong ReadOnly nh xem textBox co quen ch oc hay khong SelectedText Cha van ban c anh dau/chieu dai cua van ban SelectedLength c chon SelectionStart v tr khi au cua vung van ban chon WordWrap Neu ro mot TextBox control a dong co t ong ong khung cac t (WordWrap) theo au dong ke tiep hay khong TextBoxBase con nh mot so kieu nh trong clipboard nh copy(),clear(), Paste(),AppendText()... Ngoai cac tha ke tren vi lp TextBoxBase no con co mot so tnh nang khac nh: MSSV:9800503 MSSV:9800552

SVTH:Vo Hoang Anh Tran Trung Hieu

123

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

T/C TextBox Y ngha control AcceptsReturn nh ro thao tac nhan Enter trong mot TextBox Control a dong se tao mot dong van ban mi hay kch hoat mot button ngam nh trong Form. CharecterCasing nh co sa oi ch thng (case)cua cac ky t khi go chung hay khong PasswordChar nh la co phai dong nhap la mat hieu hay khong ScrollBars nh thanh cuoc xuat hien khi co a dong TextAlign Cach cang hang trong TextBox ta dung kieu nh danh HorizontalAlignment. V du: 7.1

7.2.2. RichTextBox control

Lp c s cua no la TextBoxBase nen no tha hng ay u cac tnh nang cua TextBoxBase cung nh cua TextBox ngoai ra no con co mot so tnh nang mi o la : RichTextBox control ho tr viec hien th va ieu tac van ban c nh dang cao. v du ban co the cau hnh nhieu la chon font ch trong mot cong cu n le, cac URl , van ban co dau au muc.... 7.2.3. Label control Hien th text (nhan) ma ngui dung can .No hau het giong nh VB co ien nhng no khong con thuoc tnh caption ma thay vao thuoc tnh text. Xem v du 7.1 7.2.4. Button control Cung cap phng thc nhap lieu cho ngi dung, thng ap ng mot so thao tac cua ngi dung nh click chuot hay nhan mot phm nao (enter) ... SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 124

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Hien th hnh anh tren Button(nen ,icon) va trat t sap xep chung... Lp c s no la ButtonBase nen co tha hng mot so tnh chat cua Lp c s o: Cac tnh nang cua lp ButtonBase T/C Button control Y ngha FlastStyle nh kieu dang cua Button. Co cac thanh vien nh sau : Flat (co ve phang ) , Popup (Dang phang cho en khi contro di ten no va tai iem o co 3 chieu) , Stander ( dang ba chieu giong nut nhat bnh thng), System( dang cua no xac nh bi he ieu hanh cua ngi dung). Image/ Anh xuat hien ben trong Button/Anh nen cua BackgroundImage Button ImageAlign nh danh anh nam ben nao (canh le) ImageIndex Lam viec chung vi nhau cho biet ch muc liet ke ImageList anh cua anh xuat hien tren button t list Image tng ng isDefault Cho biet Button ngam nh hay khong textAlign nh v tr text trong Button ta dung CenterAlignment(co cac gia tr : BottonCeNETr, ButtonLeft,ButtonRight,MiddleCeNETr...) Xem v du 7.1 7.2.5. RadioButton va GroopBox control Thong thng RadioButton thng c dung trong viec chon mot thuoc tnh trong nhieu thuoc tnh (RadioButtonGroup) v du : chon gii tnh, chon hay khong mot tnh chat g o(CheckBox )... 7.2.6. ListBox control Dung e la chon thuoc tnh nao trong danh sach ...
Cac tnh chat cua ListBox Control

Tnh Chat Y ngha ListBox control SelectedIndex Ch muc hien c la chon trong danh sach. bang 1 la khong co la chon trong danh sach nao. SelectedIndexs Tap cac ch muc cua cac muc c la chon trong hop SelectedItem Gia tr cua muc c chon ,neu khong co tra gia tr null SelectionMode ieu khien so lng muc c la chon Sorted Neu ro co sap xep hay khong SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 125

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

TopIndex SelectedItems v du7.2:

ch muc au tien xuat hien tra ve danh sach cac gia tr cua muc c chon ,neu khong co tra gia tr null

Lay ch muc va noi dung

7.2.7. ComboBox control

Giong nh LiskBox la cho phep ngi dung th hien la chon mot loat kha nang c nh ngha. ngoai ra ConboBox cho phep ngi dung co the chen cac muc bo sung . Cac tnh chat cua ComboBox T/C ComboBox Y ngha Control DroppedDown Neu ro phan tha cua combo c tha hay khong MaxDropDownItems Neu ro so lng toi a cac muc c tha (1->100) MaxLength Chieu dai toi a cua van ban ma ngi dung go. SelectedIndex Ch ro ch muc c chon trong Combo, neu khong la 1 SelectedItem neu oi tng c chon trong danh sach SelectedText Neu ro van ban c chon SelectedLength Chieu dai van ban c chon DropDownStyle Neu ro Combo.Gia tr cua kieu cua ConboBoxStyle Text Gia tr cua Combo hien hanh MSSV:9800503 MSSV:9800552 126

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung v du 7.2:

GVHD:Nguyen Tan Tran Minh Khang

7.2.8. TrackBar control

TrackBar control cho phep ngi dung la chon t mot mien gia tr, dung c che nhap giong nh thanh cuon. Theo nhieu mat, ve chc nang mat TrackBar cung giong nh mot thanh cuon truyen thong. Khi s dung no trong chng trnh ban can ap ng mot so viec : - Pham vi toi thieu, toi a. - Cac gia so thay oi toi a , toi thieu. - V tr bat au cua moc trt(slider). Cac tnh chat chu yeu cua TracBar Tnh chat cua TrackBar LargeChange Y Ngha So lng nhp (ticks) qua o TrackBar thay oi khi xay ra mot s kien c xem la mot thay oi ln (v du : nhap chuot trong khi con tro nam tren pham vi trt (sliding range) va dung phm PageUp hoac PageDown). Cau hnh cac bien ben phai(pha tren) ben phai(pha di) cua thanh TrackBar Hng cua TrackBar nay. Cac gia tr hp le la t kieu iem danh Orientaion (tc la ngang(Horizontal) hoac doc(Vertical)) So lng nhp(ticks) qua o TrackBar thay oi khi xay ra mot s kien c xem la mot thay oi nho (v du nh : dung cac phm mui ten). So lng nhp c ve trong khoang. MSSV:9800503 MSSV:9800552 127

Maximun Minnimun Orientation

SmallChange

TickFrequence SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Value V du 7.3:

nh v tr hien hanh cua TrackBar.

Phan lay gia th va hien th mau:


Private Sub UpdateColor() ' get the new color Dim c As Color = Color.FromArgb(tbred.Value, tbgreen.Value, tbblue.Value) ' change color in the picture colorBox.BackColor = c ' Set color lable lbht.Text = "Current color is :" & "(" & tbred.Value & ", " & tbgreen.Value & "," & tbblue.Value & ")" End Sub

7.2.9. MonthCalender Control

Cong cu nay cho phep ngi dung la chon ngay thang nam (hoac pham vi nhgay thang) dung mot giao dien ngi dung than thien cac tnh chat cot loi cua Monthcalender Tnh chat y ngha BoldedDates Mang cac oi tng DateTime xac nh ngay thang c neu dang in am CalendarDimentions So lng cac cot va cac hang cua cac thang xuat hien trong MonthCalendar control MaxDate Ngay thang toi a co the la(Ngam nh khong co ngay thang toi a). MaxSelectionCount So lng ngay toi a co the la (Ngam nh khong co ngay toi a). MinDate So lng ngay c phep toi thieu co the la.(Ngam MSSV:9800503 MSSV:9800552 128

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

nh khong co ngay toi thieu). MonthlyBoderDates mang cac oi tng DateTimes xac nh cac ngay hang thang in am. SelectionEnd Neu ro ngay cuoi cua pham vi cac ngay a la chon. SelectionRange Truy luc pham vi la chon cua mot MonthCalender control SelectionStart neu ro ngay bat au cua pham vi a la chon. ShowToday Hien th ngay hien hanh ShowTodayCircle Hie th khoanh tron ngay hien hanh. ShowWeekNumber Neu ro MonthCalender control co hien th so tuan (152) ve ben trai cua moi hang cac ngay hay khong. TodayDate Ngay thang c neu di dang today trong MonthCalender control. theo mac nh. Today la ngay thang hien hanh vao luc Monthcalender control c tao. TodayDataSet Neu ro tnh chat TodayDate co c ngi dung an nh tng minh hay khong. Neu TodayDateSet la True th TodayDate tra ve bat ky gia tr nao ma ngi dung a an nh cho no. V du 7.4 :

Khi ta muon lay ngay thang cua MonthCanlender control ta dung tnh chat SelectStart. Tnh chat nay kieu tra ve la DateTime ta dung vai tnh chat cua no e thao tac ma ta can. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 129

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Sau ay co mot vai tnh chat(thanh vien) cua DateTimes Thanh phan cua Y Ngha DateTime Date Thang/ngay/nam ma bien lu bang gia tr thi gian c an nh Day Trch ngay ,thang, nam cua kieu DatyeTime hien Month hanh Year DayOfWeek Cho biet ngay o la ngay th may trong tuan Trch cac chi tiet khac nhau lien quan en thi Hour gian. Minute Second Millisecond Now Cac thanh vien dung chung nay e hien th kieu Today DateTimes hien th ngay gi hien hanh(now hoac ngay (Today) Ticks em so nhp (tick count)100 nanogiay ToLongdateString() Chuyen oi cac gia tr hien hanh thanh cua kieu ToLongTimeString() DateTime thanh kieu chuoi(String). ToShortDateString() ToShortTimeString()

7.2.10.

Cac ieu khien con chay : DomainUpDown va NumericUpDown Windows Forms cung cap hai cong cu van hanh nh : cac ieu khien con chay (spin controls) hay con goi la cac ieu khien len xuong (up/down control) . Giong nh kieu ComboBox, ListBox la cung cho ta chon mot muc t mot pham vi cac la chon kha d. S khac biet o la khi dung mot ieu khien DomaiUpdown hoac NumericUpDown thong tin c chon bang cap nho cac mui ten len xuong.(Xem hnh v du) Hai cong cu ten phat sinh t mot lp c s trc tiep o la : UpDownBase va co mot so tnh chat quan trong la : Tnh chat cua Y Ngha UpDownBase InterceptArrowKeys Tm hoac an nh mot gia tr neu ro ngi dung co the dung cac phm mui ten len , xuong e la chon gia tr hay khong ReadOnly Tm hoac an nh mot gia tr neu ro van ban ch co the thay oi bang cach dung cac mui ten len xuong MSSV:9800503 MSSV:9800552 130

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Text Text Align Updown Align

ch khong phai bang cach go vao control e nh v mot chuoi a cho hay khong. Tm hoac an nh gia tr hien hanh cua van ban trong cotrol con chay Tm hoac an nh cach can thang hang cua van ban trong con chay . Tm hoac an nh cach can thang hang cua cac mui ten len xuong ten control con chay, dung tieu a cho la Left RightAlignment

ieu khien DomainUpDown bo sung mot so tnh chat sau : Tnh chat cua Y Ngha DomainUpDown Items Cho phep truyen truy cap loat cac kieu lu tr trong control SelectedIndex Tra ve v tr cua muc c chon SelectedItem Tra ve chnh muc la chon (khongphai ch muc cua no) Sort Sap xep cac chuoi theo th t abc hay khong Wrap ieu khien xem su tap cac muc tiep tuc en muc au hay cuoi neu ngui dung tiep tuc vut qua cuoi. Con oi vi kieu NumericUpDown co mot so tnh chat sau: Tnh chat cua Y Ngha NummericUpdown DecinalPlaces Dung e cau hnh cach xuat hien cua d lieu ThousandsSeparator so Hexadecimal Increment An nh tr so cua gia so trong control khi mui ten len xuong hoac nhap ti. Ngam nh no la 1 Minimum An nh cac gii han tren hoac xuong cua gia Maximum tr trong control Value Tra ve gia tr hien hanh trong control V du 7.5:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

131

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Va ham nhan gia tr va chuoi nh sau:


lbhienthi.Text = "Chui chn :" & DomainUpDown.Text & " V s chn : " & NumericUpDown.Value

7.2.11.

Lam viec vi cac ieu khien Panel Nh ta a biet, ta co the dung GroopBox e nhom cac control logic lai vi nhau (v du RadioButtons).Mot cong cu lien quan chat che vi GroopBox o la Panel control. Cac Panel cung dung e gom nhom cac control hu quan logc lai. Mot iem khac biet o la kieu Panel phat sinh t lp ScrollableControl do o no co the ho tr cac thanh cuon, trong khi mot GroopBox lai khong the. Mot iem khac biet tinh te o la mot Panel khong ho tr phu e t ong (Khac vi mot GroopBox). Mot Panel co the lam cho giao dien thiet ke t phc tap hn(chiem t cho hn neu ta an nh Panel tnh chat AutoScroll la True ). v du : Cai tien lai TrackBar (v du 7.6)

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

132

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

7.2.12.

Lam viec vi ToolTips Gan cac ToolTips cho cac control Chc nang ho tr cac o gi nh (tool tips) trong cac control trong windows form. Cong cu nay n gian la nhng ca so troi nho hien th mot thong iep hu ch khi contro di chuyen tren muc a cho . Cac tnh chat cot loi cua ToolTip Cac thanh vien Y ngha cua ToolTip Active Cau hnh xem o gi nh (tool Tip ) c kch hoat hay khong. AutomaticDelay Tm hoac an nh thi gian (tnh bang miligiay) troi qua truc khi tooltrip xuat hien AutoPopDelay Quang thi gian (tnh bang miligiay ) ma tooltip xuat hien khi con tro ng yen trong vung ToolTip . Gia tr ngam nh la 10 lan gia tr tnh chat AutomaticDelay. GetToolTip() Tra ve van ban o gi nh c gan vao 1 control cu the. InitialDelay Quang thi gian (tnh bang miligiay ) ma con tro phai gi nguyen bat ong trong vung toolTip trc khi van ban ToolTip xuat hien . Ngam nh la bang tnh chat Automaticdelay. SetToolTip() Ket hp mot o gi nh vi mot control cu the. ReshowDelay Chieu dai thi gian( tnh bang giay ) ma no e cac v du ToolTip tiep theo xuat hien khi con tro di t mot vung nay sang mot vung khac. Ngam nh la 1/5 gia tr tnh chat AutomoticDelay.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

133

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

7.2.13.

Anchoring (bo neo) Khi con tau bo neo la no o o. Du con nc chay the nao, con tau van nam yen mot cho v no a c cot vao cai neo. Control trong .NET co property Anchor e ta ch nh no c buoc vao goc nao cua form: Left, Right, Bottom hay Top. Trong luc thiet ke, sau khi select cai control (th du Button1), ta vao ca so Properties va click hnh tam giac nho ben phai property Anchor. Mot hnh vuong vi bon thanh rap lai giong hnh ch thap mau trang se hien ra. Moi thanh tng trng cho mot goc ma ta co the ch nh e cot control vao form. Khi ta click mot thanh, no se oi mau thanh xam am, va mot ch tng ng vi thanh ay sau nay se hien th trong textbox area cua combobox Anchor. Th du 7.7 ta click vao thanh di va hai thanh hai ben, ta se co Bottom, Left, Right nh trong hnh di ay:

Khi Button1 co Anchor la Bottom, Right th moi khi goc phai di cua form di chuyen v resize, Button1 c chay theo goc ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

134

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Neu Button1 co Anchor la Left, Right, Bottom th khi form resizes cho ln ra, Button1 c gi khoang cach t no en ba canh Left, Right, Bottom cua form khong oi. Do o no phai n rong ra nh trong hnh di ay:

Neu Button1 co Anchor la Top,Bottom,Left, Right th khi form resizes, Button1 c gi khoang cach t no en bon canh Left, Right, Top, Bottom cua form khong oi. Do o no phai n rong hay thu nho ca chieu cao lan chieu rong nh trong hnh di ay:

V property Anchor co hieu lc lap tc ngay trong luc ta thiet ke, nen neu ban resize form trong luc thiet ke, cac control co Anchor property set cung SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 135

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

resize va di chuyen theo. Co the ban khong muon chuyen o xay ra, nen tot nhat la set property Anchor cua cac control sau khi thiet ke form xong het roi. 7.2.14. Docking (gan vao) Khi ta Dock mot control vao mot canh cua form co ngha la ta dan dnh no vao canh o. Ap dung ta thng thay nhat cua Docking la ToolBar va StatusBar. ToolBar th dock vao pha tren cua form, com StatusBar th dock vao pha di cua mot form. Chung dan ra chiem t trai qua phai cua form, user khong the ch nh chieu rong cua chung. Khi form c resized th ToolBar va StatusBar cung dan ra hay co vao theo chieu rong cua form. Property Dock cua control trong .NET cung giong giong nh property Align cua control trong VB6 StatusBar. Ta ch co the dan mot control vao mot trong bon canh cua form, ch khong co chuyen bat ca hai, ba tay nh trng hp Anchor co the neo vao Left, Right, Bottom cung mot luc. Tuy nhien, property Dock co tr so Fill e noi control chiem het ben trong phan con lai cua container cua no. Trong luc thiet ke, sau khi select cai control (th du Label1), ta vao ca so Properties va click hnh tam giac nho ben phai property Dock. Mot hnh vuong nhieu thanh mau xam se hien ra. Moi thanh tng trng cho mot canh ma ta co the ch nh e dan control vao form (Top, Bottom, Left hay Right), cai hnh vuong gia tng trng cho tr so Fill, va thanh di chot co ch None cho phep ta xoa khong chon tr so Dock nao ca.. Khi ta click mot thanh, tr so Docking tng ng se hien th trong textbox area cua combobox Dock.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

136

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Gia s ta set Property TextAlign cua Label la MiddleCenter bang cach chon cai thanh xam nam ngay gia trong so 9 thanh tng trng cho cac v tr cua Text co the nam trong Label1 nh trong hnh di ay:

Khi chay chng trnh va resize form cho ln ra, ta se thay Label1 dan ra hai ben, nhng khong he tang be cao, va Text cua Label1 luon luon nam gia.

Neu ban tm cach dock nhieu controls vao cung mot canh cua form th VB.NET phai quyet nh control nao nam sat canh ay nhat. Qui c ve th t la ngc lai vi th t trong z-order. Tc la trong z-order, control nao nam di nhat th lai c dock trc nhat vao canh cua form. Do o, neu ban dock SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

137

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

hai controls vao mot canh, va muon cai control nam xa canh c dock trc nhat (tc la sat canh nhat) th right click control ay va chon Send To Back. Neu ban muon cha mot khoang trong gia control va canh cua container th set Property DockPadding cua container. T trc en gi ta dung form e ai dien container cha controls. That ra container cung co the la mot Panel. Ban co the set Property DockPadding cua cac canh cua container khac nhau bang cach click dau + ben trai ch DockPadding trong ca so Properties e m ra cac chi tiet nh trong hnh di ay:

Ban co the set tat ca Property DockPadding cung mot tr so bang cach dung All setting. ( xem v du 7.8) 7.2.15. Control Splitter Bay gi ban a hieu ro cac ac tnh, s khac biet va cach dung hai properties Anchor va Dock cua control, sau ay ta se ap dung kien thc ay vao viec thiet ke dung Splitter trong mot form. Neu con mi vi Splitter ban se de b bc mnh khi dung no. Do o, ban hay th lam theo cac bc sau ay: 1. Tao mot Application mi, at mot Panel len pha trai cua form chnh e no chem ben trai cua form bang cach set property Dock cua no thanh Left. Ta goi Panel ay la Panel1. 2. at mot Splitter len form (nh tranh at no len Panel1 v Panel cung la mot loai container nen co the cha Splitter c). Splitter se t ong SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

138

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

dock Left vao form tc la nam ben phai Panel1. Chon property BoderStyle cua Splitter1 lam FixedSingle cho de thay. 3. at mot button len Panel1 va set property Anchor cua no thanh Top, Left, Right. Bay gi form se giong nh di ay:

4. Ke o, at mot Panel len ben phai cua form, goi la Panel2, va set property Dock no thanh Fill. Co ngha la ta muon Panel2 chiem het phan con lai ben phai cua form. 5. Them vao trong Panel2 nay mot Button, goi la Button2, va set property Anchor cua no thanh Top, Left, Right. Khi chay chng trnh, moi lan ban nam Splitter keo qua phai th Button1 dan ra va Button2 co lai:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

139

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ngc lai, neu ban nam Splitter keo qua trai th Button1 co ra va Button2 dan lai:

Trong th du nay ta e yen chieu rong cua Splitter, nhng bnh thng ta lam cho no hep hn. Neu Splitter hep th kho thay, do o ban co the cho no mot mau o rc trong luc thiet ke e de thay. Khi thiet ke xong het roi, ban oi no lai thanh mot mau du hn. Neu bay gi ban muon chia Panel2 thanh hai phan, ngan cach bi mot Horizontal Splitter th sao? Ta c xem Panel2 nh mot form vay, tc la ca hai

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

140

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

eu la containers, loai control co the ng nhieu controls, va lap lai cac bc sau: 1. at mot Panel len pha tren cua Panel2, goi no la Panel3 va set property Dock cua no thanh Top. 2. at mot Splitter len Panel2 (nh tranh at no len Panel3), goi no la Splitter2 va set property Dock cua no cung thanh Top. Resize Splitter2 cho no dep lai va oi property Backcolor thanh ra ControlDark cho de thay. 3. at mot Panel len pha di cua Panel2, goi no la Panel4 va di Button2 t Panel2 qua Panel4 bang cach Cut and Paste. 4. Set property Dock cua Panel4 thanh Fill. Bay gi hay chay chng trnh va nam keo Splitter2 len xuong.

Tom lai, muon dung control Splitter trong mot form hay panel ta at mot PanelX vi Docking Left hay Top len trc, ke o at mot Splitter vi cung loai Docking vi PanelX, roi at PanelY vi Docking Fill.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

141

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

ADO.NET
8.1.
mi, cong ty nay thng yeu cau ban phai hoc them mot so cong nghe khac thay oi gan nh hoan toan so vi cong nghe cu. ADO.NET (ten cha chnh thc la ADO+) phai chang la mot mo hnh truy lieu mi hay ch la m rong mo hnh ADO trc ay?. ADO va ADO.NET co the giong va cung co the khac nhau rat xa tuy theo cach nhnh cua ban. ADO.NET van gi ac tnh de dung cua ADO nhng kien truc cua ADO.NET thay oi rat nhieu (v du nh hng phuc vu d lieu cho cac ng Web). iem noi bat cua ADO.NET la c che rang buoc d lieu (data binding)cho phep viet ma ng dung n gian, tach ri noi dung tai lieu can the hien va ma lenh cua chng trnh. C che rang buoc d lieu nay khong nhng lam viec tren cac he c s d lieu ma con lam viec tren cac oi tng COM/COM+. Khong ch tren cac thanh phan oi tng OLE DB ma con co the ap dung tren moi oi tng tham ch nh XML. 8.1.1. S khac nhau gia ADO.NET va ADO co ien: * ADO.NET no la khong n gian la mot phien ban mi nhat va ln nhat cua ADO co ien.Tuy nhien no co mot s oi xng gia hai he thong (v du ca hai eu co oi tng Connection, Command ) Song ben canh o co mot so kieu quen thuoc b bo i ( Record set,..). Hn na con co mot so kieu ADO.NET khong tng ng trc tiep vi lp ADO co ien. * Cong nghe ADO.NET la cong nghe truy cap c s d lieu mi cu the hng vao viec tao thuan li cho qua trnh phat trien he thong ri bang nen tang .NET. Cac ng dung (ng dung web) ang c nhanh chong tr thanh quy mau (normol). * Khac vi ADO co ien , chu yeu thiet ke cho cac he thong khach/phuc vu phoi hp chat che. ADO.NET m rong ang ke khai niem d lieu ri vi mot vat cha mi DataSet(Kieu nay bieu th mot ban sao cuc bo cua bat ky so lng bang ha quan nao). * Mot ieu khac ln gia ADO co ien va ADO.NET o la ADO.NET co c che ho tr ay u cho phan bieu th d lieu XML(v XML c chuye tai gia cac thanh phan bang thong HTML chuan). Do o ADO.NET khong b gii han bi cac han che cua bc tng la. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 142

Chng 8

Moi khi Microsoft tung ra mot phien ban cua he ieu hanh

ADO.NET la g ?

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

ADO co ien van dung giao thc gom chuyen COM e di d lieu gia cac tang.No ch thch hp cho mot so tnh huong song ky thuat at ra mot so gii han( Cu the la bc tng la). * iem khac c ban nhat la ADO co ien va ADO.NET o la : ADO.NET la mot th vien co quan ly. Cac kieu ADO.NET se dung giao thc quan ly CLR(Common Language Runtime)tuan thu cung mo hnh lap trnh va lam viec vi nhieu ngon ng. * Ho tr s tien hoa internet, ADO.NET s dung d lieu ri, cuc bo va t xa 8.1.2. Hoat ong toan canh cua ADO.NET (Xem qua cac v du trong chng 8) Khi muon s dung ADO.NET ban phai khai bao s dung mot so khong gian ten (th vien -Namepace)nh sau: o Khi s dung ADO.NET e truy xuat d lieu ta phai import mot so lp sau : Imports System.Data o oi vi SQL server ta imports them Imports System.Data.SqlClient con neu s dung ASP.NET ta <% Import Namepace = System.Data.SQL %> o oi vi viec truy cap moi d lieu (SQL server ,Microsoft acess, Oracle , ) ta import them(theo kieu OLE DB) : Imports System.Data.OleDb con neu s dung ASP.NET ta <% Import Namepace = System.Data.ADO %> o Neu s dung oi tng s ly d lieu XML trong ASP.NET ta dung: <% Import Namepace = System.Data.XML %> o Neu s dung cac kieu d lieu trong ASP.NET ta dung: <% Import Namepace = System.Data.SQLTypes %> Tai sao lai s dung hai loai oi tng truy xuat d lieu la System.Data.ADO (System.Data.OLEDB) va System.Data.SQL ?. Ca hai th vien nay eu cho phep truy xuat d lieu cung cach. Tuy nhien, System.Data.ADO c dung cho muc ch tong quat cho moi loai c s d lieu. Microsoft cung cap cho ban th vien System.Data.SQL la mot cach toi u cua th vien System.Data.ADO. System.Data.SQL cho phep ban truy xuat d lieu trc tiep vao c s d lieu SQL cua chnh Microsoft ma khong can qua lp OLE DB trung gian cua mo hnh ADO.NET * SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 143

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ta dung cac oi tng SqlConnection, SqlCommand, SqlDataAdapter, and SqlDataReader .Trong o : + SqlConnection e ket noi vi SQL Server + SqlCommand la nhng cau query hoac nhng lenh ma c thc thi tai c s d lieu. + SqlDataAdapter dung e ien vao tap d lieu SQL (SqlDataSet)t mot d lieu nguon. + SqlDataReader dung e oc d lieu . V du 8.1, 8.2, 8.3: Dim strConnection As String = _ data source=(local);initial catalog=Northwind;persist security info=False;user id=admin;password = admin;packet size=4096 Dim cn As SqlConnection = New SqlConnection(strConnection) cn.Open( ) Trong o : Data Source :Ten server can ket noi, Data Source=localhost (Trng hp server la may cuc bo ). Initial Catalog=Northwind : Ten c s d lieu Persist security info : quyen ang nhap vao server. UserId : Tai khoan tren Server Password : Password cua tai khoan Packet Size : Kch thc cua mot packet khi ket noi en server hien thi Khi ket thuc viec truy cap d lieu ta goi phng thc close() cn.Close( ) Ket noi vi Microsoft Access Ta dung lp OleDbConnection ( nam trong System.Data.OleDb.) e ket noi V du 8.3: Dim strConnection As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb" Dim cn As OleDbConnection = New OleDbConnection(strConnection) cn.Open( ) Ket noi vi Oracle SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 144

8.1.3. Phng thc ket noi d lieu cua ADO.NET ket noi vi SQL Server

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ta dung lp OleDbConnection ( nam trong System.Data.OleDb.) e ket noi V du : Dim strConnection As String = _ "Provider=MSDAORA.1;User ID=MyID;Password=MyPassword;" _ & "Data Source=MyDatabaseService.MyDomain.com" Dim cn As OleDbConnection = New OleDbConnection(strConnection) cn.Open( ) 8.2. Mo hnh hoat ong cua ADO.NET ADO.NET la mot mo hnh truy xuat d lieu mi. Cac oi tng ma ADO.NET cung cap cung co mot so rat giong vi cac oi tng ADO co ien. Nhng hau het chung thay oi va them mot so tnh nang mi toi u. Di mo hnh ADO.NET , DataSet c truyen thong qua mot trnh cung cap co quan (manager), la mot bo su tap cac lp thc thi mot loat giao dien loi c nh ngha trong Namepace System. Data cu the la IDbAdapter, IDbCommand, IDbDataReader

He khach (Client) D lieu c truyen gia cac tang di dang XML

DataSet(ri) Trong bo nh

IDbDataAdapt

IDbComman

IDbDataReade Trnh cung cap co quan thc thi giao dien nay e cung cap kha nang truy cap mot kho lu tr d lieu cu the

IDbConnecttio

Hnh : cac he khach tng tac vi trnh cung cap co quan. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 145

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

8.3.

Kien truc cua ADO.NET Kien truc cua ADO.NET c the hien qua bang sau : Namepace Mo ta System.Data La Namespace cot loi cua ADO.NET. No nh ngha cac kieu bieu th cac bang, cac hang , cac cot cac han che, va cac DataSet. Namespace nay khong nh nghia cac kieu e noi vi mot nguon d lieu[DataSource]. Thay v no nh ngha cac kieu bieu th nh ngha cac kieu bieu th chnh d lieu. System.Data.Common Namespace nay cha cac kieu c chia se gia cac trnh cung cap co quan. Nhieu kieu nay van dung van hanh nh nhng lp c s oi vi cac kieu cu the c nh ngha bi cac trnh cung cap co quan OleDB va SqlClient. System.Data.OleDB Namespace nay nh ngha cac kieu cho phep ban noi vi mot nguon d lieu tuan thu OLE DB, e trnh cac truy van SQL , va ien cac DataSet. Cac kieu string khong gian ten nay co mot dang ve va cam nhan tng t(nhng khong ong nhat) nh cua ADO co ien. System.Data.SqlClient Namespace nay nh ngha cac kieu tao thanh trnh cung cap co quan SQL. Dung cac kieu nay, Ban co the tiep xuc trc tiep vi Microsoft SQL Server va tranh cap gian tiep [indirection] khi dung kieu OleDB. System.Data.SqlTypes Namespacce nay bieu th cac kieu d lieu bam sinh c dung trong Microsoft SQL Server . Tuy ban luon co toan quyen dung cac kieu d lieu CLR tng ng, song cac SqlType c toi u hoa e lam viec vi SQl Server. System.dat.ODBC Namespace lam viec vi tat ca cac driver ODBC , va muon dung th ta phai download t Microsoft. Bang : Cot loi cua Namepace ADO.NET Tat ca Namespace ADO.NET nay nam trong mot tap hp n le co ten la System.Data.dll 8.4. Cac kieu cua khong gian (Namespace) System.Data Cac kieu cua Namespace System.Data c the hien qua bang sau: SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 146

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cac kieu System.Data DataColumnCollectio n DataColumn ContraintCollection

Y ngha DataColumCollection c dung e bieu th tat ca cac cot ma mot DataTable a cho s dung. DataColumn bieu th mot cot cu the trong mot DataTable ContraintCollection bieu th tat ca cac han che (cac han che khoa la[foreign key contrains] , cac han che duy nhat) c gan cho mot DataTable a cho. Constraint bieu th mot trnh boc OO [OO wrapper] quanh mot han che n le c gan cho mot hoac nhieu DataColumn Cac kieu nay bieu th mot su tap cac hang cho mot DataTable (DataRowCollection) va mot hang d lieu cu the trong mot DataTable (DataTableCollection) DataRowView cho phep ban tao c mot kieu xem nh san t mot hang hien co. DataView bieu th mot kieu xem a tuy bien cua mot DataTable co the c dung e sap xep, loc, tm kiem va hieu chnh, va ieu hng. Bieu th mot cache d lieu trong bo nh, co the bao gom nhieu DataTable hu quan. ForneignKey Constraint bieu th mot han che hanh ong c ap at tren mot loat cac cot trong mot quan he c s d lieu la Khoa chnh va khoa la Kieu UniqueConstraint bieu t mot han che tren mot loat cac cot o tat ca cac gia tr eu phai la duy nhat. Su tap nay bieu th tat ca cac moi quan he (tc la kieu DataRelation) gia cac bang trong mot DataSet.

Constraint

DataRowCollection DataRow DataRowView DataView

DataSet ForneignKey Constraint UniqueConstraint

DataRelationCollecti on DataRelation DataTableCollection DataTableCollection bieu th tat ca cac bang (tc la DataTable cac kieu DataTable) cho mot DataSet cu the. Sau ay chung ta tm hieu cu the tng kieu cua system.Data 8.4.1. Kieu DataSet 8.4.1.1Vai tro cua DataSet SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 147

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Hau het cac truy cap c s d lieu ma ADO.NET cung cap ch tra ve mot DataSet a ien, ch khong phai la mot DataTable(tm hieu k phan sau) rieng le. Noi n gian, mot DataSet la mot phan bieu th trong bo nh cua bat ky so lng bang nao (co the n gian la mo DataTable n le) cung nh bat ky moi quan he (tuy chon) nao gia cac bang nay, ,e hieu ro ta xem mo hnh oi tng sau:
DataSet

Relation DataRelation Table Collection DataTable DataRowCollection DataRow DataColumnCollection

DataColumn
ConstraintCollection Constraint PrimaryKey DataColumn DefaultView ChildRelations DataRelation ParentRelations DataRelation

DefaultView

Hnh : Mo hnh oi tng DataSet SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 148

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

DataSet cho phep truy cap DataTableCollection cha cac dataTable rieng le. V du ve ien d lieu vao DataSet:
Dim strConnection As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & "..\thuvien.mdb" cn = New OleDbConnection(strConnection) cn.Open() ' Set up a data set command object. Dim strSelect As String = "SELECT * FROM docgia" dscmd = New OleDbDataAdapter(strSelect, cn) ' Load a data set. ds = New DataSet() dscmd.Fill(ds, "dsdocgia") ' Close the connection. cn.Close()

* e ien d lieu vao ta phai ket noi vao cs d lieu -> thc hien ket noi nh OleDbDataApdapter(se tm hieu sau) -> ien vao DataSet. 8.4.1.2 Cac tnh chat cua DataSet Cac tnh chat cua DataSet cung cap thng tap trung vao viec cung cap kha nang truy cap cac su tap noi bo, tao cac phan bieu th d lieu XML va cung cap thong tin ve chi tiet loi c the hien qua bang sau: Tnh chat DataSet yngha CaseSensitive Neu ro cac t so sanh chuoi trong trong cac oi tng DataTable co phan biet ch hoa ch thng hay khong DataSetName nh ten cua DataSet nay. DefaultViewManager Thiet lap mot kieu xem d lieu tuy bien trong DataSet. EnforceConstraints Tm hoac an nh mot gia tr neu ro co theo cac quy tac han che [Constraint rule]khi gang thc hien khi cap nhat hay khong. HasErrors Lay mot gia tr neu ro co cac loi trong moi hang trong moi bang cua DataSet nay hay khong. Relations Lay su tap co quan he [collection of Relation] noi ket cac bang va cho phep ieu hng t cac bang cha en cac bang con. Tables Cung cap kha nang truy cap su tap cac bang ma SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 149

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

DataSet duy tr. 8.4.1.3 Cac phng thc cua DataSet Ngoai cac tnh chat tren DataSet con co mot so phng thc nh sau: Phng thc cua Y ngha DataSet AcceptChanges() ong y tat ca cac thay oi a thc hien oi vi DataSet nay ke t khi no c nap hoac AcceptChanges() c goi lan chot. Clear() xoa het d lieu DataSet bang cach g bo moi hang trong moi bang. Clone() nhai [clones] cau truc cua DataSet,bao gom tat ca DataTable cung nh tat ca cac quan he va moi han che. Copy() Chep ca cau truc d lieu cua DataSet nay. GetChanges() Tra ve mot ban sao DataSet cha tat ca cac thay oi a thc hien oi vi no ke t khi nap lan chot, hoac ke t khi AcceptChanges() c goi. GetChildRelation() Lay su tap cac quan he con [childRelation ] thuoc ve mot bang a ch nh. GetParentRelation() Lay su tap cac quan he cha [ParentRelation ] thuoc ve mot bang a ch nh. HasChanges() c qua tai, lay mot gia tr neu ro DataSet a thay oi hay cha , ke ca cac hang mi , a xoa, hoac a sa oi. Merge() c qua tai. Hp nhat DataSet nay vi mot DataSet ch nh. ReadXml() cho phep ban oc d lieu XML t mot luong hp ReadXmlSchema() le (t tap tin ,bo nh, hoac goc mang) ra DataSet RejectChanges() ao hoi tat ca moi thay oi a thc hen oi vi DataSet nay ke t khi no c tao hoac lan chot DataSetAcceptChanges c goi. WriteXml() Cho phep ban ghi cac noi dung cua mot DataSet WriteXmlSchema() ra mot luong hp le.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

150

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

8.4.2. DataTable 8.4.2.1. Vai tro cua DataTable

DataTable la mot phan bieu th trong bo nh cua mot khoi d lieu thao dang tieu bieu. Tuy nhien ta co the soan mot table theo lap trnh, song thong thng ta co c mot table t DataSet va cac kieu nh ngha trong cac khong gian lam viec nh System.Data.OleDB hoac System.data.SqlClient. 8.4.2.2. Tnh chat cua DataTable Cac tnh chat cua DataTable c the hien thong qua bang sau: Tnh chat cua DataTable CaseSensitive Y ngha

Neu ro cho phep so sanh chuoi trong bang co phan biet ch hoa hay ch thng hay khong . Default la false. ChildRelations Tra ve su tap cac quan he con [DataRelationCollection] cua DataTable nay neu co. Columns Tra ve su tap cac cot thuoc ve bang nay. Constraints Lay su tap cac hang che ma bang duy tr [ConstraintCollection] DataSet Lay DataSet cha bang nay (neu co) DefaultView Lay mot kieu xem a tuy bien cua bang , co the gop mot kieu a loc , hoac mot v tr con tro. MinimunCapacity Xac nh so lng hang ban au cua bang nay.(default la 25) ParentRelations Lay su tap cac quan he cha cua DataTable nay. PrimaryKey Xac nh mot mang cac cot van hanh nh nhng khoa chnh cho bang d lieu[data table] Rows Tra ve bo su tap cac hang thuoc ve bang nay. TableName An nh ten bang. cung tnh chat nay cung co the c ch nh lam tham so cau t. Cac thanh phan chnh cua DataTable c the hien s o sau:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

151

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

DataTable DataRowCollection DataRow DataColumnCollection DataColumn ConstraintCollection Constraint PrimaryKey

Xay dng va thao tac DataTable e xay dng ta lam cac bc sau ; o Khi tao Table o Khoi tao cac Columns(tm hieu sau) o Khi tao cac Rows(tm hieu sau) xem v du Sau: Ta tao Table Car (ID,Make,Color) vi ID la khoa chnh va gia tr t ong tang bac la 10 va gia tr khi au la 1000.
'v du tao Table bang lap trnh ' Create a new DtaTable Dim tableCars As DataTable = New DataTable("Car") ' DataColumn var Dim Column As DataColumn ' Create ID column and add table Column = New DataColumn() Column.DataType = Type.GetType("system.Int32") Column.ColumnName = "ID" Column.ReadOnly = True Column.AllowDBNull = False Column.Unique = False ' Set the auto increment behavior Column.AutoIncrement = True Column.AutoIncrementSeed = 1000 Column.AutoIncrementStep = 10 tableCars.Columns.Add(Column) ' Create make Make column Column = New DataColumn() Column.DataType = Type.GetType("system.String") Column.ColumnName = "Make" tableCars.Columns.Add(Column) ' Create make color column Column = New DataColumn() Column.DataType = Type.GetType("system.String")

8.4.2.3.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

152

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Column.ColumnName = "Color" tableCars.Columns.Add(Column) ' Make primary key in the Table Dim PK(0) As DataColumn PK(0) = tableCars.Columns("ID") tableCars.PrimaryKey = PK ' insert data into table Dim Row As DataRow Row = tableCars.NewRow Row("Make") = "Jeep" Row("color") = "White" tableCars.Rows.Add(Row)

Xoa mot hang(row) trong table ta dung lenh

vi 1000 la gia tr ID cua cot o 8.4.3. DataColumn Kieu DataColumn bieu th cho mot cot n le trong DataTable. Noi chung tap hp cac kieu DataColumn c ket gan vi mot DataTable. Cac tnh chat loi cua DataColumn nh sau: Tnh chat Y ngha DataColumn AllowDbNull Ch nh cot co gia tr null hay khong. gia tr default la true AutoInscrement An nh t auto so cua mot cot a cho.No co AutoInscrementSeed hu ch nham bao am cac gia tr duy nhat AutoInscrementStep trong mot cot a cho (v du nh khoa chnh) theo default khong ho tr gia tang t ong. Gia tang t mc nao, bac tang la bao nhieu. Caption An nh ten the hien cua cot nay( v du dung the hien trong DataGrid cho ngi dung xem) ColumnMapping Tnh chat nay xac nh cac bieu th mot DataColumn khi mot DataSet c lu di dang mot t lieu Xml, dung phng phap DataSet.WriteXml() ColumnName Ten cua cot trong su tap Columns trong DataTable. DataType nh nghia kieu d lieu (Boolean , String , Integer ,..) c lu tr trong cot. DefaultValue An nh gia tr ngam nh cua Cot o Expression An nh bieu thc dung e oc hang , tnh toan ga tr theo cot. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 153

tableCars.Rows(1000).Delete() tablesCars.AcceptChanges()

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

lay v tr so cua cot trong su tap Columns ma DataTable duy tr ReadOnly Xac nh cot nay co the sa oi mot hang bo sung vao hay khong. ngam nh la false Table Lay DataTable cha DataColumn nay Unique An nh mot gia tr neu ro cac gia tr trong moi hang cua cot la duy nhat (khong c lap lai). Xay dng mot column nh sau (cung t v du tren)
' Create a new DtaTable Dim tableCars As DataTable = New DataTable("Car") ' DataColumn var Dim Column As DataColumn ' Create ID column and add table Column = New DataColumn() Column.DataType = Type.GetType("system.Int32") Column.ColumnName = "ID" Column.ReadOnly = True Column.AllowDBNull = False Column.Unique = False

Ordinal

8.4.4. DataRow

Su tap DataRow bieu th d lieu thc te cua Bang. Cac thanh vien cua DataRow c the hien bang sau : Thanh vien Y ngha DataRow AcceptChanges() ong y hoac loai bo tat ca cac thay oi a thc RejectChanges() hien cho hang ke t khi AcceptChanges() c goi lan cuoi. BeginEdit() Bat au ket thuc hoac huy cac tac vu hieu chnh EndEdit() tren mot oi tng DataRow. CancleEdit() Delete() anh dau mot hang c xoa khi phng thc AcceptChanges() c goi. HasError() tra ve gia tr true/false khi mot cot co HasErrors GetColumnsInError() loi. GetColumnsInError() dung e biet cac thanh vien gay loi. GetColumnError() GetColumnError() c dung e mo ta loi. ClearErors() ClearErrors() g bo bang ke loi cho hang. RowError RowError cho phep chung ta nh ngha loi ng MSSV:9800503 MSSV:9800552 154

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

vi mot hang a cho IsNull() Neu ro cot a ch nh co mang gia tr null hay khong ItemArray An nh mot hang dung mot mang cac oi tng. RowState Xax nh trang thai hien hanh cua DataRow (dung cac gia tr iem danh la : Deleted[hang a c dung Delete hay cha], Modified[hang a c sa oi va AcceptChanges() hay cha], New [Hang a c bo sung vao]) Table Dung tnh chat nay e tham chieu en DataTable cha DataRow nay. 8.5. Cac kieu cua khong gian (Namespace) System.Data.OleDb Khi can ket noi vi bat c mot nguon d lieu ta dung NameSpace System.Data.OleDb Cac kieu cua Namespace System.Data.OleDb Cac Kieu Y ngha System.Data.OleDb OleDbCommand Bieu th mot lenh truy van SQl c th hien oi vi mot nguon d lieu. OleDbConnection Bieu th mot tuyen noi m vi mot nguon d lieu. OleDbDataAdapter Bieu th mot loat cac lenh d lieu [data commands] va mot tuyen noi c s d lieu dung e ien DataSet va cap nhat nguon d lieu. OleDbDataReader Cung cap- mot cach e oc mot luong ch tien ti gom cac record d lieu [data records] t mot nguon d lieu. OleDbErrorCollection OleDbErrorCollection duy tr mot su tap cac OleDbError canh bao hoac cac loi ma nguon d lieu tra ve, OleDbException moi muc c bieu th bi mot kieu OleDbError . Khi gap loi mot ngoai le OleDbException c kch phat. OleDbPrameterCollection Giong nh ADO co ien , su tap OleDbPrameter OleDbParameterCollection cam gi cac tham so c gi en mot thu tuc lu san [store procedure] lu gi cac c s d lieu. Moi tham so eu thuoc kieu OleDbParameter SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 155

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

e hieu ro, ta tm hieu chi tiet tng kieu cua Namespace System.Data.OleDb 8.5.1. OleDbConnection OleDbConnection giong nh kieu Connection cua ADO co ien, cac kieu OleDbConnection c cung cap bi mot chuoi a nh dang san , v du nh : Dim strConnection As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb" Dim cn As OleDbConnection = New OleDbConnection(strConnection) cn.Open( ) Trong o OleDb cung cap mot so provider nh sau sau : Cac Provider Microsoft.JET.OLEDB.4.0 MSDAORA SQLOLEDB Y ngha Dung trnh cung cap ket noi Acess Dung trnh cung cap ket noi Oracle Dung trnh cung cap ket noi SQL Server

Ben canh o OleDbConnection cung cap mot so thanh vien nh sau: Cac thanh vien Y ngha OleDbConnection BeginTransaction() Dung e bat au, thc hien hoan thanh CommitTransaction() hay tr lui mot giao dch theo lap trnh. RollBackTransaction() Close() ong tuyen ket noi. (a dung). ConnectionString An nh chuoi dung e m mot phien lam viec vi kho d lieu ConnectionTimeout Thi gian i trong khi thuyet lap mot tuyen noi trc khi ket thuc t th va phat sinh mot loi. Default la 15 giay DataBase An nh ten hien hanh cua c s d lieu Open() M mot tuyen noi C s d lieu vi cac xac lap tnh chat hien hanh Provider An nh trnh cung cap State Lay trang thai hien hanh cua tuyen noi

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

156

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

8.5.2. OleDbCommand

OleDbCommand la phan bieu th cua mot cau truy van SQL , c ieu tac bang tnh chat bang tnh chat CommandText. Cac thanh vien cua OleDbCommand nh bang sau : (cot loi) Thanh vien cua OleDbCommand Cancle() CommandText Y ngha Huy luong thi hanh mot lenh An nh cau truy van(van ban) hoac cu phap cu the theo trnh cung cap e chay da tren nguon d lieu An nh cach dien dch [interpret] tnh chat CommandText co cac kieu nh StoreProcedure, TableDirect,Text, An nh OleDbConnection c dung bi the hien [interface]cua OleDbCommand Tra ve mot interface cua mot OleDbDataReader. Lay su tap OleDbparameterCollection. Tao mot phien ban co chuan b (hoac a bien dch) cau lenh da tren nguon d lieu.

CommandType

Connection ExcuteReader() Parameters Prepare() V du ve SqlCommand

'Tao mot cau lenh SQL command cach 1 Dim strSQl As String strSQl = "Select * from tableCars where Color = 'White'" Dim Command As OleDbCommand = New OleDbCommand(strSQl, cn) 'Tao mot cau lenh SQL command cach 2 Dim strSQl2 As String strSQl = "Select * from tableCars where Color = 'White'" Dim Command2 As OleDbCommand = New OleDbCommand() Command2.Connection = cn Command2.CommandText = strSQl2

8.5.3. OleDbDataReader

Sau khi thiet lap tuyen noi hoat ong va lenh SQL , bc ke tiep la e trnh lenh truy van cho nguon d lieu. Co vai cach lam nh the. Trong o MSSV:9800503 MSSV:9800552 157

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

kieu OleDbDataReader la n gian ,nhanh chong co the c t nguon d lieu. Lp nay bieu th mot luong d lieu ch oc , ch tien ti , c tra ve mot lan mot ban tin [record] di dang mot ket qua cua mot lenh SQL. OleDbDataReader cung cap mot so phng thc nh sau: Cac phng thc cua Yngha OleDbDataReader Read() Tra ve d lieu truy van Close() ong phien lam viec cua OleDBDataReader GetBoolean(),GetType(), Lay gia tr cua cot FieldCount() Tra ve so lng cot. V du :
Dim cn As OleDbConnection = New OleDbConnection() cn.ConnectionString = "data source=(local);" & _ "initial catalog=Cars;persist security info=False;user id" & _ "=sa;workstation id=PROTSERVER;packet size=4096" Cn.open() Dim strSQl2 As String strSQl = "Select * from tableCars where Color = 'White'" Dim Command2 As OleDbCommand = New OleDbCommand() Command2.Connection = cn Command2.CommandText = strSQl2 Dim DataReader As OleDbDataReader DataReader = Command.ExecuteReader() ' Create loop over the result While (DataReader.Read()) Console.WriteLine("The Car{0}", DataReader("Make").ToString()) End While DataReader.Close() cn.Close()

8.5.4. OleDbParameter

OleDbParameter la thiet lap cac tham so cho dong cho lenh goi. Tham so nay cu the c truyen cho (hoac nhan t ) thu tuc lu tr san. Lp nay cung co mot so tnh chat (cot loi ) c trnh bay bang sau ay: Tinh chat cua Y ngha OleDbParameter DataType Thiet lap kieu tham so theo dang .NET MSSV:9800503 MSSV:9800552 158

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

DbType Direction IsNullable ParameterName Precision Scale Size Value V du :

An nh kieu d lieu bam sinh t nguon d lieu , dung e iem danh OleDBType An nh tham so la ch nhap , ch xuat, hai chieu hay mot tham so co gia tr tra ve An nh xem tham so co chap nhan gia tr Null hay khong. An nh ten cua OleDbParameter An nh so lng toi a cac ch so dung bieu th value. an nh so lng v tr thap phan e phan giai Value An nh kch c tham so toi a cua d lieu Tm va an nh gia tr cua tham so

Dim strSQl2 As String strSQl = "Select * from tableCars where Color = 'White'" Dim Command2 As OleDbCommand = New OleDbCommand() Command2.Connection = cn Command2.CommandText = strSQl2 ' Create parameter for tha call Dim Para As OleDbParameter = New OleDbParameter() ' input Para.ParameterName = "@ID" Para.OleDbType = OleDbType.Integer Para.Direction = ParameterDirection.Input Para.Value = 1 ' ID=1 Command2.Parameters.Add(Para) ' Out put Para = New OleDbParameter() Para.ParameterName = "@Make" Para.OleDbType = OleDbType.Char Para.Size = 20 Para.Direction = ParameterDirection.Output Command2.Parameters.Add(Para) ' Call and show Parameter Command2.ExecuteNonQuery() ' Display result Console.WriteLine("strored procedure info :") Console.WriteLine("CarID :{0}", command2.Parameters("@ID").Value

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

159

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Console.WriteLine("Make :{0}", command2.Parameters("@Make").Value

8.5.5. OleDbDataAdapter

Chung ta a biet qua Tuyen noi vi nguon d lieu(OleDbConnection), Phat mot cau lenh SQL (dung OleDbCommand,OleDbParameter) va viec vi OleDbDataReader. ieu nay on thoa khi ban muon lap lai mot lo d lieu that nhanh hoac ng tac mot thu tuc lu san.Tuy nhien, cach c ong nhat e co c mot DataSet hoan chnh t kho d lieu o la thong qua cach dung OleDbDataAdapter. Tom lai, kieu nay keo thong tin t mot kho lu tr d lieu, va ien vao mot DataTable ham cha trong mot DataSet, dung phng phap OleDbDataAdapter.fill(). OleDbDataAdapter khong ch la thc the ien cac bang cua mot DataSet nhan danh ban ma con chu trach nhiem duy tr mot loat cac lenh Sql loi dung e cac chi tiet cap nhat tr lai kho lu tr. Cac thanh vien cua OleDbDataAdapter c the hien qua bang sau : Cac Thanh Vien Y Nhgia Dung e thiet lap cac lenh SQL se c phat ra cho DelateCommand kho lu tr d lieu khi phng thc Update() c InsertCommand goi. Moi tnh chat nay an nh bang mot kieu UpdateCommand OleDbCommand SelectCommand Fill() ien mot bang a cho trong DataSet bang vai Records GetFillParameters() Tra ve tat ca tham so c dung e thc hien Select UpDate() Goi cac lenh INSERT,UPDATE, va DELETE tng ng cho moi hang c chen, c cap nhat , hoac c xoa cua mot bang a cho trong DataSet. V du :
' Step 1 Open Connection Dim cn As OleDbConnection = New OleDbConnection() cn.ConnectionString = "data source=(local);" & _ "initial catalog=Cars;persist security info=False;user

id" & _

"=sa;workstation id=PROTSERVER;packet size=4096" cn.Open() ' Step 2 Create Select command Dim strSQl2 As String strSQl2 = "Select * from tableCars where Color = 'White'" Dim Command2 As OleDbCommand = New OleDbCommand() Command2.Connection = cn Command2.CommandText = strSQl2 'Step 3 Make a DataAdapter

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

160

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dim DataAdapter As OleDbDataAdapter = New OleDbDataAdapter() DataAdapter.SelectCommand = Command2 ' Create and fill the dataSet Dim DataSet As DataSet = New DataSet("CarDataSet") Try DataAdapter.Fill(DataSet, "tableCars") Catch e As Exception Console.WriteLine(e.Message) End Try finally cn.Close()

Cac kieu cua khong gian (Namespace) System.Data.SqlClient Rieng oi vi SQL Server Microsoft cong cap rieng mot Namespace la System.Data.SqlClient . Khi dung Namspace nay chung ta co the thao tac trc tiep vi c s d lieu SQL ma khong qua mot trnh trung gian nao (nh OleDb va OleDb cung khong ho tr nhieu cho viec truy cap d lieu SQL nh System.Data.sqlClient) Cac kieu loi cua Namespace system.Data.SqlClient theo bang sau: Cac Kieu Y ngha System.Data.SqlClient SqlCommand Bieu th mot lenh truy van Transact- SQL c thc hien oi vi nguon d lieu SQL server. SqlConnection Bieu th mot tuyen noi m vi nguon d lieu SQL server. SqlDataAdapter Bieu th mot loat cac lenh d lieu [data commands] va mot tuyen noi c s d lieu dung e ien DataSet va cap nhat nguon d lieu SQL server. LoeDbDataReader Cung cap mot cach e oc mot luong ch tien ti[forward only stream] gom cac record d lieu [data records] t nguon d lieu SQL server. SqlErrors SqlErrors duy tr mot su tap cac canh giac hoac SqlError cac loi ma nguon d lieu SQL server tra ve, moi SqlException muc c bieu th bi mot kieu SQLError . Khi gap loi mot ngoai le SQLException c kch phat sinh. SqlPrameterCollection SqlParameterCollection cam gi cac tham so SqlPrameter c gi en mot thu tuc lu san [store procedure] lu gi cac c s d lieu. Moi tham SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 161

8.6.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

so ieu thuoc kieu SqlParameter Tnh chat , thanh phan cac kieu cua Namespace System.Data.SqlClient giong nh cac kieu namespace System.data.OleDb 8.7. Van dung Wizards va dung DataGrid Ta co cach e lam viec vi DataSet va cac Namspace OleDb va SqlClient bang cong cu Wizards. n gian , ton thi gian, va t loi. Cac bc tien hanh nh sau: * Thiet lap tuyen noi d lieu: Dung Server Explorer hoac dung thanh ToolBox(phan Data) chon SQLConnection

Chon ng dan enDataBase ma ta can(chon New Connection) hien len dialogDataLink

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

162

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

ien ay u thong tin Chon OleDbdataAdapter hay SqldataAdapter hien len Wizard dialog

* Chon tuyen noi lick nut Next

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

163

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

* Sau o ta chon kieu cua Query

* Bc ke tiep la xay dng cau lenh Sql thep y mnh (ta cung co the xay dng bang query builder)

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

164

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

* Sau o ta chon Generate DataSet(ben di Property hay click phai chuoc len OleDbDataAdapter)

* Ta dung DataGrid e the hien DataSet len form chnh ta khai bao DataGrid.DataSource= DataSet

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

165

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

166

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

GII THIEU ASP.NET (ASP+)


Gii thieu ASP.NET Tm hieu Next Generation Web Service Framework C s ha tang cua cac ng dung Web Nhng khac biet gia ASP.NET va ASP ASP.NET cau hnh va phan phoi ng dung. Trang thai cua bien Session va Application trong ASP.NET X ly loi trong ASP.NET 9.1 Gii thieu ASP.NET Mac du phien ban ASP 3.0 ra i cach nay khong lau, nhng Microsoft a no lc cho ra i mot cong nghe web x ly pha may chu hoan toan mi o la ASP.NET (hay ASP + ten cu phien ban beta) . Trong chng nay chung ta se tm hieu cac ac tnh mi co trong ASP.NET. Microsoft con goi cong nghe mi nay vi mot ten khac nghe hap dan hn o la Dch vu Web the he ke tiep (Next Generation Web Service). Ban se thay tai sao chung ta lai phai can ASP.NET trong tng lai. Chung ta se tm hieu cach ASP.NET c thiet ke va cai at. Nhng u iem noi bac cua ASP.NET so vi ASP trong kien truc hay bo khung lam viec (framework) mi tren nen Windows. ASP.NET c thiet ke tng thch vi cac phien ban trc o. Chung ta co the de dang chuyen oi cac ng dung co san t ASP sang ASP.NET ma khong can thay oi nhieu. Mac du ASP.NET la phien ban mi cua ASP nhng chung ta co the cai at ASP.NET chung vi ASP 3.0 tren he may chu Windows 2000 ma khong s phien ban mi se e len hay nang cap phien ban cu. Khong can thay oi cau hnh cua cac ng dung ASP cu. ASP.NET va ASP hoat ong oc lap vi nhau. ASP.NET c cai them vao trnh chu Web IIS nh mot tuy chon hoat ong chung vi ASP. 9.2 Tm hieu bo khung web nen the he ke tiep NGWSF(Next Generation Web Service Framework). 9.2.1. Gii thieu : Trong he ieu hanh, bao gom nhieu oi tng hoat ong tng tac lan nhau. Chng trnh cua chung ta cung la mot oi tng. Microsoft goi mo hnh nay la COM (component Object Model). Tat ca moi th c qui ve oi tng, phng thc, thuoc tnh va cac dch vu ma oi tng co the cung cap. Phat trien hn na Microsoft m rong COM thanh kien truc COM + cho phep SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 167

Chng 9

Cac van e chnh :

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cac oi tng nay giao tiep vi nhau tren moi nen Window, t 98, NT / 2000, may chu (server), may khach (Client) au au cung la cac thanh phan oi tng co the giao tiep va trieu goi nhau nhau xuyen suot. Vi s phat trien manh cua Internet, Microsoft lai mot lan na lai a kien truc COM + thanh mo hnh oi tng cao hn, anh hng en toan bo he ieu hanh. Kien truc mi nay mang ten la NGWSF. Tuy mang ten la Web nhng thc te kien truc nay a an sau vao nen he ieu hanh. NGWSF bo xung cac dch vu mi cho cac oi tng ng dung phan tan COM+ bao gom : Mot tap cac th vien lap trnh phong phu va thong nhat Bo thc thi chng trnh a ngon ng (multi-language runtime engine) va bao ve an toan ma nguon thc thi n gian hoa qua trnh tao lap, phan phoi va bao tr ng dung. Tang tnh mem deo va kha chuyen cho cac ng dung phan tan. Bao ve cac phan mem hien co va giam au t ve ao tao. 9.2.2. Tm hieu khung nen NGWSF Viec tch hp ASP vao he ieu hanh phien ban ASP.NET la iem khac biet rat quan trong so vi cac phien ban khac cua ASP trc o. Cac phien ban ASP trc ay (2.0 hay 3.0) ch c dung va gan vao nh mot thanh ho tr (add on). Tuy nhien bo khung trong kien truc NGWSF a thay oi hoan toan ve khai niem ng dung cong nghe thong tin tren nen tang InterNET. Neu ban a quen vi viec tao, phat trien va bao tr cac ng dung moi trng cu, ban phai thay oi cach nhn khi tiep can vi vi NGWSF. Kien truc NGWSF cho phep ban hoan chnh moi kieu ng dung t ong goi, phat trien, kiem tra cac ng dung tren trnh khach (client) cho en cac ng dung phc tap tren trnh chu (server). Toan bo khai niem cua NGWSF la mot phan da tren y tng va nen tang cua kien truc ng dung Internet phan tan (DNA Distributed Internet Application). Tuy nhien, ieu quan trong ban can nh o la bo khung NGWSF khong n thuan ch danh rieng cho ASP.NET. Khung AGWSF nay anh hng en toan bo cac chng trnh ng dung se chay trong tng lai. Hnh XX_1 la mo hnh cua bo khung thc thi (runtime framework) c windows kiem soat tren toan bo he ieu hanh oi vi moi ng dung ma trong o ASP.NET ch la mot bo phan.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

168

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Trang ASP.NET

ASP.NET Web Service

Thanh phan ho tr ASP.NET

Cac chng trnh Windows truyen thong

Windows va cac dch vu cua he ieu hanh.

Bo khung va moi trng thc thi NGWSF Hat nhan he ieu hanh Windows

Khung lam viec NGWSF cung cap bo may thc thi ma lenh (execute engine ) cung vi tap hp cac lp hay thanh phan hng oi tng co the s dung e tao nen ng dung. Bo khung nay lam viec nh la lp giao tiep gia ng dung va hat nhan cua he ieu hanh. Ban co the hoi tai sao lai can mot lp trung gian nh the, trong khi ng dung theo truyen thong co the de dang noi chuyen vi trc tiep vi hat nhan va cac dch vu cua he ieu hanh. Nguyen do la tang trung gian nay se cho phep cac ng dung s dung tot hn cac u iem cua he ieu hanh, n gian hoa qua trnh phat trien va phan phoi ng dung trong moi trng thng mai ay canh tranh hien nay. e at c ieu nay, bo khung thc thi runtime cua NGWSF a cai at rat nhieu ac iem ma lap trnh vien hay mot ngon ng lap trnh cu the nao o phai t cai at trc ay. Bo khung nay cung cap cac c che nh : t ong thu gom rac bo nh (garbage collector), tap cac oi tng ay u cac chc nang phuc vu cho cac cong viec lap trnh thong thng nhat. Tang kha nang bao mat va an toan cho ng dung. Chc nang bao mat sau cung rat quan trong, nhat la oi vi cac chng trnh m rong trieu goi thong mang Internet nh ngay nay. Neu ban la lap trnh vien Java, ban se thay Microsoft ang hng en mo hnh may ao tng t Virtual machine cua Java kien truc NGWSF nay. 9.2.3. Ngon ng trung gian pho dung (common intermediate) Mot trong nhng u iem noi bac nhat cua bo khung thc thi cung cap cho ban o la moi trng thc thi trung lap ve ngon ng . Tat ca cac ma lenh du cho viet bang ngon ng ng lap trnh nao eu dc bien dch thanh ngon ng trung gian goi la IL (Intermediate Language). Bo khung thc thi se tao ra ma nh phan cuoi cung hnh thanh nen ng dung va ieu khien ma. oi vi cac trang ASP.NET, ma nguon se c dch ra ma IL va ch co ma IL SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 169

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

c goi thc thi. Khi ma nguon thay oi th ma IL se c bien dch lai. Cac trang ASP.NET con lu gi trong vung em se b huy bo thay the bang cac trang ASP.NE T vi ma IL mi. Cho du ban s dung ngon ng lap trnh nao Visual Basic, C#, Jscript, Perl , ma IL c bien dch ra cung se nh nhau. Chung la ma thc thi trong bo khung NGWSF. Trong tat ca cac ngon ng C# la ngon ng mi cua Microsoft c thiet ke at biet e dung cho bo khung NGWSF cung vi ASP.NET. Ngon ng ng nay ket hp sc manh cua ngon ng C++ cung vi s n gian cua ngon ng Visual Basic va Jscript. Mot u iem khac na la ban co the goi ma lenh cua mot ngon ng lap trnh hoan toan khac vi ngon ng lap trnh ang c viet ng dung.Ngha la ban co the tao ra mot oi tng t mot ngon ng trnh, sau o trieu goi hoac thay oi t mot ngon ng khac. V du nh ban co the tao oi tng t ngon ng C# sau o ke tha va tao ra oi tng mi t ngon ng Visual Basic nh them cac thuoc tnh, phng thc, overwrite cac phng thc hay thuoc tnh trc o. Ro rang bo khung thc thi a va ang hng chung ta en moi trng lap trnh a ngon ng thuan thiet. Ban co the tao ra cung mot ng dung t bat ky ngon ng nao. Ket qua ma nh phan cua chung la nh nhau. ay la mot ieu tuyet vi oi vi hau het cac nha phat trien va phan phoi ng dung trong moi trng Internet a nen nh hien nay. 9.3 C s ha tang cua cac ng dung Web Ha tang cua cac ng dung Web nam trong mot phan cua kien truc .NET NGWSF. Chung bao gom cac dch vu web va trang ASP.NET. Cung vi bo khung mi cua bo thc thi ng dung .NET, cac ng dung va dch vu Web a ra nhng ac iem noi bac sau ay: Ho tr giao dien ngi dung : Cac thanh phan a nang (rich control) la mot phan trong cai at cua th vien ASP.NET. Nhng ieu khien nay giup ngi dung tao ra cac giao dien web nhanh chong va n gian. Thanh phan rich control chay tren server va co kha nang tao ra cac ma HTML 3.2 tng thch vi hau het cac trnh duyet cu. Ho tr truy xuat c s d lieu Moi trng NGWSF cung cap phien ban ADO.NET mi cho ADO trc ay. ADO.NET cho phep truy xuat d lieu bat ke khuon dang hoac v tr d lieu. ADO.NET thiet ke theo hng oi tng tren d lieu quan he, cho phep rut trch d lieu t cac nguon khac nhau. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 170

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

9.4

ADO.NET tang cng kha nang ho tr d lieu XML. Ban co the tao ra cac tap d lieu t XML lu tr va ong goi va truyen i tren mang. D lieu XML co the oc va hieu c rat nhieu ng dung Internet. Kha nang m rong danh cho cac ng dung phan tan Hai yeu cau thiet yeu cua mot ng dung tren moi trng Internet la he ieu hanh nen (flatform) phai vng chac va kha nang m rong tren moi trng truy xuat ln cho phep x ly ong thi nhieu ket noi. Moi trng thc thi NGWSF cung cap cac chc nang t ong kiem tra loi va phat hien nhng trng hp qua tai. NGWSF se tm cach khi ong va tai tao lai nhng ng dung cung nh cac thanh phan oi tng. ieu nay lam giam thieu cac loi nh he thong tai nguyen can kiet, ket noi tat nghen . . . He ieu hanh cung cap dch vu mi t ong thu don rac (garbage collector), dch vu ieu phoi va lam trung gian cac li goi oi tng phan tan xa, dch vu bao mat va an toan trong cac truy xuat tai nguyen mang. Tat ca cac dch vu c tch hp trong mot tong the thong nhat s dung cung nh phan bo tai nguyen mot cach hp ly. Tng thch vi cac phan mem hien co va giam chi ph au t Mac du co thay oi ln trong he ieu hanh va moi trng thc thi nhng Windows van chu trong en tnh tng thch vi cac phien ban cua COM, DCOM. Hau het cac ng dung s dung COM, DCOM, trang ASP, nhng kch ban hoac file thc thi eu hoat ong trn tru trong moi trng NGWSF. Nhng khac biet gia ASP.NET va ASP S n gian (Simplicity) : ASP.NET thc hien de dang cac thao tac thong thng nh : form submission, chng thc, cau hnh website, va trien khai. Cai thien kha nang trnh bay (Improved performance) : Bi v ASP.NET c dch theo c che CLR (Common Language Runtime) nen no co nhng thuan li trong viec sm ket noi vi JIT do o se co nhng tn hieu trnh bay qua viec bien dch trc. Trong ASP, ban hau nh phai viet ma chng trnh e quan ly moi th. Ban muon quan ly trang thai cua cac trng hp nhap lieu trong Form, nh kiem tra tnh hp le cua d lieu, tang toc trang ASP bang cach dung vung em cache th phai viet ma. ASP.NET thc s la mo hnh oi tng thanh phan loai bo rat nhieu cong oan viet ma ma lap trnh vien Web phai lam. ASP.NET cung cap cac thanh phan ieu khien hoat ong pha trnh chu (server side control) hoat ong theo hng x ly s kien. Ban ch can khai bao cac thanh phan ieu khien can s dung va trong hau het cac trng hp, ban khong can thiet viet them ma lenh. Moi viec kiem soat trang thai va tng MSSV:9800503 MSSV:9800552 171

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

tac vi cac thanh phan ieu khien eu c trnh chu Web server vi kien truc ASP.NET lo lieu. Chung ta se tm hieu ro hn trong cac phan ti. Ngon ng lap trnh manh me (Strong typed language) : ASP.NET s dung Visual Basic nh ngon ng lap trnh. Trong khi o ASP s dung ngon ng VBScript hay JavaScript ma ay ch la ngon ng kch ban. ASP.NET ho tr kieu Variant va nhieu kieu d lieu khac nhau. Mo hnh hng s kien (Event driven model) : Giong nh Visual Basic ASP.NET ho tr mo hnh hng s kien. ASP.NET ho tr cac s kien Session va ng dung trong tap tin Global.asax. ASP.NET them vao bon s kien, tap tin Global.asax gi ay ho tr hn 12 s kien. Nonspaghetti code : Mo hnh lap trnh trong ASP.NET phan biet ma nguon vi nhng g hien th tren man hnh, xay dng va quan ly ma nguon mot cach de dang. ASP.NET cho phep tach ri gia ma lap trnh va ma thiet ke. Security : ASP.NET cung cap s cap phep va chng thc cac dch vu. ASP.NET lu tr cac thong tin ngi dung database hay cac file. Ngi s dung co the c cap phep va chng thc khi s dung. Khi s dung 2 loai Cookies Authentication Module va URLAuthorization th cookie se cha ng nhng thong tin uy quyen ma cookie se kiem tra nhng yeu cau bat thng. Ban co the tan dung cac dch vu ang nhap (login) tuy bien cho trang trang tai lieu ASP.NET theo phong cach Web hoac theo c che kiem tra quyen cua he thong bao mat cua he ieu hanh. Configuration : ASP.NET s dung tap tin XML e lu tr cac thong tin cau hnh. V the viec thay oi cap nhat cac thong tin cau hnh cho trang web de dang hn. Trong ASP viec thay oi cac thong tin cau hnh phai le thuoc vao giao dien IIS. Web services : ASP.NET cung cap mot dch vu mi khong co trong phien ban cu , o la dch vu Web (Web service). ay la cach thc cho phep cac trang ASP.NET tr thanh cac oi tng phan tan phuc vu cho moi ng dung dung Internet trieu goi t xa. Mo hnh dch vu Web ngay cang tr nen pho bien va khong the thieu oi vi cac ng dung web trong tng lai. Web service la s thay oi va bo xung ang gia nhat cua kien truc ASP.NET cua cong nghe Web. Cache services : MSSV:9800503 MSSV:9800552 172

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ngay nay, the gii a thay oi nhanh chong vi cac thiet b cam tay nh ien thoai, may Palm, TV co ket noi Internet . . . Nhng thiet b nay eu co kha nang ket noi en cac may chu phuc vu Web. Do o cong viec cua may chu cung tang len rat nhieu. Chang han ngoai viec x ly trang HTML ban con phai co kha nang tao ra cac trang WML phu vu cho ien thoai di ong, x ly va trao oi d lieu XML. Nhng cong viec nay co the x ly bang ASP nhng no oi hoi phai co them cac he thong th vien phu va oi hoi qua trnh viet ma cong phu. ASP.NET cho phep ban a ra c nhng ket xuat khac nhau. + Debugging : ASP.NET xay dng chc nang kiem soat loi cho phep ngi lap trnh thc hien viec kiem soat loi de dang nh viec kiem soat loi trong lap trnh tren Window Forms. Ngi lap trnh khong can phai dung lenh Response.Write e kiem soat loi nh trc ay. + Trien khai (Deployment) : Trien khai ch n gian la viec chep cac file. Tat ca cac thong tin cau hnh c lu trong file XML. Hn na no tranh c s co DLL Hell (ang ky component, version, DLL b khoa, . . . ) Ban co the bien dch lai thanh mot component va trien khai chung ma khong can phai khi ong lai server. 9.5 ASP.NET va dch vu Web. Cung vi s ra i cua XML, cong nghe web a thay oi rat nhieu. Ngay nay cac ng dung Web can co kha nang trieu goi lan nhau (ng dung phan tan) . ASP.NET cho phep xay dng cac lp oi tng ngay ben trong trang ASP. Nhng oi tng nay cung cap mot dch vu nao o ma trnh khach t xa co the trieu goi. Trang ASP khong con la mot trang web thong thng. Ban than no tr thanh mot oi tng cung cap dch vu web. Trnh khach co the trieu goi cac trang ASP thong qua giao thc SOAP (Simple Object Access Protocol). SOAP la giao thc da tren HTTP va XML. SOAP cho phep ban goi thc thi va nhan ket qua tra ve cua oi tng da tren nh dang d lieu. XML thong dung cung vi giao thc HTTP ang s dung rong rai tren Internet. oi tng va dch vu Web c quan ly bi kien truc ha tang cua ASP.NET va COM+ trong Windows. 9.6 ASP.NET cau hnh va phan phoi ng dung. 9.6.1. Tap tin web.config. Trong ASP.NET toan bo thong tin cau hnh cua site c at trong file web.config. ay thuan la mot file text c nh dang theo kieu XML co the de dang oc cung nh soan thao. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 173

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

V du ta co the cng hoa oan ma ket noi vao file web.config nh sau: sConnectionString = Server = Localhost; Database = Northwind; sConnectionString += UID = sa; pwd = ; V Web.config la file co nh dang theo kieu XML nen ban them oan ma XML sau vao cuoi file Web.config. <appsettings> <add key =DSN value = server = Localhost; Database=Northwind; UID=sa; pwd =;/> </appsettings> e oc noi dung cau hnh t file nay chung ta s dung phng thc GetConfig cua namespace Web.HttpContext. V du sau se minh hoa viec lay noi dung cau hnh va lu tren : sConnectionString = Context.GetConfig(appsettings)(DSN) Thong thng file web.config lu tr tat ca cac thong tin cau hnh cua ng dung nh cac thong tin quan ly session, tracing options, bao mat, . . . Ban co the tm thay file Web.config mac nh trong th muc \WINNT\Microsoft.NET\Framework\version\CONFIG\Machine.config. config.web nam trong th muc Program Files\COM20SDK. 9.6.2. Tap tin global.aspx. Ngoai tap tin cau hnh web.config dung toan bo cho ng dung trong site. ASP.NET con cung cap cho ban file cau hnh global.aspx tng t nh file global.asa trong ASP .Trong file global.aspx, ban co the thiet lap va cai at cac phng thc x ly s kien nh Application_OnStart, Application_End, Session_OnStart, Session_OnEnd. Global.aspx con cung cap them cac s kien phat sinh ma global.asa khong co nh Application_BeginRequest, Security_OnAuthenticate, Vi global.asax, ban co the at cac bien khi tao cho session hay Application tng t nh global.asa. Global lu tr cac ham, cac bien toan cuc cua ng dung. 9.7 Trang thai cua bien Session va Application trong ASP.NET. Tng t nh cac phien ban trc , bien Session va Application c dung e lu cac bien dung chung cho cac trang ASP.NET Bien Application co tac dung va anh hng en tat ca cac trang trong site va va suot qua trnh ong cua ng dung. Bien Session ch co tac dung trong mot phien lam viec hay ket noi cua ngi dung vao Website cua ban. Trong ASP.NET bien Application va Session c bo sung rat nhieu ac tnh mi. Cac bien khai bao thuoc pham vi Session gi ay co the hoat ong oc lap vi tien trnh thc thi cac trang ASP.NET. Bien Session c quan ly bi mot chng trnh dch vu rieng goi la State Server. Ban co the lu noi dung SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 174

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cua bien Session vao c s d lieu e co the s dung lai trong phien lam viec tiep theo cua ngi dung. Kha nang nay rat hu dung va hau nh giai quyet c cac vng mac thng gap phai ve quan ly trang thai. V du cac ng dung dung Shopping card (the mua hang) co the lu gi thong tin mua hang trong mot thi gian dai. Ngay ca khi dien dch ASP.NET cua ban hoac dch vu Web b dng ot ngot th cac Session cung bao toan trang thai cho lan lan khi ong lai cho lan khi ong sau o. Trong phien ban ASP.NET lan nay, Microsoft cho phep ban s dung bien Session thay cho Cookie. Vi vai thiet lap ac viet ban co the a ma so cua Session nay len trc tiep a ch URL Cac thong tin ve cookie c ma hoa va truyen trc tiep ten URL. Trnh duyet pha may khach khong can phai ban tam en van e lu Cookie va loai bo nhng cookie khong an toan na. Cuoi cung trnh quan ly cac bien trang thai State Server Process co the cho ban xem toan bo noi dung cua cac bien lu gi hien hanh. ieu nay giup cho viec lap trnh va g loi dien ra de dang va nhanh chong hn. 9.8 X ly loi trong ASP.NET. Trong phien ban mi ASP.NET, Microsoft a a ra cong cu g loi hoan hao ma trong cac phien ban ASP trc ay thng thc hien mot cach kho khan va thu cong. Thng th lap trnh vien phai dung cac lenh Response.write() hay Response.Redirect e in noi dung ra noi dung cac bien hoac chuyen hng cac trang gay loi en mot trang khac. Ban co the ch nh mot trang cu the cho viec hien th cac thong bao loi cho toan bo cac trang trong Websie. V du e ch thi trang thong bao loi myErrorPage.aspx thc hien cac thong tin bao loi khi co mot loi phat sinh ban dung trang page direct nh sau : %@Page ErrorPage = /errorDir/myErrorPage.aspx% Neu cac loi nh Page Not Found, Access Forbiddent hay Internal Server phat sinh khi bien dch, dien dch, nap, truy xuat trang, th trang x ly loi cua ban se c goi. Trong trang myErrorPage co the lay cac thong tin loi va thong bao cho ngi dung mot cach than thien hn. Ban co the cau hnh trong file web.config e han che cac thong bao loi trnh khach. Ngoai ra ban co the chan cac thong bao loi mc thap hn bang cach cai at thu tuc x ly cho cac s kien HandleError. Mot net mi, VB.NET cung cap them cu phap try.catch..finaly. ay la cu phap bay loi thong dung trong C va Java. Ban co the bat chc nang lan vet bang ch th Trace au trang. Tat ca cac noi dung va trang thai bien se c hien th chi tiet ben di trang ket xuat chnh cau ban. Ban ch can ch th lan vet nay au trang hoac ben trong file cau hnh web.config cua ban : <%@Page Trace = True%> . SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 175

e tai:Tm hieu VB.NET va ng dung 9.9

GVHD:Nguyen Tan Tran Minh Khang

Ket chng Nh vay chung ta a xem qua tong quan nhng ac iem cua ASP.NET va nhng van e thiet thc ma ASP.NET em lai. Chung ta se sang chng ke tiep e xem cach tao mot trang Web bang cach s dung ngon ng ng Visual Basic.NET.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

176

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

CACH TAO TRANG ASP.NET Cac van e chnh :


Gii thieu Web Forms So sanh s khac biet gia Web forms va Windows forms Cac thanh phan ieu khien control. Cach tao mot trang web

Chng 10

10.1. Gii thieu Web Forms

Web forms la mot phan cua ASP.NET cho phep ngi dung tao cac trang web thong qua trnh phat trien nhanh chong ng dung cua Visual Basic. Web forms cung giong nh Windows forms, no cung cap a dang cac thanh phan giao dien, cac mau canh le (layout) a dang cho cac controls va kha nang lap trnh tng tac (user interaction). Tuy nhien Web controls co mot so gii hang v o la gii hang chung cua mo hnh Web. V du co mot vai s kien c tm thay trong windows controls nh cac s kien chuot th khong the thc hien c tren Web forms bi v cac s kien nay oi hoi mot chi ph cao oi vi server. Va lai, cac controls nay khong phai la cac Active X controls. No ch ton tai tren server va phat sinh chung thanh dang chuan HTML xuong client. Moi trng phat trien tch hp (Integrated Development Environment) danh cho Web forms co mot vai khac biet vi Windows forms. No cung cap 2 Tab cho ngi dung : Phan Design va phan HTML. Phan Design cho phep 2 la chon e thiet ke : grid layout va flow layout. Gird layout cho phep ngi dung thiet ke(keo tha va re) cac control en mot v tr x,y mong muon giong nh trong windows forms. ay la cach thiet ke quen thuoc nhng co mot bat li la ngi dung co the khong thay c tat ca cac thanh phan tren web Form. Flow layout cho phep ngi dung thiet ket cac control theo dang canh mot bien nao o trong Web forms. Co the ay la cach khong quen vi nhng ngi thng thiet ke tren Windows forms nhng no se hien th ung dang thiet ke cho du man hnh cua ngi dung che nhieu che o khac nhau. 10.2. So sanh s khac biet gia Web forms va Windows forms + Giao dien : Windows forms co nhieu thuan li hn trong viec thiet ke. No da tren lp .NET window forms va graphics e tao ra mot giao dien a dang (Rich user Interface). Ngc lai trong Web forms lai oi mot chi ph qua cao trong viec nhan va phan hoi mot tng tac cua ngi dung. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 177

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

+ Bao mat : Windows forms c truy cap hoan toan trc tiep thong qua may tnh cuc bo con web forms th c Browser gii han quyen. + He thong nen tren client (Client Flatform) : Tat ca cac clients s dung windows forms eu phai can .NET framework. Ngc lai Web forms ch can Browser v the no co the thch hp vi nhieu loai Client flatform khac nhau. + Client Application : Cac chng trnh s dung Windows forms can mot cau hnh cao hn mot chng trnh tng t khi s dung Web forms. + Ket xuat (throughput) : Windows forms chay pha client v the no cho ra mot ket qua phan hoi (ac biet la he thong thi gian thc) mot cach nhanh chong. Web forms da tren viec giao thong tren mang thong qua giao thc HTTP va thong the ap ng cho cac he thong s dung thi gian thc hay oi hoi mot ket xuat toc o cao. + Trien khai (Deployment) : V Windows forms chay tren may client nen no phai c cai at tren tat ca cac may cua ngi dung. Khi so lng ngi dung tang cong vi viec nang cap version cua chng trnh th s trien khai tr nen kinh khung. Trong khi o Web forms khong can mot s trien khai nao t pha client. Clients oi hoi duy nhat la mot Browser e hien th chung. Tren ay ban a thay c s khac biet chnh gi Windows Forms va Web Forms la s khac biet gia chng trnh Client/ Server va Web Application. Bi v Web forms s dung browser, mot client chung. ieu nay giup no thanh cong trong viec hng ti mot lng ngi dung ln thong qua Intranet. 10.3. Sau ay chung ta se xem cach tao mot Web forms n gian. Web forms nay khong cha web controls (se trnh bay trong phan ti). e tao web forms, au tien chung ta phai tao mot Web Application. o e tao mot Visual Basic Web project ta vao menu File | New | Project | chon ASP.NET Web Application. Man hnh tao Project mi giong nh hnh ve di ay:

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

178

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

, o Thay oi ten project ma ban mong muon. Neu ban s dung may cuc bo nh la mot web server th ta gi nguyen ng dan en th muc http://localhost. Ten ma ban at cho project se la ten mot th muc con cua th muc mac nh cua wwwroot. Sau khi ban project ban se thay VB.NET tao ra rat nhieu file trong th muc Test (gia s ten project ac la Test) trong th muc wwwroot\Test. Trong ca so Solution Explorer chung ta thay tao ra rat nhieu cac tap tin. Global.asax, Global.asax.vb, Global.asax : cha ng cac s kien cua Application va Session. Tap tin Styles.css : cha ng kieu dang HTML. AssemblyInfo.vb cha cac thong tin (Assembly) cua project nh version, ten cua project. Web.config cha cac thong tin ve cau hnh chi tiet cua project. Test.vsdisco cha thong tin cua Web service cho phep the gii ben ngoai co the phat hien cac dch vu Web san co t mot ng dung dung web a cho. *.aspx, *.aspx.vb, *.aspx.resx : cac tap tin nay tao thanh tap mau thi gain thiet ke va tap tin Codebehind ket hp. o Chon che o thiet ke cho Web forms trong hop thoai properties la Flow layout hay Grid Layout.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

179

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Chon Tab Design va go Hello World (ch go c khi chon che Layout la Flowlayout). o Chung ta a tao xong mot Web form n gian. Trc khi chay chng trnh ban phai thiet at trang bat au cho project. e lam ieu o, ban phai chuot tren tren Webform1.aspx trong ca so Solution explorer, chon Set As Start Page trong menu Popup. Bay gi ta co the chay chng trnh bang cach nhan F5 hay click bieu tng start tren thanh toolbar. VS.NET se dch va kch hoat trnh duyet Internet Explorer. Ban se thay ch Hello World tren Browser.

Hnh 10.1 10.4. Cach a mot controls vao Web Forms Viec them cac control trong Web forms giong nh trong Windows forms. Cac control lam viec theo mo hnh lap trnh hng s kien. S khac biet duy nhat gia Web forms va Windows forms la v tr cua cac control tren web forms. Ngi lap trnh co the cha quen vi cach thiet ke cac control theo kieu Flow Layout. Neu cam thay khong quen vi cach thiet ke FLow Layout, ngi lap trnh co the chuyen sang dang Grid Layout giong nh thiet ke tren Windows forms. V du them Web controls vao Web Form ' Tao mi mot project ' Trong Web form : chon layout cho WebForm la FlowLayout, tao 2 label, mot textbox va mot button. ' Thiet lap cac thuoc tnh cho label control cha dng tieu e cua ng dung: o Text : Customer Order Details o Font Size : X Large. o ID : lblCustomerOrder. ' Chon lable th hai va thiet lap cac thuoc tnh nh sau : o Text : Customer ID SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 180

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o ID : lblCustomerID ' at Textbox gan label th 2 va thiet lap cac thuoc tnh sau : o Text : (Rong) o ID : txtCustomerID ' Chon button va thiet lap thuoc tnh : o Text : Get Orders Details o ID : cmdGetDetails Sau khi thiet ke Web form trong giong nh hnh ve :

Hnh 10.2 Khi click vao nut chang thay viec g xay ra. V chung ta cha them mot dong code nao ca. That s khi click vao buttons, trnh duyet gi mot yeu cau en server vi toan bo d lieu ma ngi dung a go vao textbox. Co le ban khong chu y en tien trnh nay v s phan hoi qua nhanh. Tien trnh nay goi la form submission. Sau ay chung ta se xem xet phan ma ma chung ta va thiet ke :
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="Test.WebForm1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <form id="Form1" method="post" runat="server">

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

181

e tai:Tm hieu VB.NET va ng dung


<P>

GVHD:Nguyen Tan Tran Minh Khang

<asp:Label ID="lblCustomerOrder" Runat="server" Font-Size="X-Large">Customer Order Details</asp:Label> </P> <P> <asp:Label id="Label2" runat="server" Height="18px" Width="86px">Customer ID :</asp:Label> <asp:TextBox id="txtCustomerID" runat="server" Height="21px" Width="131px"></asp:TextBox> </P> <P> <asp:Button id="cmdGetCustomerID" runat="server" Width="112px" Height="22px" Text="Get Customer ID"></asp:Button> </P> </form> </body> </HTML>

Chung ta se tm hieu dong au tien cua oan ma nguon.


<%@Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="Test.WebForm1"%>.

Dong ma nay thiet lap mot so ac trng ve trang hien hanh, cho biet ngon ng ma chung ta ang s dung la Visual Basic, ke tha t Test.WebForm1. T khoa CodeBehind : la mot khai niem mi ma ASP.NET a ra nham tach rieng ra 2 phan :phan ma thiet ke va phan ma lap trnh. Phan ma lap trnh c lu trong tap tin WebForm1.aspx.vb Khi bien dch chng trnh VB.NET se bien dch tap tin WebForm.aspx.vb thanh DLL. Neu ban vao th muc . . /Test/Bin ban se thay tap tin Test.DLL. DLL nay cha namespace Test va tat ca cac Webform cua ban nh la mot lp trong namespace nay. Ky thuat nay gii han viec ac trung ten tap tin trong Project mac du cac tap tin nay nam trong cac th muc khac nhau. Ky thuat nay goi la Codebehind bi v phan ma nguon nam pha sau Form.
<form id="Form1" method="post" runat="server">

Khai bao mot Form co ten la Form1, phng thc hoat ong la Post gi i. Runat = server : cho biet ay la web control nay se hoat ong tren server va lu gi cac trang thai trc o cua control. Phan ke tiep la la phan khai bao cac lable, textbox va button :
<asp:Label ID="lblCustomerOrder" Runat="server" Font-Size="X-Large"> Customer Order Details</asp:Label> <asp:Lable> .. </asp> :

ay la lable control trong namespace ASP.NET. Tat ca cac control trong ASP.NET eu nam trong namespace ASP va co t khoa runat. Tat ca cac tag c m eu phai c ong lai. Bnh thng khi ngi ban m mot tag th ASP.NET t ong phat sinh tag ong lai. Neu khong co tag ong lai ASP.NET t ong phat sinh loi bang cach hien nhng ng vien mau o tai tag b loi. Tat ca SVTH:Vo Hoang Anh MSSV:9800503 182 Tran Trung Hieu MSSV:9800552

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cac Web Forms Control eu t ong phat sinh ma HTML xuong Client. V the neu ban xem source cua mot trang ASP.NET ban se thay tat ca cac tag eu la cac tag HTML thuan thiet. Bay gi chung ta se xem noi dung cua oan HTML ma no c phat sinh t Server.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <form name="Form1" method="post" action="WebForm1.aspx" id="Form1"> <input type="hidden" name="__VIEWSTATE" value="dDwxMTQ4OTUzOTgwOzs+egy5E3GZTgoMkpXI8afOwEeqpPc=" /> <P> <span id="lblCustomerOrder" style="font-size:XLarge;">Customer Order Details</span> </P> <P> <span id="Label2" style="height:18px;width:86px;">Customer ID :</span> <input name="txtCustomerID" type="text" id="txtCustomerID" style="height:21px;width:131px;" /> </P> <P> <input type="submit" name="cmdGetCustomerID" value="Get Customer ID" id="cmdGetCustomerID" style="height:22px;width:112px;" /> </P> </form> </body> </HTML>

Trong phan oan ma tren chung ta hay xem oan ma :


<form name="Form1" method="post" action="WebForm1.aspx" id="Form1">

Chung ta thay oan ma tren co action chnh la ten cua trang ma chung ta va truy cap. Do o no se t post en chnh ban than no.
<form name="Form1" method="post" action="WebForm1.aspx" id="Form1"> <input type="hidden" name="__VIEWSTATE" value="dDwxMTQ4OTUzOTgwOzs+egy5E3GZTgoMkpXI8afOwEeqpPc=" />

Mot thanh phan ieu khien khac c ASP.NET sinh ra va them vao Form la o ieu khien <input> mang trang thai (HIDDEN). Ten cua thanh phan nay la _VIEWSTATE.ay la dau hieu e trnh chu nhan biet va quan ly cac trang thai d lieu cua trang. Mot trang co the trieu goi bi nhieu Client khac nhau. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

183

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Moi ket noi la mot phien lam viec Session . _VIEWSATE chnh la dau hieu nhan dang Session ma d lieu trong trang chu tac ong. Sau ay chung ta se viet mot cau lenh n gian. Khi ngi dung nhan nut GetDetails th TextBox se hien len dong ch Button is Clicked e cai s kien nay, chung ta nhap up vao nut GetDetails tren man hnh thiet ke : th lap tc se co mot ca so hien ra ay chnh la ca so cha tap tin WebForm1.aspx.vb. Ta them oan ma sau vao trong ham cmdGetCustomerID_Click
Private Sub cmdGetCustomerID_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) cmdGetCustomerID.Click txtCustomerID.Text = "Button is Clicked" End Sub Handles

Bien dch chng trnh, click chon button. Ban se thay dong ch Button is Clicked tren TextBox Phan ma nguon co the tham khao trong th muc Code/Chng 10. 10.5. Cac thanh phan ieu khien trong ASP.NET ASP.NET co tat ca 4 loai thanh phan ieu khien (control) ma ban can phan biet o la : ) ieu khien noi tai (Instrinsic control) : Cac ieu khien nay se tao ra nhng phan t theo kieu HTML pha trnh khach. Ban co the da vao ieu khien noi tai e tao ra cac phan t HTML thong minh co kha nang quan ly trang thai cua chnh no hoac nhng phan t ch thuan HTML khong can quan ly trang thai. ) ieu khien danh sach (List control) : Thanh phan ieu khien nay cho phep ban hien th moi loai d lieu theo kieu danh sach. V du nhng bang d lieu, khung nhn , liet ke S dung ListControl e hien th va sap xep d lieu theo cach n gian va t phai viet ma lenh nhat. ) ieu khien a nang (rich control) : Nhng ieu khien a nang tren server se sinh ra ma la to hp cua nhieu phan t HTML, oi khi kem theo ma ieu khien JavaScript e chay pha trnh khach. Rich control cung cap nhieu giao dien bat mat va oc ao. V du nh oi tng calender la mot thanh phan ieu khien a nang rich control. Tuy theo trnh duyet pha may khach ma ma HTML va JavaScript do rich control sinh ra se tr nen tng thch. ) ieu khien kiem tra (validate control) : Cac ieu khien nay hoat ong hau canh ca hai pha trnh khach (client) va trnh chu (server). SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 184

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Muc ch cua thanh phan ieu khien la cho phep kiem tra khuon dang cua d lieu nhap vao trc khi trnh duyet gi i hoac trnh chu a d lieu ve trnh khach. Tat ca cac thanh phan ieu khien nay eu sinh ra ma HTML tng thch vi hau het cac trnh duyet ASP.NET tuyet oi khong s dung cac Active X hay Applet ac biet e sinh ma cho trang tai lieu pha trnh khach. 10.5.1. ieu khien noi tai (intrinsic control) Cac ieu khien noi tai co kha nang quan ly trang thai (gi lai noi dung d lieu sau moi vong giao tiep khach chu con goi la round trip) va x ly cac s kien phat sinh. Chnh thc cac phan t HTML sau c xem la cac thanh phan ieu khien noi tai trong ASP.NET. <table> <form> <button> <tr> <td> <input> <textarear> <a> <th> <select> <image>

Tat ca cac phan t HTML con lai khac neu ac thuoc tnh la runat=server th se c kiem soat bi mot ieu khien noi tai HTML duy nhat. Trang ASP.NET co the s dung cac thanh phan ieu khien noi tai khac c nh ngha vi tiep au ng asp. Cac ieu khien nay ch chay tren trnh chu (vi thuoc tnh runat = server) . Chung cung cap cac thuoc tnh va phng thc tng t nh cac ieu khien noi tai HTML chuan. Khi dien dch ket qua tra ve trnh khach, nhng thanh phan ieu khien vi tiep au ng asp nay se c anh xa chnh xac vao tng phan t HTML tng ng. V du, e tao oi tng ListBox chung ta co the s dung ieu khien noi tai asp nh sau : <asp:List Box visibleitems = 3 runat = server > <asp:ListItem>Window 95 </asp:ListItem> <asp:ListItem>Window 98 </asp:ListItem> <asp:ListItem>Window NT </asp:ListItem> <asp:ListItem>Window 2000</asp:ListItem> <asp:ListBox> Khi thc thi ASP.NET se dien dch va gi ma HTML ve trnh khach nh sau : <Select name = ListBox0 size = 3> SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 185

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

<option>Windows 95 </option> <option>Windows 98 </option> <option>Windows NT </option> <option>Windows 2000 </option> </Select>

Cac ieu khien asp lam cho ma nguon ro rang hn. V du trong HTML ban co the dung cung mot phan t <input> e the hien rat nhieu kieu nh <input type = checkbox>, <input type = radio>, <input type = text>. Trong khi o ieu khien asp phan biet <asp:Radio>,<asp:ChechBox>, <asp:TextBox>. Ket qua ma cac thanh phan ieu khien asp sinh ra cuoi cung van anh xa tng ng vao cac phan t HTML. Di ay la cac danh sach cac ieu khien asp va HTML tng ng nhau. ASP.NET <asp:Button> <asp:LinkButton> <asp:HyperLink> <asp:TextBox> <asp:RadioButton> <asp:CheckBox> <asp:DropDownList> <asp:ListBox> <asp:Image> <asp:Lable> <asp:Panel> <asp:Table> <asp:TableRow> <asp:TableCell>
Ket xuat HTML

<input type = submit> <ahref javascript:doPostBack()>..</a> <a href = .>.</a> <input type = text, value = > <input type = radio> <input type = checkbox> <select> </select> <select size = ></select> <image source = > <span> </span> <div></div> <table>. . . </table> <tr></tr> <td></td>

S dung theo phong cach nao la tuy thuoc vao ban. Neu ban muon dung HTML ban se khong khai khac het kha nang cua moi trng va cac thanh phan ieu khien co trong ASP.NET. 10.5.2. ieu khien danh sach (Listcontrol) ASP.NET cung cap cho chung ta cac thanh phan ieu khien danh sach giup giam thieu cong viec lap trnh thu cong va ton nhieu cong sc nh trc ay ch e tao danh sach. Cac thanh phan ieu khien danh sach SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 186

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

hoat ong tren server va sinh ma HTML ve trnh khach Co 3 loai thanh phan danh sach ieu khien chuan : Repeater, DataList va DataGrid. ieu khien Repeater la thanh phan n gian nhat cho phep ban ket xuat nhng noi dung lap i lap lai co cung thuoc tnh mau sac font ch, nh dang. DataList tng t nh Repeater nhng cho phep ban them vao cac phan t HTML khac e bieu dien cho d lieu lap lai. DataGrid la khung li hay bang dung trnh bay d lieu theo dang hang va cot. Ban co the dung DataGrid e nh dang cac dong hoac cot d lieu ket xuat tng t nh bang tnh Excel. DataGrid ket xuat d lieu cuoi cung hoan toan ma HTML tng thch vi hau het cac trnh duyet. Con 2 kieu ieu khien danh sach khac ma ASP.NET cung cap la RadioButtonList va CheckListBox. Hai thanh phan nay se sinh ra mot danh sach cac nut chon checkbox hay radio cua HTML Ban co the at danh sach theo hang doc hay ngang. Moi muc cua nut chon mang mot nhan hien th bang phan t HTML <span>. Hai thanh phan nay rat hu dung. V du, ban cho phep ngi dung anh dau vao danh sach cac mail cha trong hop bang cac o checkbox sau o ngi dung co the nhan nut xoa e ong loat xoa. 10.5.3. ieu khien a nang (rich control). Cac ieu khien a nang thng khong de xay dng bang cac phan t HTML n gian. Thay vao o ieu khien a nang thng hnh thanh bang cach ket hp gia JavaScript vi the HTML tao nen nhng hieu ng ac biet. V du, Calendar, AdRotator, TreeView, ImageGenerator la cac ieu khien a nang. Hnh di ay hien th oi tng ieu khien a nang Calendar.

10.5.4.

ieu khien kiem tra (Validate control) Tac vu thng gap nhat khi lam viec vi cac form HTML trong nhng ng dung Web la kiem tra gia tr d lieu do ngi dung nhap vao. MSSV:9800503 MSSV:9800552 187

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cac control nhap lieu trnh duyet luon can phai kiem tra gia tr ngay thang theo mot khuon nh dang, khoang gia tr, chuoi khong c rong, do o ASP.NET cung cap cac ieu khien kiem tra e thc hien cac cong viec nay tren ca hai pha Client va Server. Co 2 cach thc hien viec kiem tra : ' Kiem tra pha trnh duyet : thng s dung javascript va co s phan hoi nhanh hn. ' Kiem tra pha trnh chu : d lieu c gi t client en server, c kiem tra bi trang ASP, sau o phan hoi ket qua ve trnh duyet. ay la cach kiem tra ton nhieu thi gian bi can mot vong giao tiep gia trnh duyet va trnh chu WebServer. Co 3 loai ieu khien : ' RequeredFieldValidator : kiem tra gia tr ac biet cua mot trng. ' ComparedExpressionValidator : Kiem tra gia tr thong qua so sanh vi cac gia tr khac. ' RegularExpressionValidator : kiem tra tnh hp le cua bieu thc. Ngoai ra ban co the s dung ieu khien Custom Validator e cai at bo kiem tra ieu kien kiem tra cho rieng mnh bang cac ham Javascript hoac Visual basic. ieu khien Validation summary se kiem tra tat ca cac ieu khien Validator va in ra ket qua neu mot ieu khien nao o khong thoa man ieu kien kiem tra. Mot ieu khien Validator (tr Sumary Validator) c lien ket vi mot thanh phan HTML thong qua thuoc tnh phan t.

Chng 11

XAY DNG TRANG ASP.NET NANG CAO Cac van e chnh :


Lap trnh vi ma an (code behide) Tao cac mau trang co kha nang dung lai (Pagelets). S dung vung em Cache cua ASP.NET.

Mot trong nhng kho khan ma cac lap trnh vien va cac nha thiet ke trang web gap phai la cac trang web ngay cang phc tap. Rat kho tach ri gia phan noi dung cua trang web (bao gom phan layout va giao dien) va cac ma thc thi SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 188

11.1. Lap trnh vi ma an.

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

cua chng trnh(cac oan viet bang ASP, ASP.NETNET, JSP, Perl,). Ky thuat phat trien trc ay lan lon gia ma nguon va vao giao dien cua trang tai lieu. Kho co the tach lap gia nha phat trien chng trnh va cac nha thiet ke Web hoat ong oc lap nhau. ASP.NET co gan giai quyet van e nay theo hai cach va khong can dung en t khoa #include theo cach ma cac ng dung dung ASP thng lam. Cach th nhat la la dung ma an (code behide) va cach th hai la s dung cac mau trang co kha nang dung lai (pagelets). Ky thuat ma an hoan toan a ra ma lenh tach ri khoi phan trnh bay giao dien cua nh dang HTML. Toan bo trang ASP.NET cua ban ke ca phan ma HTML c xem nh la mot oi tng COM+. Chung ket hp vi cac oi tng cung cap ma trong mot tong the bao nhieu oi tng COM khac. Ban co the xay dng cac oi tng COM cha ma ieu khien t nhieu ngon ng ng lap trnh khac nhau. Bien dch va ket hp chung vao cay oi tng cua trang se tao nen trang tai lieu ket xuat cuoi cung tra ve trnh khach. e ket hp cac oi tng cha ma an vao tai lieu HTML, trc het ban can xay dng oi tng COM ke tha t lp c s (base class). Trong phien ban ASP.NET hien tai lp c s nay la System.Web.UI.Page. Tat ca ma x ly (ma an) c at trong oi tng nay. Tiep en, trong trang ASP.NET ban khai bao ch th Inherit cho phep trang tch hp va ke tha vao oi tng COM va tao ra trc o. Di ay la v du minh hoa, chung ta muon tach biet ma kiem tra tnh cua ham ValidateISBN vao oi tng COM. Trc het chung ta can tao ra mot lp oi tng COM nay, ma lenh c xay dng nh sau:

Imports System Imports System.Text Public Class ValidateClass Inherits System.Web.UI.Page Public Function ValidateISBN(ByVal objSource As Object, ByVal strArgs As String) As Boolean Dim strISBN As New StringBuilder() Dim lngTotal As Long = 0 Dim arrDigits(11) As Integer Dim intLoop As Integer Dim strChar As String Dim intDegits As Integer = 0 ..... If (lngTotal Mod 11) = 0 Then ValidateISBN = True Else ValidateISBN = False

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

189

e tai:Tm hieu VB.NET va ng dung


End If End Function End Class

GVHD:Nguyen Tan Tran Minh Khang

Ban lu noi dung tren vao tap tin validateclass.vb. Tiep en, e s dung oi tng COM cha ma an, ban khai bao trong trang validate.aspx ch th
<%@ Page Language = VB Inherit=ValidateClass Src=validateclass.vb%> <Html> .. <tr> <td align = "right" colspan = 5 > and the ISBN code of the book you are interested in : </td> <td colspan = "1" > <input type = "text" id = "txtISBN" size = "16" runat ="server" NAME="txtISBN"/> </td> <td class = "error"> <!--RequireFieldValidate for ISBN--> <asp:RequiredFieldValidator id = "ValidateISBN" ErrorMessage = "The ISBN code you have entered is not valid" Runat ="server" ControlToValidate="txtISBN" Display="dynamic"> </asp:RequiredFieldValidator> </td> </tr> . </html>

Neu chung ta khong nh ra SCR trong ch th trang th trnh dien dch se tm oi tng COM trong th muc /bin cua ng dung.

11.2. Tao cac mau trang co kha nang dung lai (Pagelets).

Cach th hai e tach ri ma lenh va noi dung tai lieu o la s dung cac mau trang goi la pagelets. Mau trang la cac oan ma nho co kha nang tai s dung trong cac trang khac. V du phan tieu e (header) va chan trang (footer) thng lap i lap lai va the hien trong hau het cac cua ng dung dung. Ban co the a hai phan nay tach ri vao 2 trang pagelets khac nhau. Cac trang co s dung phan header va footer ch can nhung Pagelets vao, khong can phai viet lai ma. Thanh phan va noi dung ma viet trong cac mau trang pagelets co ac iem nh sau : - Ten bien khai bao va s dung trong pagelets la cuc bo khong anh hng en cac bien khai bao trong trang chnh.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

190

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ban co the nhung cung mot mau trang lap i lap lai nhieu lan ben trong trang ma khong s xung ot ve trung ten bien, ten ham hoac phng thc cua lp, oi tng, - Ban co the truyen tham so cho cac mau trang pagelets khi trieu goi hoac khi nhung trang. - Ma lenh trong mau trang co the viet bang cac ngon ng khac vi ngon ng trang chnh. 11.2.1. Xay dng cac mau Pagelet Van e can lu y khi xay dng pagelets : Trong tap tin pagelets ban ng s dung cac the nh <html> hay body v chung se trung vi cac the a co trong trang chnh (trang trieu goi va nhung pagelets). Neu ban a the <form> vao ben trong pagelets th khi trieu goi pagelets ban nen at pagelets ben trong the v du ve trang validate.aspx phan tren, chung di chuyen toan bo phan the hien noi dung nhap lieu (bao gom the ca<form>) va ham kiem tra VilidateISBN vao tap tin pagelets.aspx mang ten validate_pagelets.ascx nh sau: <form runat = server > . <!HTML Control for the name field--> <td align = "right" colspan = 5 > Name : </td> <td><input type = "text" id = "txtName" size = "20" runat ="server" /></td> <td class = "error"> <!Validate controls for name--> <asp:RequiredFieldValidator id = "ValidateName" ErrorMessage = "You must enter your name" Runat ="server" ControlToValidate="txtName" Display="static"> * </asp:RequiredFieldValidator> <!end of validation controls-- > </td> <tr> <td></td> <td colspan = 8 id = invalidate_message> <span runat = server > <asp:ValidateSumary id = validateSummary runat = server /> </span> </td> </tr> </table> <!- - Custom validation function- -> <script language =VB runat =server> Public Function ValidateISBN(ByVal objSource As Object, ByVal strArgs As String) As Boolean Dim strISBN As New StringBuilder()

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

191

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Dim lngTotal As Long = 0 Dim arrDigits(11) As Integer Dim intLoop As Integer Dim strChar As String Dim intDegits As Integer = 0 ..... If (lngTotal Mod 11) = 0 Then ValidateISBN = True Else ValidateISBN = False End If End Function </script>

Trang chnh cua ban vi ten use_pagelets.aspx gi ay ch co nhiem vu khai bao va s dung pagelets. Ban dung ch th <%@ Register TagPrefix myPagelet TagName=allOfInput src=validate_pagelet.aspc%>

11.2.2. V du ve s dung Pagelet.

Trong ch th tren, thuoc tnh nguon src tro en file cha noi dung mau trang pagelets. TagPrefix cho biet thong gian ten phan biet vi cac pagelets tuy bien khac. TagName la ten trieu goi pagelets. Lu y, ay ta ch mi thay bao, that s ma cua pagelets van cha c nhung vao trang chnh thc tr khi ban thc hien viec trieu goi. Pagelet c trieu goi va nhung vao trang chnh tng t nh cach goi cac thanh phan ieu khien ASP.NET ma chung ta a hoc qua. V du, e thc hien viec nhung mot mau pagelet ban co the s dung cu phap <myPageket:allOfInput>. Khi trang chnh c nap, mau pagelet cung se c bien dch va trong trang thai san sang e ket xuat noi dung tai lieu. Di ay la toan bo noi dung trang chnh use_pagelet.aspx s dung pagelets nh ngha trong file validate_pagelets.ascx: <%@Register TagPrefix =mypagelet %> TagName = allOfInput src = validate_pagelet.ascx%> <html> <title> Re using An ASP + Page as a Pagelet </title> <!chen mau trang pagelet> <myPagelet:allOfInput id = PageletCtrl runat = server /> </html> Ket xuat cua use_pagelets.aspx hoan toan tng t nh trang validate.aspx trc ay. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 192

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Neu ch thc hien chc nang nhung ma vao trang chnh th Pagelets khong co g khac biet so vi ch th #include ma ASP a ho tr trc ay . Tuy nhien, pagelet lam c nhieu ieu hn la ch tach biet va an ma. Ban co the xem pagelet nh mot oi tng, co the truy xuat thong qua phng thc va thuoc tnh. V du chung ta co the cai them cho mau trang validate_pagelet.ascxtren ay vi thuoc tnh IsbnValue tra ve so ISSBN cua quyen sach ma ngi dung at mua, ong thi xay dng phng thc ValidateResult() cho phep lay ve ke qua kiem tra tnh hp le cua so ISBN. Ban them oan ma sau vao au trang validate _pagelet.ascx.
<script language = VB runat =server> Public Property IsbnValue as String Get tra ve gia tr so cua ISBN do ngi dung nhap vao nhap vao sau khi nhan nut submit IsbnValue = txtISBN.Value End Get Set at tr cho o nhap lieu txtISBN.Value = isbnValue End Set End Property Public Function ValidationResult() as String If Page.IsValid then ValidationResult = The values you provided have been accept else ValidationResult There is a problem with the values you provided End If End Function </script>

11.2.3. nh ngha thuoc tnh va phng thc cho Pagelets.

.. Tiep en trong trang chnh, ban co the truy xuat cac thuoc tnh IsbnValue cua mau trang mang nh danh PageletCtrl c nh ngha trc o nh sau: strISBN=pageletCtrl.IsbnValue Neu muon at gia tr cho o nhap lieu ISBN, ban co the s dung cac thuoc tnh thong qua phep gan sau : PageletCtrl.IsbnValue = 1-861004-13-3 hoac ban co the gan gia tr thuoc tnh ngay khi nhung pagelet vao trang chnh thong qua khai bao : <myPagelet:allOfInput id = PageletCtrl IsbnValue=1-861004-13-3 SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 193

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

runat = server/> Hoac co the goi phng thc ValidateResult cua pagelet e lay ve ket qua kiem tra so ISBN khi ngi dung chuyen d lieu ve server nh sau: <% If IsPostBack Then strFooter = PageletCtrl.ValidateResult else strFooter = ISBN Book validate result End If Reponse.write (strFooter) %>

11.3. S dung vung em Cache cua ASP.NET.

Cache thng c hieu la vung em dung tang toc cac thao tac x ly nhap xuat. ASP.NET cai at rat nhieu mc trong qua trnh x ly trang. Khi trang c goi, trnh bien dch trang se dch toan bo noi dung va ma thc thi cua trang ra dang nh phan a vao vung em cache e qua trnh trieu goi trong nhng lan ke tiep se nhanh hn. ASP.NET cho phep ban can thiep va s dung vung em e tang toc cache 2 mc o khac nhau o la thiet lap cache cho noi dung ket xuat (output cache) va cho khai bao lu tr bien trong moi trng phat trien ASP.NET. 11.3.1. Lap vung em cho d lieu ket xuat. oi vi cac ng dung hoan chnh, thng noi dung rat t thay oi. Hien tai ASP.NET cung cap c che cho phep nhan dang cac chuoi URL co noi dung trung nhau e tra ve trang yeu cau va lu tren cache trc o. V du sau se minh hoa cach thiet lap va s dung cache cho trang .aspx
<%@OutputCache Duration = "15"%> <%@Page language ="vb" MaintainState = "False" EnableSessionSate="false"%> <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <script language="vb" runat="server"> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

194

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

'Put user code to initialize the page here If Not IsPostBack Then chkValue1.Checked = True End If End Sub Private Sub cmdExec_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExec.ServerClick strMessage = "The Code in this page was executed :" & "<br><b>" & CStr(Now()) & "</b><p>" divExecutedTime.InnerHtml = strMessage End Sub </script> </HEAD> <body> <div id="divExecutedTime" runat="server"> <form id="Form1" method="get" runat="server"> Select a value for the query : <p> <input type="radio" value="1" name="queryvalue" id="chkValue1" runat="server">Value One <br> <input type="radio" value="2" name="queryvalue" id="chkValue2" runat="server">Value Two <br> <input type="radio" value="3" name="queryvalue" id="chkValue3" runat="server">Value Three <br> </p> Then click <input type="submit" id="cmdExec" value="here" runat="server" onserverclick="cmdExec_Click"> to re load this page </form> </div> </body> </HTML>

Ban lu noi dung tren vao trang output_cache.aspx. Trong v du tren, the <form> cua chung ta s dung phng thc chuyen d lieu method =get e a d lieu ngi dung submit len a ch URL (hien ASP.NET cha ho tr cache trang cho phng thc post cua the <form>) Neu noi dung cua chuoi URL khong oi th noi dung trang se la noi dung thc thi trc o. Hay xem hieu ng cac trang bang cach m trnh duyet va goi output_cache.aspx. Ket qua lan th nhat c the hien trong hnh sau.Khi ban nhan nut radio au tien va nut nhan submit ngay gi tren server se c hien tren man hnh. Tuy nhien lai chon nut th nhat va nhan nut Submit, ket qua ban lai nhan c thi gian tren server cua lan trc o. D nhien ong ho tren server van chay ung. Van e la khi ban chon lai radio th nhat, chuoi URL cua Form thc hien submit co noi dung trung vi lan trc o. Trang con lu trong cache tng ng vi chuoi URL SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 195

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

nay tren server se c tra ve ngay tc khac ma khong can cap nhat lai. Do ch th <%@OutputCache Duration = 15%> nen sau 15 giay cho du ban gi chuoi URL trung vi lan trc o th noi dung se c huy khoi cache va c bien dch lai. Ket qua se tr nen ung an.

Hnh 11.1 Chung ta co the s dung cache trong nhng ng dung ma d lieu tng oi tnh va c cap nhat trong mot khoang thi gian nhat nh. Ket qua ma vung nh cache em lai la mot toc o phan hoi ang ke. 11.3.2. S dung cache e lu tr bien moi trng 11.3.2.1 Tao va truy xuat cac bien cua oi tng cache ASP.NET cung cap cho ban cach thc lu tr cac bien trong cache e tang toc o truy xuat. Cache la vung nh toan cuc cho nen tao va x ly ca bien cua cache gan giong vi khai niem Application hn la Session. e tao mot bien trong cache ban s dung oi tng cung vi ten bien nh sau : Cache (MyKey)=MyValue e lay gia tr cua bien lu trong cache trc o ban goi : strValue = Cache(MyKey) Phng thc Insert cung co the c dung w63 tao bien trong cache theo cach khac. V du : Cache.Insert(MyKey,MyValue) e loai bo mot bien trong cache ta dung phng thc Remove Cache.Remove(MyKey) SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 196

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cache c dung e lu moi kieu d lieu t kieu n gian nh chuoi, so nguyen, ky t cho en cac kieu phc hp nh mang, oi tng, ieu khien (control), pagelets, 11.3.2.2 S dung cache trong ASP.NET Trang aspplus_cashe.aspx di ay se minh hoa cach tao va s dung cac bien cache. Chung ta xay dng hai o nhap lieu, ban co the nhap vao o gia tr cho bien, khi click chuot vao nut Add, d lieu se c gi ve server va bien c tao ra trong cache. Ham ShowCacheContent se hien th toan bo noi dung cua cache tr lai trnh khach e ban theo doi . Muon loai bo khoi cache, ban nhap vao ten bien va nhan nut Remove. Lu y bien l trong cach co gia tr toan cuc tng ng nh cac bien lu trong oi tng Application.
<@Page Language =VB MaintainState =False EnableSessionState=False %> <%@OutputCache Duration =15%> <html> <script language =VB runat =server> Sub ShowCacheContents() strContents = <b>The contents of the ASP.NET application & cache are : </b><br> For Each objItem In Cache strName = objItem.Key If Left(strName,7) <> System Then strContens = strContents & strName & = & Cache(strName) & <br> End If divCacheContents.InnerHTML = strContents End Sub Sub cmdAdd_Click(objSender as Object, objArgs as EventArgs) If txtName.Value <> Then cache(txtName.value) = txtValue.value End If ShowCacheContents End Sub Sub cmdRemove_Click(objSender as Object, objArgs as EventArgs) If txtName.value <> Then Cache.Remove(txtName.Value) End If ShowCacheContents End Sub </script> <!Su dung the div de hien thi noi dung cache> <div id= divCacheContents runat =server/> <form runat=server>Enter the name and value for adding to the ASP.NET cache: </p> <input type=text id=txtName size = 10 runat =server /> <input type =text id=txtValue size = 10 runat =server/> </p> Then click <input type = submit id = cmdAdd value = here runat =server

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

197

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

onserverclick = cmdAdd_Click> to<b>Add</b> It to The ASP.NET cache </p> or click <input type = submit id = cmdRemove value = here runat =server onserverclick=cmdRemove_Click/> to<b>Remove</b>it from the ASP+ Cache </p> </form> </html>

Lu y, chung ta khong hien th cac mang bien mang ten Sytem bang oan ma sau: If Left(strName,7) <> System. Then strcontents = strContents & strName & = & Cache(strName) & </br> End If 11.4. Ket chng Nh vay trong chng nay chung ta xem qua mot so tnh nang bac cao ho tr viec xay dng cac trang dung lai. Ky thuat s dung vung nh cache.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

198

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

NANG CAP CAC E AN VB 6.0 LEN .NET (Upgrading VB to .NET)


6.0. va do o, khi chung ta xay ng mot project VB.NET se tiep nhan t phien ban VB 6.0 nh the nao?. Van e khac can quan tam o la chung ta co nen nang cap mot e an co san t VB 6.0 len VB.NET hay khong. e bat au chung ta th lay mot ng dung VB 6.0 window EXE len .NET nh the nao. 12.1. Nhng ieu lu y (considerations) trc khi nang cap len .NET Trc khi quyet nh nang cap chung ta can xem xet ,can nhac. Va sau ay la nhng ieu chi tiet sau: ' Gii han gan cua nhng bien(Early binding of variables) : la mot thc tien the hien mot bien mot kieu d lieu rieng biet khac vi kieu d lieu Object. ieu thuan li cua kieu nay la bien dch nhng loi , thng s dung thuoc tnh incorrect hoac goi nhng phng thc khong ton tai (non_existent methods), co the do tm thay ngay lap tc. ' Tranh s pho bien NULL (avoiding null propagation): o Null propagation co ngha la neu Null c dung cho mot bieu thc , ket qua bieu thc la luon luon Null. Trong VB 6.0 gia tr Null c pho bien suot bieu thc. Null dc dung pho bien trong cac ng dung c s d lieu (chang han kiem tra mot field(s) co null hay khong) xem v du Null propagation trong mot bieu thc dim var var = 100 + null var = hello & null o Null propagation khong ho tr Trong VB.NET v du var = 100 + null tra ve ma loi. Hn the na t khoa Null c thay the bang System.DBNull.Value. Nh vap muc ch cua viec chuyen oi , code cua ban se luon luon kiem tra Null thay v null propagration. Visual Basic dung ham IsDBNull() e xac nh mot bieu thc co gia tr hay Null. ' Dung ADO : VB.NET ho tr ma DAO,RDO, va ADO nhng vi mot s sa oi nho. Nhng oi vi viec s dung ADO, RDO controls , data control, hoac RDO user connection th VB.NET khong ho tr nang cap len c. SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 199

Chng 12

Khi tiep can VB.NET , chung ta thay VB.NET co goc re sau trong phien ban VB

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

' S dung kieu d lieu ngay cho viec cho viec d tr ngay : Trong VB s dung kieu d lieu double e lu tr hoac thao tac ngay. ieu nay VB.NET khong ho tr, bi v d lieu ngay khong lu tr nh double. oan code sau ay khong co hieu lc trong VB.NET Dim dblVal as Double Dim dtVal as Date dtVal = now dblVal = dtVal Invalid in VB.NET .NET Framework ho tr hai phng thc e chuyen d lieu t Doubles sang Dates. Ham FromOADate va ToOADate. ham ToOADate chuyen kieu d lieu ngay sang Double va ham FromOADate ngc lai. ' S dung Constants(hang) thay v nhng gia tr thc s(actual):mot ngi lap trnh tot thng s dung constant hn nhng gia tr thc s(actual values). Trong .NET gia tr cua TRUE c thay oi 1,1. Viec s dung nhng constant nay bao am gia tr ung no thay the khi project cua ban upgrade. Tuy nhien neu mot gia thc c dung (actual value) th no hoan toan co the dung trong project cua ban mot cach ung an. 12.2. Cac bc tien hanh Nang cap (Upgrade) ' File/Open/Project, m tap tin *.vbp cua VB 6.0 , ban c chao on bi Upgrade wizard.

' Tien trnh keo theo mot so bc sau : Tien trnh nay hoi xem co nang cap project cua ban thanh dang thc EXE hay DLL hay khong (hien nhien cac chuan EXE ch nang cap thanh EXE). Ke tiep SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552

200

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

' Hoi ban lu tr project mi(.NET) au.:

' Sau o wizard thc hien viec chuyen oi , va se co mot tap tin ten UpragdeReport.htm bo sung vao project cua ban(bao cao lai qua trnh Upgrade). SVTH:Vo Hoang Anh Tran Trung Hieu MSSV:9800503 MSSV:9800552 201

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

12.3. Co nen nang cap khong ?

Can c vao trng hp trac nghiep n gian cua ta, Upgrade wizard lam viec rat tot. Tuy nhien vi mot e an (project ) thc ngoai i co the bao gom hanh chuc ngan dong ma, nhieu COM, DLL, va co the c phan phoi quan nhieu may. Ro rang, tien trnh nang cap khong phai khong co nhieu thieu sot. Neu ban co mot ng dung quan trong van hanh tot va quyet nh nang cap , ban co the mien cng khi phai xem set t m bao cao nang cap phat sinh (UpgradePreport.html ) va t tay sa hang tram dong ma. Cau hoi at ra la o la : ban c g ? Trong a so trng hp, tra li chang c bao nhieu. Thc te, ban co the tao them viec cho chnh mnh (va oi cua ban ) ve lau dai. Cau tra li ngan gon cho cau hoi o la khong. Khong co ly do nao thiet phuc ma bat ho t bo moi trng lam viec VB 6.0 va nang chung len VB.NET (VB 7.0). Va thc te tham ch ra i bo Visual Studio.NET, Microsoft hien a cam ket ho tr va nang cap, cap nhat VB 6.0. Khong phai noi vay th VB.NET co cai g e chung ta tiep can va van dung no. Chung ta dung VB.NET e xay dng mi, va muon van dung cac th vien hu quan cua VB.NET.

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

202

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Phan 2

Bai ng Dung

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

203

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

e tai Xay dng Trang Web Day Hoc VB.NET


1.
Hien Trang Hien nay tren the gii viec van dung Web la mot van eu c nhieu ngi quan tam. Hau het nhng viec eu thong qua mang chang han nh : Kinh doanh, tm kiem tai lieu, mua ban tren mang, day hoc trc tuyen tren mang ,v,v,.. Internet tr thanh phng tien lien lac xuyen luc a va c xem la trong tam . Do o vi viec tm hieu Visual Studio.NET va ng dung the manh ve lap trnh Web(ASP.NET) , ADO.NET ma Visual Basic.NET ho tr e viet mot trang Web gii thieu ve Visual Basic.NET 2. Yeu cau Xay dng trang web hng dan hoc VB.NET co cac yeu cau sau: Cho phep ngi dung ang ky accout va ang nhap, gi bai len trang web va download tai lieu. Cho phep ngi quan tr ang nhap vao he thong e cap nhat noi dung cac bai gi cua ngi dung. Tam ngng hoac huy Account cua cac thanh vien. Cho phep moi ngi tham khao ly thuyet va tai lieu ve Visual Basic.NET 3. Phan Tch S o lp Categories Reletionships Subjects Users

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

204

e tai:Tm hieu VB.NET va ng dung Mo ta d lieu cac bang Bang Users STT Ten Field 1 2 3 4 5 6 7 8 9 10

GVHD:Nguyen Tan Tran Minh Khang

Kieu d lieu AuthorID AutoNumber AuthorName Text(50) UserName Text(50) Pass Text(50) Brithday Date address Text(50) ImageFileName Text(50) Tel Text(50) Email Text(50) Status Yes/No

Mo ta ID cua tng field trong bang Ten cua ngi gi Ten ang nhap gi bai Password angnhap gi bai Nam sinh cua ngi gi ia ch Ten anh cua ngi gi bai ien thoai cua ngi gi Email cua ngi gi Trang thai ngi gi(tc la ngi gi[thanh vien nay] con co quyen tham gia gi bai na hay khong ) So bai ma thanh vien nay gi

11

TotalSubjects

Number

Bang Categories STT Ten Field 1 CategorieID 2 CategorieName Bang Subjects STT Ten Field 1 2 3 4 5

Kieu d lieu AutoNumber Text(50)

Mo ta ID cua tng chu e Ten cua chu e

Kieu d Mo ta lieu SubjectID AutoNumber ID cua bai gi(ng vi 1 chu e) CategorieID Number ID cua chu e Title Text(50) Ten bai gi Content Memo Noi dung bai gi DownloadFileName Text(50) Ten tap tin source code hay tai lieu muon download ImageFileName Text(50) Ten tap tin hnh anh dung e minh hoa noi dung cua phan trnh bay MSSV:9800503 MSSV:9800552 205

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

7 8

AuthorID DatePost

Number Date

ID cua ngi gi bai Ngay gi bai

4.

Cai at + Bo cuc: Trang web c chia lam 3 phan : - Phan ben tren (Header) cha banner cua trang web. - Phan ben trai la menu cha cac muc chnh cua VB.NET, noi dung tm kiem : Tm kiem theo chu e, noi dung, tac gia upload. - Phan ben phai cha cac thong tin chi tiet : Danh muc cac chu e theo muc chnh cua bai hoc, thong tin ang nhap, gi tai lieu, + Lap Trnh : Trang web s dung 5 Pagelets : - Banner.ascx : cha tieu e cua trang web va cac chc nang chnh nh ang nhap vao tai khoan, ang ky user, gi tin bai len server. - Categories.ascx : Pagelets cha danh sach cac muc chnh cua VB.NET. Tat ca d lieu hoan toan ong (Load t c s d lieu). Pagelets s dung DataList control vi cac Item Templates e hien th d lieu. - CategorieSubjects.ascx : Pagelets cha cac danh sach cac chu e cua mot muc chnh. - NewDaily.ascx : Pagelets cha cac tin (bai gi) mi nhat trong vong 5 ngay tr lai ay. - Search.ascx : Pagelets cha cac tieu chuan tm kiem tin bai. Trang web s dung 4 Lp : cha cac ham x ly lien quan en c s d lieu tach han phan lao trnh giao dien trang web. - StdPage class : cha cac ham lay chuoi ket noi (GetDSNCached), lay a ch URL hien tai(UrlBase), - Subjectsdb class : cha cac ham lien quan en bang Subjects, Categories : Lay danh sach cac muc chnh (GetCategories), danh sach cac chu e theo muc chnh (GetCategorieSubjects), lay danh sach cac bai mi trong vong 5 ngay (GetDailyPickList), cap nhat bai gi (UpdateSubjects) - Usersdb class : cha cac ham lien quan en bang Users : Ham Them user (AddNewUser), tam ngng Account (DiableAccount) , Lay ID cua User (GetAuthorID), lay ten cua user (GetAuthorName), lay thong tin user (GetUserInfo), ValidateLogin (kiem tra ang nhap), ValidateAdmin (Kiem tra user hien tai co la Admin hay khong), MSSV:9800503 MSSV:9800552 206

SVTH:Vo Hoang Anh Tran Trung Hieu

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

UserControlModule Class : ay la lp ke tha t lp UserControl, ay la lp ma cac lp trong Pagelets ke tha. S dung 2 file : Style.css va Style1.css e nh ngha kieu dang cho cac trang web. Tap tin Web.config : cha cac thong tin ket noi, session cho trang web.

<ApplicationSetting> <add key = "DSN" value = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= e:\Inetpub\wwwroot\HuongDanHocVBNET\Database\Database.mdb" ></add> </ApplicationSetting> <sessionState mode="InProc" stteConnectionString="tpip=127.0.0.1:42424" sqlConnUctionString="datK sour_u101 ?=127.0.0.1;user id=sa;password=" cookiel_'8s="false" timeout="20" />

5.

Giao dien S o giao dien

Trang chu

Trang ang ky Account

Trang Login

Trang danh sach bai hoc

Trang tm kiem

Trang user upload tai lieu

Trang chi tiet bai hoc

Trang thong tin user Cap nhat thong tin user

Cap nhat noi dung bai hoc

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

207

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Cac trang chnh


o Trang chu

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

208

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Trang Login Dien Giai: Dung e ang nhap vao he thong gi tin bay

o Trang Register Dien Giai: Trang ang ky thanh vien mi

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

209

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Trang Upoad tai lieu Dien Giai: Dung e gi tai lieu(tin bai ) len server

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

210

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Trang Upoad tai lieu Dien Giai: Trang cha thong tin chi tiet bai ng vi muc ma user chon

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

211

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Trang ket qua tm kiem Dien Giai: Trang cha ket qua tm kiem

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

212

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

o Trang Thong tin User(thanh vien) Dien Giai: Trang cha thong tin cac nhan cua thanh vien, so bai gi,

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

213

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

Ngoai ra khi user la admin th con co mot so chc nang nh : Tam ngng Account, chnh sa noi dung bai gi, cap nhat thong tin Users,

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

214

e tai:Tm hieu VB.NET va ng dung

GVHD:Nguyen Tan Tran Minh Khang

TAI LIEU THAM KHAO


1/ VB.NET Developers Guide cua Cameron Wakefield, Henk- Evert Sonder, Wei Meng Lee. 2/ Mastering_VB.NET cua Evangelos Petroutsos hang SyBex. 3/ A Programmers Introduction to Visual Basic.NET cua Paul Boger, Publisher, Sams, Publishing hang SAMS 4/ Programming Visual Basic.NET cua Dave Grundgeiger 5/ VB .NET Language in a Nutshell cua Steven Roman, Ron Petrusha, Paul Lomax 6/ MSDN cua Visual Studio.NET 7/ Lap trnh Microsoft Visual Basic.NET ky thuat va ng dung cua Ngoc Anh Th Press 8/ ASP 3.0 va ASP.NET cua Nguyen Phng Lan 9/ http://www.vovisoft.com 10/ http://www.apress.com

SVTH:Vo Hoang Anh Tran Trung Hieu

MSSV:9800503 MSSV:9800552

215

You might also like