Tài liệu Hướng dẫn lập trình Visual Basic.Net

HƯỚNG DN LP TRÌNH  
VISUAL BASIC .NET  
Tác gi  
1
Bài 1  
Microsoft .NET Framework  
Xin cáo li: rt tiếc là server chúng tôi không cho phép cha các files MP3 nên chúng  
tôi stìm cách khác để cho đọc gidownload sau. Nếu các bn có ý kiến hay vcách  
cho download các MP3 files này thì xin liên lc vi webmaster.  
Thu âm bài ging (MP3)  
download size  
1.2 mb  
1.2 mb  
0.6 mb  
1.2 mb  
1.2 mb  
1.2 mb  
1.4 mb  
1.4 mb  
Cài đặt Visual Studio.NET Beta 2  
Visual Studio.NET nm trong 3 CDs, gm có 4 files:  
EN_VS_NET_BETA2_WINCUP.exe  
EN_VS_NET_BETA2_CD1.exe  
EN_VS_NET_BETA2_CD2.exe  
EN_VS_NET_BETA2_CD3.exe  
Chy EN_VS_NET_BETA2_WINCUP.exe để Unzip nó vào mt folder trong mt harddisk (eg: E:\CD\WINCUP) .  
Ln lượt chy EN_VS_NET_BETA2_CD1.exe, EN_VS_NET_BETA2_CD2.exe và  
EN_VS_NET_BETA2_CD3.exe để Unzip chúng vào chung mt folder trong mt harddisk (eg: E:\CD ).  
Vic Unzip files có thrt lâu, bn phi kiên nhn chcho đến khi nó kết thúc. Nếu không, khi cài đặt có thbị  
than phin là thiếu files.  
Kế đó, trước hết chy Setup.exe ca Windows Component Update như dưới đây, click No khi Warning dialog  
hin ra:  
2
Tiếp theo, chy Setup.exe ca Visual Studio.NET:  
3
Bn nên có CPU Pentium III, 500MHz trlên, vi 256 MB RAM và ít nht 10GB Harddisk. VOS bn nên dùng  
Windows 2000 (Professional hay Server) hay Windows XP. Lý do chính là các versions Windows ny htrợ  
Unicode và có Internet Information Server (IIS) htrASPX để ta dùng cho ASP.NET.  
Mcác Samples ca QuickStart  
Trước khi expand Samples ca Quickstart bn cn phi cài đặt IIS. Nếu chưa làm vic y bn bCD ca  
Windows2000 hay WindowsXP vào để install IIS component.  
QuickStart Samples ca .NET Framework cha các gii thích căn bn và nhiu thí d. Để expand các Samples  
doubleclick Webpage Starthere.htm như trong hình dưới đây:  
4
Khi trang Web ca QuickStart hin ra, click QuickStart, tutorials and samples ri sau đó theo chdn tng  
bước.  
Trang Framework SDK QuickStart Tutorials cho ta các bài tp ca ASP.NET, Windows Forms How Do I...  
5
Nhớ để nguyên các folders ca Unzipped files (E:\CD, E:\CD\WINCUP), đừng delete chúng, vì .NET scòn  
dùng chúng. Ngoài ra, nếu sau ny .NET bcorrupted vì conflict vi các application software khác, bn có thể  
cài đặt .NET li.  
Gii hn ca Software Tools hin giờ  
Architect ca application software hin gicó nói chung ba tng (three tiers): tng giao din (Presentation Tier),  
tng gia (Middle Tier) và tng dkin (Data Tier):  
Presentation Tier: Trong desktop Client ta dùng VB6 và ni vi middle tier qua DCOM. Trong browser based  
Client ta dùng Javascript hay Java applet. Tbrowser based Client ta dùng http để ni vi middle tier qua  
IIS/ASP (có thdùng COM ở đây).  
Middle Tier: Cha các rules để validate data trên client và các business rules khác. Ta dùng VB6 ở đây,  
nhưng cách trin khai COM vi nhng Object Oriented Programming concepts rc ri hơn bình thường. Ta  
phi thiết kế sao cho các components scale well (dùng cho mi c). Có khi dùng Microsoft Transaction Server  
trên Windows NT hay COM+ Services trên Windows 2000. Lp ráp các versions ca components là mt thách  
thc ln.  
Nhiu khi middle tier còn nói chuyn vi các database qua HTTP, ADO và CDO (Collaborative Data Objects),  
.v.v..  
Data Tier: Thường là relational database như Microsoft SQL Server hay Oracle. Ngoài ra còn có Exchange hay  
các database xưa ca mainframe.  
Do đó ta thy:  
Desktop tools không thích hp cho Distributed System hay Internet  
Phi dùng nhiu thcodes như VB6 Code, VBScript, JavaScript, Dynamic HTML, Cascading Style Sheet,  
VC++, Stored Procedures (Transact-SQL trong SQLServer hay PL-SQL trong Oracle).  
Tùy thuc quá nhiu vào central database: Ngay cADO dù là tin dng cũng đòi hi Client luôn luôn  
connect vi Server. Điu ny không thích hp cho Internet applications, vì bn cht ca Internet là  
stateless (không gitrng thái), mi ln cn làm vic mi connect li mt chút thôi.  
DLL "Hell": Các ActiveX cn phi được registered vi Windows Registry, chcó mt version được chp  
nhn. Nếu version mi nht ca mt DLL không compatible vi các versions trước đó mà applications trên  
máy đang cn thì có rc ri.  
Gii hn ca VB6  
6
Thiếu khnăng inheritance (tha kế) và mt sObject Oriented features khác.  
Khnăng Error handling gii hn: On Error Goto ..., On Error Resume Next  
Nhiu khi cn phi gi Windows API để làm nhng vic VB6 không htr: vic ny không tnhiên và đôi  
khi nguy him.  
Không có multi-threading: không thể đoán trước response ca code chy trong các windows ca cùng mt  
VB6 application. Ngay cgii quyết vn đề multitasking bng Timers cũng không đáng tin cy.  
Không ddùng chung vi các ngôn ngkhác như VC++.  
Không tin cho Web development: WebClass không thành công lm. Ít ai chu cho ta cài ActiveX trên máy  
ca h.  
.NET Framework  
.NET được developed từ đầu năm 1998, lúc đầu có tên là Next Generation Windows Services (NGWS). Nó  
được thiết kế hoàn toàn tcon skhông để dùng cho Internet. Vin tượng ca Microsoft là xây dng mt  
globally distributed system, dùng XML (cha nhng databases tí hon) làm cht keo để kết hp chc năng  
ca nhng computers khác nhau trong cùng mt tchc hay trên khp thế gii.  
Nhng computers ny có thlà Servers, Desktop, Notebook hay Pocket Computers, đều có thchy cùng mt  
software da trên mt platform duy nht, độc lp vi hardware và ngôn nglp trình. Đó là .NET Framework.  
Nó strthành mt phn ca MS Windows và sẽ được port qua các platform khác, có thngay cUnix.  
Mc du hãy còn là Beta, .NET Framework rt stable và Visual Studio.NET rt ít bugs, có thdùng cho  
software development ngay tbây gi. Hin nay đã có mt ssách vlp trình .NET do Wrox và Oreilly xut  
bn.  
7
Các phn chính ca Microsoft.NET Framework:  
.NET application được chia ra làm hai loi: cho Internet gi là ASP.NET, gm có Web Forms Web Services  
và cho desktop gi là Windows Forms.  
Windows Forms ging như Forms ca VB6. Nó htrUnicode hoàn toàn, rt tin cho chVit và tht sự  
Object Oriented.  
Web Forms có nhng Server Controls làm vic ging như các Controls trong Windows Forms, nht là có thể  
dùng codes để xlý Events y ht như ca Windows Forms.  
Đim khác bit chánh gia ASP (Active Server Pages) và ASP.NET là trong ASP.NET, phn đại din visual  
components và code nm riêng nhau, không ln xn như trong ASP. Ngoài ra ASP.NET code hoàn toàn Object  
Oriented.  
Web Services ging như nhng Functions mà ta có thgi dùng tcác URL trên Internet, thí dnhư Credit  
Card authorisation.  
ADO.NET là mt loi cache database nho nh(gi là disconnected database) để thay thế ADO. Thay vì  
application connects vĩnh vin vi database mqua ADO, application trong .NET làm vic vi portable  
8
database chcha mt hai tables, là copy tdatabase m. Khi nào cn, portable database ny (ADO.NET) sẽ  
được reconciled vi database mẹ để update các thay đổi. Hai tables trong ADO.NET có thể được related nhau  
trong Master/Details relationship. Vì ADO.NET có cha original data ln data mi nht nên Rollback trong  
ADO.NET rt ddàng và nhký.  
XML được ym trti đa. Nm phía sau ADO.NET là XML. XML có thlà Table of records trong ADO.NET hay  
Tree of nodes trong DOM (Document Object Model).  
IO được htrbng toàn bStream kcMemory Stream StreamReader/StreamWriter. Thêm vào là  
DataFormatting cho Serialisation để cha Object xung binary file hay text file.  
TCP/IP http là hai protocols thông dng nht trong .NET, nhưng chúng làm vic phía sau sân khu giúp ta  
gi mt remote procedure (nm trên computer khác) ddàng như mt local procedure. Kthut y gi là  
Remoting.  
Security htrCryptography, Permissions Policy.  
Diagnostics cho ta Debug Trace.  
Threading rt tin và đơn gin để implement Lightweight Process. Vn đề Timing trong .NET program rt  
linh động, hiu quvà chính xác.  
Vic thiết kế Common Language Runtime nhm vào các mc tiêu chính sau đây:  
Vic trin khai đơn gin và nhanh hơn: developers sdành thì giquyết định ráp nhng software  
components nào li vi nhau nhiu hơn là lp trình tht s.  
Các công tác thiết yếu ("plumbing") như memory management, process communication .v.v. được lo liu tự  
động.  
Các công chtrrt đầy đủ (no more API): .NET Framework Base classes rt phong phú cho file,  
network, serialisation, mã hóa, XML, database, v.v..  
Cài đặt đơn gin và an toàn (no more DLL "hell"): chcn xcopy files, ging như thi vàng son ca DOS. Lý  
do là .NET application chy trên .NET framework, mt khi ta đã cài .NET framework vào máy ri thì có đầy  
đủ mi .DLL cn thiết. Có ltrong tương lai Microsoft cài .NET framework chung vi Windows.  
Dùng cho tWindowsCE đến Desktop, đến Web (scalability).  
Metadata  
Metadata là các dkin ct nghĩa cho ta biết vdkin. Thí dXML Schema ca mt XML file là metadata  
ct nghĩa vdata structure ca data trong XML file. Chính cái XML Schema cũng là mt XML file. Các .NET  
application components, gi là Assembly, cha rt nhiu metadata để ct nghĩa vchính nó (self describing).  
Tìm biết vmt .NET application để có thlàm vic vi nó thì gi là Reflection.  
Htrvà phi hp mi ngôn nglp trình  
Common Language Runtime (CLR) là trung tâm đim ca .NET Famework, nó là hm máy để chy các năng  
tính ca .NET. Trong .NET, mi ngôn nglp trình đều được compiled ra Microsoft Intermediate Language  
(IL) ging ging như byte code ca Java. Nhbt buc mi ngôn ngữ đều phi dùng cùng các loi data types  
9
(gi là Common Type System) nên Common Language Runtime có thkim soát mi interface, gi gia các  
components và cho phép các ngôn ngcó thhp tác nhau mt cách thông sut. Tc là trong .NET, VB.NET  
program có thinherit C# program và ngược li mt cách hoàn toàn tnhiên.  
Điu ny chng nhng giúp các VC++ hay Java programmers bt đầu dùng C# mt cách ddàng mà còn làm  
cùng mt dán vi VB.NET programmers na.  
Nếu VC++ linh động và hiu năng hơn VB6, thì C# chng khác gì VB.NET. Bn có thport C# code qua  
VB.NET code rt ddàng. Vì source code VC++ và Java gn gũi C# hơn VB6 vi VB.NET nên ngoài đời có  
nhiu C# code hơn VB.NET. Do đó, mc du hai ngôn ngVB.NET và C# đều ngang cơ nhau, nếu dùng C#  
bn được li đim có nhiu source code sn và nht là lâu nay người ta vn mang n tượng rng VC++ hay  
Java programmers mi tht slà các cao thlp trình, và có khuynh hướng trlương các guru VC++/Java cao  
hơn VB programmers.  
Khi chy .NET application, nó sẽ được compiled bng mt JIT (Just-In-Time) compiler rt hiu năng ra  
machine code để chy. Đim ny giúp .NET application chy nhanh hơn Java interpreted code trong Java  
Virtual Machine. Just-In-Time cũng có nghĩa là chphn code nào cn xlý trong lúc y mi được compiled. IL  
code chy trong CLR đuc nói là managed code.  
.NET code có thchy chung vi ActiveX, nhưng code trong ActiveX được gi là unmanaged code, tc là  
CLR không chu trách nhim.  
Ngoài vic allocation và management of memory, CLR còn gicác refrerence đến objects và đỗ rác (handle  
garbage collection), tc là thâu li các mnh vn memory khi chúng không cn dùng na. Trước đây, mi khi  
mt DLL đuc loaded vào memory, system sghi nhn có bao nhiêu task dùng nó để khi task cui cùng chm  
dt thì system unload DLL và trli phn memory nó dùng trước đây để system dùng cho chuyn khác. Chớ  
nếu allocate memory để dùng mà không nhdispose nó thì sbmemory leak (r), ln ln ta dùng hết memory,  
bbt buc phi reboot OS. Nhưng bây gi.NET dùng mt process độc lp để làm vic garbage collection. Cái  
phn ng phca vic ny là khi ta đã Dispose mt Object ri, ta vn không biết chc chn chng nào nó mi  
tht sbiến mt. Vì garbage collector là mt low priority process làm vic trong background, chkhi nào system  
memory gn cn nó mi nâng cao priority lên. Dĩ nhiên, nếu mun, ta có thể đòi hi system Dispose mt Object  
ngay lp tc.  
Assembly  
.NET application xây dng tcác assemblies. Mi assembly phi có mt manifest. Có thnó nm riêng trong  
mt file hay nm bên trong mt module. Manifest cha nhng metadata sau đây:  
10  
Tên và Version number ca assembly  
Nhng assembly khác (kcversion number ca assembly) mà assembly ny tùy thuc vào để chy  
Types (classes và members) mà assembly ny cho xut khu  
Assembly ny đòi hi điu kin an ninh nào (security permissions)  
Manifest cho phép ta dùng hơn mt version ca assembly (tương đương vi DLL trước đây) cùng mt lúc. Từ  
đây không còn register DLL na. Thay vào đó, ta chcn copy các assembly vào mt subfolder /bin ca  
chương trình chính.  
Quyết định ca bn  
Sau khi biết qua v.NET, câu hi bn sẽ đặt ra là bn có nên hc lp trình trên .NET hay không. Nói chung, về  
lp trình có nhiu tôn giáo như VC++/Java, VB6, Delphi ..v.v.. Bn có thchn gia C# và VB.NET. Đối vi  
VB6 programmers, hc lp trình VB.NET smt mt thi gian, nhưng không khó. Nên nhrng .NET không  
phi chcho ta các ngôn nglp trình, mà cmt hthng trin khai phn mm chú trng vào mc tiêu hơn là  
cách thc. Các li ích .NET cng hiến cho bn cách thc tin là:  
Kthut .NET shoành hành trên giang htrong t5 đến 10 năm ti.  
Tính trung bình, lp trình trong .NET stiết kim thì gicho bn t25% đến 50% so vi trước đây. Lý do là  
trong .NET bn snghiên cu để dùng component nào nhiu hơn là tht sviết code. Hơn na, hu như  
code nào bn cn phi viết, bn sdùng nó li trong tương lai. Và bo trì .NET code thì li càng khe hơn  
trước đây, vì chính bn có viết bao nhiêu code (có thbbugs) đâu mà bo trì.  
Do đó, có ltrong tương lai .NET programmers chúng ta sngủ đến 10 gisáng mi thc, mt ngày chcn  
làm vic vài tiếng, rnh rang để làm vườn, câu cá.  
Trong bài ti ta shc vVisual Studio.NET interface và bt đầu viết thmt program Demo  
Bài 2  
Visual Studio.NET  
Visual Studio.NET  
Để chy VisualStudio.NET bn cn phi Set Time ca Windows li trước cui tháng 7,2001,  
eg: 1-July-2001.  
Visual Studio.NET Beta 2 hin nay có Service Pak 2, nó cho phép ta dùng Visual Studio.NET  
Beta 2 sau ngày 31-July-2001, tc là không có time-bomb. Nếu VS.NET version ca bn bgii  
hn vthi gian nói trên, ttrong VS.NET bn có thdownload Service Pak 2 để cài đặt bng  
cách dùng IDE Menu Command Help | Check for Updates.  
Có hai cách để bt đầu mt project mi trong VS.NET. Hoc Click New Project trong trang  
Web StartPage như dưới đây:  
Hoc dùng Menu command File | New | Project ging như trong VB6 IDE:  
11  
Khi Add New Project, Name slà subfolder name ca New Project. Bn có thchn VB.NET,  
C# hay VC++.NET project. Trong tương lai chúng ta schnhm vào VB.NET và C# thôi.  
Ngoài ra SetUp and Deployment bây gilà mt loi project nm trong IDE ca Visual  
Studio.NET, ta không cn phi chy riêng chương trình Package and Deployment bên ngoài  
VB6 IDE như trước đây.  
Solution trong VS.NET có thcha hơn mt Project và bao gm tt cnhng files bn lit ra  
là cn thiết cho Solution. Nếu mt trong nhng files y bthay đổi bên ngoài VS.NET, khi  
VS.NET khám phá ra nó sload vào trong VS.NET cho bn nếu bn đồng ý.  
Để mmt Solution/Project có sn, bn có thclick link ca tên project trên trang StartPage,  
hay dùng Menu command File | Open | Project , hay Menu Command File | Recent Projects.  
Visual Studio.NET IDE  
12  
Giao din ca VS.NET có nhng đặc đim ging như Delphi và Visual InterDev chcode  
được generated tự động, Windows nm chung thành Tab set hay float khp nơi, và htrợ  
Solution rt thích hp cho vic trin khai ca cả đội.  
Toolbox bên trái cha Controls cho Windows Forms, Web Forms, General Components,  
Data Components, HTML tags, XML Schema tools v.v... Khi mt Form đang hin th, click  
lên mt button trong Toolbox để chn Tool Set bn cn. Toolbox trng thái Fixed displayed  
(như trong hình trên) khi cây ghim phía trên đâm xung. Bn có thclick cây ghim cho nó nm  
ngang và vertical Toolbox tab hin ra bên trái. Lúc y, Toolbox trong trng thái Auto Hide  
(hin ra/rút vào) như dưới đây:  
Bn có thgi hu hết các Windows hin thbng cách dùng Menu commands View, View |  
Other Windows Debug | Windows:  
13  
Các Windows bên phi có thfloat, nm chng lên nhau thành nhng Tabs trong mt Window  
set hay nm cnh nhau vertically tiled. Nm Tittle bar để di nguyên mt Window set đi. Nm  
Window Tab ca mt Window set để kéo chmt Window ra. Bn có thể để chng hai Windows  
li vi nhau bng cách nm Tittle bar ca mt Window để chng lên mt Window khác. Thử  
nhích đi, nhích li, trước khi buông Window ra để làm quen vi kết qu.  
Phía dưới có Task List Window để bn gissách vdin tiến ca dán và qun lý cả đội.  
Khi bn dùng menu command Build | Build để compile program, nếu có errors chúng sẽ được  
hin thtrong Task List Window. Double click lên mt hàng error để mang cursor đến chgây  
ra error y trong code window.  
Trong hình dưới đây, ta cý comment out hàng Dim sw As StreamWriter:  
Ngoài ra, để Debug bây gibn có Output Window để in ra các messages mà trong VB6 bn  
dùng Immediate Window. Thí dtrong VB6 bn viết:  
14  
Debug.Print "Count=" & CStr(Count)  
để in ra trong Immediate Window, thì trong VB.NET bn có thviết:  
Console.WriteLine("Count= {0}", Count)  
để in ra trong Output Window.  
Dĩ nhiên bn vn có thtiếp tc dùng Immediate Window trong công tác Debug như trước đây  
trong VB6.  
Chưa hết, VS.NET còn cho bn Command Window để ta có thenter nhng VS.NET  
commands để manipulate IDE, xlý macros, .v.v  
Để hin thWindow ny bn dùng menu command View | Other Windows | Command  
Window. Để tin hơn, bn drag title bar ca nó để chng lên tab bar ca Task List và Output  
windows.  
Nếu ta enter mt command như:  
File.AddNewProject  
IDE shin thAdd New Project dialog.  
VS.NET htrMacro để bn có threcord playback mt chui công tác.  
Phương tin Integrated Debugging cho ta Debug Menu, Call Stack Window, Breakpoints  
Window Watch and Value Display Windows.  
Thường thường bn sAdd Reference các .NET components. Nhưng bn cũng có thdùng  
ActiveX (có sn trong VB6) trong .NET application bng cách Add Reference COM (click Tab  
COM trên Add Reference Dialog). .NET sgói ActiveX thành mt NET component (click Yes  
trli câu hi "Would you like to have a wrapper generated for you?"). Ngoài ra dùng Add  
Reference Projects để refer đến DLL ca các User developed DLL.  
15  
Demo Program  
Trong chương trình biu din ny, ta dùng giao din hu như hoàn toàn bng chVit. Ta có  
thể đánh chVit (Unicode) cho Title Bar, Menu, TextBox, ListBox .v.v..  
Nếu bn cn mt key input software cho chVit htrUnicode thì download VPS, Vietkey  
hay Unikey.  
Các documents như Form, XML .v.v. trong .NET project đều được Saved vi UTF-8  
encoding. Bn có thDownload source code ca program demo ny ti đây.  
Trong program Sthú Saigon ny ta có hai Listboxes. Khi chy, bn có thdrag tên các loi  
thú tListbox1 (bên trái) để drop vào Listbox2 (bên phi). Phía dưới là mt Label dùng để hin  
thngày gi. Có mt button Lưu trdanh sách để ta save data trong Listbox2 vào file  
animal.txt trong subFolder bin. Ngoài ra bn cũng có thdùng Main menu Item Đọc danh  
sách để Load data tfile animal.txt vào Listbox2.  
16  
Nhng components không cn phi hin ra lúc runtime như Timer, Menu, Tooltip .v.v. nm  
trong mt Component Tray (mâm) riêng. Mun Edit MainMenu, click lên MainMenu1 icon ri  
đánh trc tiếp vào MainMenu. Thêm các menuitems mi bng cách đánh thng vào các chỗ  
có chType Here. Lưu ý các Tabs bên trên Editing Area khi bn mnhiu forms.  
Edit MainMenu, insert mt Separator  
Chú ý danh sách các References được lit kê trong Solution Explorer.  
17  
Edit Shortcut cho mt menu item.  
Button bây gichng nhng có thcha hình mà còn cho bn chn vtrí ca hình trong  
button bng ImageAlign na.  
Bn có thAnchor mt Button để nó dính vào mt góc ca form để khi form resizes thì Button  
chy theo góc y ca form. Ở đây ta click hai thanh Dưới Phi cho chúng trnên màu đen  
để chn Anchor Bottom Right.  
18  
Trong lúc thiết kế ta có thedit các List items ca mt Listbox bng cách mproperty Items  
Collection ra và Edit vào mt trang.  
Walk Through Code  
Trong .NET, các classes được chia ra thành nhiu nhóm như System.IO, System.XML,  
System.Data, System.Drawing ..v.v..  
Ngoài ra trong mi nhóm li còn chia thành nhng nhóm con, cháu như  
System.Windows.Forms, System.Windows.Collections, System.Windows.Diagnostics, .v.v..  
Mc du mt khi đã Project | Add Reference các .NET components y ta có thdùng chúng  
trong program nhưng vn phi biên mt tên dài như System.IO.StreamReader để tránh ln  
ln. Để có thviết tên class gn hơn ta dùng Imports như Imports System.IO, sau đó ta chỉ  
cn viết StreamReader đủ. Công vic Imports ny được gi là importing Namespace (ca  
System.IO).  
Tương tnhư thế, để có thtiếp tc dùng các Functions Left, Right, Mid ca VB6 trong .NET  
ta có ththêm câu Imports VB6 = Microsoft.VisualBasic ở đầu chương trình. Sau đó ta có  
thviết:  
AppPath = VB6.Left(AppPath, Pos)  
Nguyên program chúng ta ti đây là Public Class Form1. Form1 tha kế standard form class  
ca .NET Framework nên ta declare:  
19  
Inherits System.Windows.Forms.Form  
Imports System.IO  
Imports VB6 = Microsoft.VisualBasic  
Public Class Form1  
Inherits System.Windows.Forms.Form  
Dim AppPath As String  
Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  
MenuItem4.Click  
End ' Terminate the program  
End Sub  
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  
MyBase.Load  
' Obtain the folder where this program EXE resides and initialise tooltip  
Dim AppPath As String  
Dim Pos As Integer  
' Fetch full pathname of the EXE file  
AppPath = System.Reflection.Assembly.GetExecutingAssembly.Location  
' Locate the last slash in the pathname string  
Pos = InStrRev(AppPath, "/")  
' Extract the part up to the backslash  
AppPath = VB6.Left(AppPath, Pos)  
' Initialise the tooltip for Listbox1  
ToolTip1.SetToolTip(ListBox1, "Xin nm kéo tên mt con thú qua Listbox bên phi")  
End Sub  
Hãy xem cách viết mt Event Handler như:  
Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As  
System.EventArgs) Handles MenuItem4.Click  
Khác vi VB6, nó có thêm các chHandles MenuItem4.Click phía cui để nói handling  
event Click ca MenuItem4. Mi Event Handler đều được passed cho hai parameters: ByVal  
sender As System.Object ByVal e As System.EventArgs. Parameter thnht, sender,  
là Object chủ động chuyn RaiseEvent, còn e là Event có cha nhiu dkin khác nhau tùy  
theo tình hung. Khi edit code bn có thnhIntellisense ca IDE giúp đỡ cho biết parameter  
e cha nhng dkin gì.  
Trong .NET, vn đề handling event không phi là mt điu bí him như trong VB6. Khi mt  
control có thRaiseEvent thì chng nhng mt, mà nhiu controls khác đều có thĐăng ký  
(Register) để được Thông báo (Notified) khi Event y xãy ra.  
Control RaiseEvent được gi là Publisher (Nhà Xut Bn), các controls mun handle event  
được gi là Subcribers (nhng Người Đặt Mua dài hn) . Dĩ nhiên cách handle event ca mi  
control đều khác nhau, du rng được passed cho cùng hai parameters. Các EventHandlers  
ny được gi là Delegates (nhng Nhà Đại Din lãnh trách nhim gii quyết mt sc).  
Do đó, ta có thdùng vn vn mt EventHandler để handle nhiu Event khác nhau, xut phát  
tnhiu Objects. Nói cho đơn gin ra, sau khi ta đã đăng ký mt hay nhiu Delegates (tc là  
EventHandler Subs), thì khi Event xy ra, các EventHandler Subs y sẽ được xlý.  
Nếu bn vn còn thy khó hiu thì hãy đọc thí dny. Tưởng tượng bn làm biếng nu ăn  
nên đặt nhà hàng giao cơm mi ngày đến tn nhà. Có hai cách để bn nhn "gà-mên" cơm:  
1. Người giao cơm sẽ để "gà-mên" cơm trước nhà, cnh bên hp thư. Khi đi làm v, bn sẽ  
mang nó vô nhà. Trong trường hp ny bn xlý công vic khi nào tin, tc là lúc về đến  
nhà. Cách ny có đim bt li là hôm nào bn đi làm vtrthì cơm có thbthiêu vì tri  
nóng.  
2. Bn đưa chìa khóa nhà cho người giao cơm gi. Khi giao cơm, người y stự động mở  
ca vô nhà để "gà-mên" thng vào trong tlnh. Trong cách ny Event GiaoCơm được  
handled bng EventHandler Sub OpenDoorPutIntoFridge, do người giao cơm xlý, chớ  
không phi chính bn.  
Như thế, là Subscriber (người ăn cơm tháng giao tn nhà) bn register EventHandler  
"Sub OpenDoorPutIntoFridge" vi người giao cơm qua vic đưa chìa khóa. Khi Event  
"GiaoCơm" xãy ra, người giao cơm tự động executes Sub OpenDoorPutIntoFridge. Kỹ  
20  
Tải về để xem bản đầy đủ
pdf 133 trang Thùy Anh 04/05/2022 6480
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Hướng dẫn lập trình Visual Basic.Net", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_huong_dan_lap_trinh_visual_basic_net.pdf