Các bài tp Microsoft .NET 1
MC LC
Bài 1 Microsoft .NET Framework.................................................................................2
Bài 2 Visual Studio.NET .............................................................................................13
Bài 3 Nhng khác bit gia VB.NET vi VB6 ...........................................................37
Bài 4 Nhng chc nng i Tng mi ca VB.NET (phn I)..................................59
Bài 5 Nhng chc nng i Tng mi ca VB.NET (phn II) ................................68
Bài 6 Nhng chc nng i Tng mi ca VB.NET (phn III)...............................82
Bài 7 Nhng chc nng i Tng mi ca VB.NET (phn IV)...............................95
Bài 8 Nhng chc nng mi trong giao din ca s ca VB.NET (phn I)..............112
Bài 9 Nhng chc nng mi trong giao din ca s ca VB.NET (phn II).............124
Bài 10 Nhng chc nng mi trong giao din ca s ca VB.NET (phn III) .........134
Bài 11 Nhng chc nng mi trong giao din ca s ca VB.NET (phn IV) .........144
Bài 12 Nhng chc nng mi trong giao din ca s ca VB.NET (phn V) ..........161
Các bài tp Microsoft .NET 2
Bài 1
Microsoft .NET Framework
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 lt 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ó th rt lâu, bn phi kiên nhn ch cho đn khi nó kt
thúc. Nu không, khi cài đt có th b than phin là thiu files.
K đó, trc ht chy Setup.exe ca Windows Component Update nh
di đây, click No khi Warning dialog hin ra:
Tip theo, chy Setup.exe ca Visual Studio.NET:
Bn nên có CPU Pentium III, 500MHz tr lên, vi 256 MB RAM và ít
nht 10GB Harddisk. V OS bn nên dùng Windows 2000 (Professional
Các bài tp Microsoft .NET 3
hay Server) hay Windows XP. Lý do chính là các versions Windows này
h tr Unicode và có Internet Information Server (IIS) h tr ASPX đ ta
dùng cho ASP.NET.
M các Samples ca QuickStart
Trc khi expand Samples ca Quickstart bn cn phi cài đt IIS. Nu
cha làm vic y bn b CD ca Windows2000 hay WindowsXP vào đ
install IIS component.
QuickStart Samples ca .NET Framework cha các gii thích cn bn và
nhiu thí d. expand các Samples doubleclick Webpage
Starthere.htm nh trong hình di đây:
Khi trang Web ca QuickStart hin ra, click QuickStart, tutorials and
samples ri sau đó theo ch dn tng bc.
Trang Framework SDK QuickStart Tutorials cho ta các bài tp ca
ASP.NET, Windows Forms và How Do I...
Nh đ nguyên các folders ca Unzipped files (E:\CD, E:\CD\WINCUP),
đng delete chúng, vì .NET s còn dùng chúng. Ngoài ra, nu sau này
.NET b corrupted vì conflict vi các application software khác, bn có
th cài đt .NET li.
Gii hn ca Software Tools hin gi
Các bài tp Microsoft .NET 4
Architect ca application software hin gi có nói chung ba tng (three
tiers): tng giao din (Presentation Tier), tng gia (Middle Tier) và tng
d kin (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. T browser based Client ta dùng http đ ni vi middle tier qua
IIS/ASP (có th dù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, nhng cách trin khai COM vi nhng
Object Oriented Programming concepts rc ri hn bình thng. Ta phi
thit 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: Thng là relational database nh Microsoft SQL Server hay
Oracle. Ngoài ra còn có Exchange hay các database xa ca mainframe.
Do đó ta thy:
• Desktop tools không thích hp cho Distributed System
hay Internet
Phi dùng nhiu th codes 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 c ADO dù là tin dng
cng đòi hi Client luôn luôn connect vi Server. iu này không thích
Các bài tp Microsoft .NET 5
hp cho Internet applications, vì bn cht ca Internet là stateless (không
gi trng 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, ch có mt version đc chp
nhn. Nu version mi nht ca mt DLL không
compatible vi các versions trc đó mà applications
trên máy đang cn thì có rc ri.
Gii hn ca VB6
• Thiu kh nng inheritance (tha k) và mt s Object
Oriented features khác.
• Kh nng Error handling gii hn: On Error Goto ...,
On Error Resume Next
Các bài tp Microsoft .NET 6
• Nhiu khi cn phi gi Windows API đ làm nhng
vic VB6 không h tr: vic này không t nhiên và
đôi khi nguy him.
• Không có multi-threading: không th đoán trc
response ca code chy trong các windows ca cùng
mt VB6 application. Ngay c gii quyt vn đ
multitasking bng Timers cng không đáng tin cy.
• Không d dùng chung vi các ngôn ng khá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 nm 1998, lúc đu có tên là Next
Generation Windows Services (NGWS). Nó đc thit k hoàn toàn t
con s không đ dùng cho Internet. Vin tng ca Microsoft là xây dng
mt globally distributed system, dùng XML (cha nhng databases tí
hon) làm cht keo đ kt hp chc nng ca nhng computers khác nhau
trong cùng mt t chc hay trên khp th gii.
Nhng computers này có th là Servers, Desktop, Notebook hay Pocket
Computers, đu có th chy cùng mt software da trên mt platform duy
nht, đc lp vi hardware và ngôn ng lp trình. ó là .NET
Framework. Nó s tr thành mt phn ca MS Windows và s đc port
qua các platform khác, có th ngay c Unix.
Mc du hãy còn là Beta, .NET Framework rt stable và Visual
Studio.NET rt ít bugs, có th dùng cho software development ngay t
bây gi. Hin nay đã có mt s sách v lp trình .NET do
Wrox và
Oreilly xut bn.
Các phn chính ca Microsoft.NET Framework:
.NET application đc chia ra làm hai loi: cho Internet gi là ASP.NET,
Các bài tp Microsoft .NET 7
gm có Web Forms và Web Services và cho desktop gi là Windows
Forms.
Windows Forms ging nh Forms ca VB6. Nó h tr Unicode hoàn
toàn, rt tin cho ch Vit 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 đ x lý 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ó th gi dùng t các
URL trên Internet, thí d nh Credit Card authorisation.
ADO.NET là mt loi cache database nho nh (gi là disconnected
database) đ thay th ADO. Thay vì application connects vnh vin vi
database m qua ADO, application trong .NET làm vic vi portable
database ch cha mt hai tables, là copy t database m. Khi nào cn,
portable database này (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 d dàng và nh ký.
XML đc ym tr ti đa. Nm phía sau ADO.NET là XML. XML có
th là Table of records trong ADO.NET hay Tree of nodes trong DOM
(Document Object Model).
IO đc h tr bng toàn b Stream k c Memory Stream và
StreamReader/StreamWriter. Thêm vào là DataFormatting cho
Serialisation đ cha Object xung binary file hay text file.
TCP/IP và http là hai protocols thông dng nht trong .NET, nhng
chúng làm vic phía sau sân khu giúp ta gi mt remote procedure (nm
trên computer khác) d dàng nh mt local procedure. K thut y gi là
Remoting.
Các bài tp Microsoft .NET 8
Security h tr Cryptography, Permissions và Policy.
Diagnostics cho ta Debug và Trace.
Threading rt tin và đn gin đ implement Lightweight Process. Vn
đ Timing trong .NET program rt linh đng, hiu qu và chính xác.
Vic thit k Common Language Runtime nhm vào các mc tiêu chính
sau đây:
• Vic trin khai đn gin và nhanh hn: developers s
dành thì gi quyt đnh ráp nhng software
components nào li vi nhau nhiu hn là lp trình
tht s.
• Các công tác thit yu ("plumbing") nh memory
management, process communication .v.v. đc lo
liu t đng.
• Các công c h tr rt đ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"): ch
cn 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 thit. Có l trong tng lai
Microsoft cài .NET framework chung vi Windows.
• Dùng cho t WindowsCE đn Desktop, đn Web
(scalability).
Các bài tp Microsoft .NET 9
Metadata
Metadata là các d kin ct ngha cho ta bit v d kin. Thí d XML
Schema ca mt XML file là metadata ct ngha v data structure ca
data trong XML file. Chính cái XML Schema cng là mt XML file. Các
.NET application components, gi là Assembly, cha rt nhiu metadata
đ ct ngha v chính nó (self describing). Tìm bit v mt .NET
application đ có th làm vic vi nó thì gi là Reflection.
H tr và phi hp mi ngôn ng lp trình
Common Language Runtime (CLR) là trung tâm đim ca .NET
Famework, nó là hm máy đ chy các nng tính ca .NET. Trong .NET,
mi ngôn ng lp trình đu đc compiled ra Microsoft Intermediate
Language (IL) ging ging nh byte code ca Java. Nh bt buc mi
ngôn ng đu phi dùng cùng các loi data types (gi là Common Type
System) nên Common Language Runtime có th kim soát mi interface,
gi gia các components và cho phép các ngôn ng có th hp tác nhau
mt cách thông sut. Tc là trong .NET, VB.NET program có th inherit
C# program và ngc li mt cách hoàn toàn t nhiên.
iu này chng nhng giúp các VC++ hay Java programmers bt đu
Các bài tp Microsoft .NET 10
dùng C# mt cách d dàng mà còn làm cùng mt d án vi VB.NET
programmers na.
Nu VC++ linh đng và hiu nng hn VB6, thì C# chng khác gì
VB.NET. Bn có th port C# code qua VB.NET code rt d dàng. Vì
source code VC++ và Java gn gi C# hn VB6 vi VB.NET nên ngoài
đi có nhiu C# code hn VB.NET. Do đó, mc du hai ngôn ng
VB.NET và C# đu ngang c nhau, nu dùng C# bn đc li đim có
nhiu source code sn và nht là lâu nay ngi ta vn mang n tng rng
VC++ hay Java programmers mi tht s là các cao th lp trình, và có
khuynh hng tr lng các guru VC++/Java cao hn VB programmers.
Khi chy .NET application, nó s đc compiled bng mt JIT (Just-In-
Time) compiler rt hiu nng ra machine code đ chy. im này giúp
.NET application chy nhanh hn Java interpreted code trong Java
Virtual Machine. Just-In-Time cng có ngha là ch phn code nào cn x
lý trong lúc y mi đc compiled. IL code chy trong CLR đuc nói là
managed code.
.NET code có th chy chung vi ActiveX, nhng 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 gi cá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. Trc đây, mi
khi mt DLL đuc loaded vào memory, system s ghi nhn có bao nhiêu
task dùng nó đ khi task cui cùng chm dt thì system unload DLL và
tr li phn memory nó dùng trc đây đ system dùng cho chuyn khác.
Ch nu allocate memory đ dùng mà không nh dispose nó thì s b
memory leak (r ), ln ln ta dùng ht memory, b bt buc phi reboot
Các bài tp Microsoft .NET 11
OS. Nhng bây gi .NET dùng mt process đc lp đ làm vic garbage
collection. Cái phn ng ph ca vic này là khi ta đã Dispose mt
Object ri, ta vn không bit chc chn chng nào nó mi tht s bin
mt. Vì garbage collector là mt low priority process làm vic trong
background, ch khi nào system memory gn cn nó mi nâng cao
priority lên. D nhiên, nu mun, ta có th đòi hi system Dispose mt
Object ngay lp tc.
Assembly
.NET application xây dng t các assemblies. Mi assembly phi có mt
manifest. Có th nó nm riêng trong mt file hay nm bên trong mt
module. Manifest cha nhng metadata sau đây:
• Tên và Version number ca assembly
• Nhng assembly khác (k c version number ca
assembly) mà assembly này tùy thuc vào đ chy
Các bài tp Microsoft .NET 12
• Types (classes và members) mà assembly này cho
xut khu
• Assembly này đòi hi điu kin an ninh nào (security
permissions)
Manifest cho phép ta dùng hn mt version ca assembly (tng đng
vi DLL trc đây) cùng mt lúc. T đây không còn register DLL na.
Thay vào đó, ta ch cn copy các assembly vào mt subfolder /bin ca
chng trình chính.
Quyt đnh ca bn
Sau khi bit 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ó th chn gia C# và VB.NET.
i vi VB6 programmers, hc lp trình VB.NET s mt mt thi gian,
nhng không khó. Nên nh rng .NET không phi ch cho ta các ngôn
ng lp trình, mà c mt h thng trin khai phn mm chú trng vào
mc tiêu hn là cách thc. Các li ích .NET cng hin cho bn cách thc
tin là:
• K thut .NET s hoành hành trên giang h trong t 5
đn 10 nm ti.
• Tính trung bình, lp trình trong .NET s tit kim thì
gi cho bn t 25% đn 50% so vi trc đây. Lý do
là trong .NET bn s nghiên cu đ dùng component
nào nhiu hn là tht s vit code. Hn na, hu nh
code nào bn cn phi vit, bn s dùng nó li trong
tng lai. Và bo trì .NET code thì li càng khe hn
trc đây, vì chính bn có vit bao nhiêu code (có th
b bugs) đâu mà bo trì.
Do đó, có l trong tng lai .NET programmers chúng ta s ng đn 10
gi sáng mi thc, mt ngày ch cn làm vic vài ting, rnh rang đ làm
vn, câu cá.
Trong bài ti ta s hc v Visual Studio.NET interface và bt đu vit th
mt program Demo .
Các bài tp Microsoft .NET 13
Bài 2
Visual Studio.NET
Visual Studio.NET
chy VisualStudio.NET bn cn phi Set Time ca Windows li trc
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. Nu VS.NET version ca bn b gii hn v thi gian nói
trên, t trong VS.NET bn có th download 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 di đây:
Hoc dùng Menu command File | New | Project ging nh trong VB6
IDE:
Các bài tp Microsoft .NET 14
Khi Add New Project, Name s là subfolder name ca New Project. Bn
có th chn VB.NET, C# hay VC++.NET project. Trong tng lai chúng
ta s ch nhm vào VB.NET và C# thôi. Ngoài ra SetUp and Deployment
bây gi là mt loi project nm trong IDE ca Visual Studio.NET, ta
không cn phi chy riêng chng trình Package and Deployment bên
ngoài VB6 IDE nh trc đây.
Solution trong VS.NET có th cha hn mt Project và bao gm tt c
nhng files bn lit ra là cn thit cho Solution. Nu mt trong nhng
files y b thay đi bên ngoài VS.NET, khi VS.NET khám phá ra nó s
load vào trong VS.NET cho bn nu bn đng ý.
Các bài tp Microsoft .NET 15
m mt Solution/Project có sn, bn có th click 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
Các bài tp Microsoft .NET 16
Giao din ca VS.NET có nhng đc đim ging nh Delphi và Visual
InterDev ch code đc generated t đng, Windows nm chung thành
Tab set hay float khp ni, và h tr 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ó th click
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 di đây:
Các bài tp Microsoft .NET 17
Bn có th gi hu ht các Windows hin th bng cách dùng Menu
commands View, View | Other Windows và Debug | Windows:
Các Windows bên phi có th float, 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 ch mt Window ra. Bn có th đ chng hai
Các bài tp Microsoft .NET 18
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, trc khi buông
Window ra đ làm quen vi kt qu.
Phía di có Task List Window đ bn gi s sách v din tin ca d
án và qun lý c đi. Khi bn dùng menu command Build | Build đ
compile program, nu có errors chúng s đc hin th trong Task List
Window. Double click lên mt hàng error đ mang cursor đn ch gây ra
error y trong code window.
Trong hình di đây, ta c ý comment out hàng Dim sw As
StreamWriter:
Ngoài ra, đ Debug bây gi bn có Output Window đ in ra các
messages mà trong VB6 bn dùng Immediate Window. Thí d trong VB6
bn vit:
Debug.Print "Count=" & CStr(Count)
đ in ra trong Immediate Window, thì trong VB.NET bn có th vit:
Console.WriteLine("Count= {0}", Count)
Các bài tp Microsoft .NET 19
đ in ra trong Output Window.
D nhiên bn vn có th tip tc dùng Immediate Window trong công tác
Debug nh trc đây trong VB6.
Cha ht, VS.NET còn cho bn Command Window đ ta có th enter
nhng VS.NET commands đ manipulate IDE, x lý macros, .v.v
hin th Window này bn dùng menu command View | Other
Windows | Command Window. tin hn, bn drag title bar ca nó đ
chng lên tab bar ca Task List và Output windows.
Nu ta enter mt command nh:
File.AddNewProject
IDE s hin th Add New Project dialog.
VS.NET h tr Macro đ bn có th record và playback mt chui công
tác.
Phng tin Integrated Debugging cho ta Debug Menu, Call Stack
Window, Breakpoints Window và Watch and Value Display
Windows.
Thng thng bn s Add Reference các .NET components. Nhng bn
cng có th dùng ActiveX (có sn trong VB6) trong .NET application
bng cách Add Reference COM (click Tab COM trên Add Reference
Dialog). .NET s gói ActiveX thành mt NET component (click Yes tr
Các bài tp Microsoft .NET 20
li 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.
Demo Program
Trong chng trình biu din này, ta dùng giao din hu nh hoàn toàn
bng ch Vit. Ta có th đánh ch Vit (Unicode) cho Title Bar, Menu,
TextBox, ListBox .v.v..
Nu bn cn mt key input software cho ch Vit h tr Unicode thì
download VPS, Vietkey hay Unikey.
Các documents nh Form, XML .v.v. trong .NET project đu đc Saved
vi UTF-8 encoding.
Các bài tp Microsoft .NET 21
Trong program S thú Saigon này ta có hai Listboxes. Khi chy, bn có
th drag tên các loi thú t Listbox1 (bên trái) đ drop vào Listbox2 (bên
phi). Phía di là mt Label dùng đ hin th ngày gi. Có mt button
Lu tr danh sách đ ta save data trong Listbox2 vào file animal.txt
trong subFolder bin. Ngoài ra bn cng có th dùng Main menu Item c
danh sách đ Load data t file animal.txt vào Listbox2.
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 tip vào
MainMenu. Thêm các menuitems mi bng cách đánh thng vào các ch
có ch Type Here. Lu ý các Tabs bên trên Editing Area khi bn m
nhiu forms.
Các bài tp Microsoft .NET 22
Edit MainMenu, insert mt Separator
Các bài tp Microsoft .NET 23
Chú ý danh sách các References đc lit kê trong Solution Explorer.
Edit Shortcut cho mt menu item.
Các bài tp Microsoft .NET 24
Button bây gi chng nhng có th cha hình mà còn cho bn chn v trí
ca hình trong button bng ImageAlign na.
Bn có th Anchor 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 Di và Phi cho chúng tr nên màu đen đ chn Anchor Bottom
và Right.
Các bài tp Microsoft .NET 25
Trong lúc thit k ta có th edit các List items ca mt Listbox bng cách
m property 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ó th dùng chúng trong program