Các bài t p Microsoft .NET 3hay Server hay Windows XP.. Middle Tier: Ch a các rules đ validate data trên client và các businessrules khác.. Có khidùng Microsoft Transaction Server trên
Trang 1Các bài t p Microsoft NET 1
M C L C
Bài 1 Microsoft NET Framework 2
Bài 2 Visual Studio.NET 13
Bài 3 Nh ng khác bi t gi a VB.NET v i VB6 37
Bài 4 Nh ng ch c n ng i T ng m i c a VB.NET (ph n I) 59
Bài 5 Nh ng ch c n ng i T ng m i c a VB.NET (ph n II) 68
Bài 6 Nh ng ch c n ng i T ng m i c a VB.NET (ph n III) 82
Bài 7 Nh ng ch c n ng i T ng m i c a VB.NET (ph n IV) 95
Bài 8 Nh ng ch c n ng m i trong giao di n c a s c a VB.NET (ph n I) 112
Bài 9 Nh ng ch c n ng m i trong giao di n c a s c a VB.NET (ph n II) 124
Bài 10 Nh ng ch c n ng m i trong giao di n c a s c a VB.NET (ph n III) 134
Bài 11 Nh ng ch c n ng m i trong giao di n c a s c a VB.NET (ph n IV) 144
Bài 12 Nh ng ch c n ng m i trong giao di n c a s c a VB.NET (ph n V) 161
Trang 2Các bài t p Microsoft NET 2
Bài 1 Microsoft NET Framework
Cài đ t Visual Studio.NET Beta 2
Visual Studio.NET n m trong 3 CDs, g m có 4 files:
Vi c Unzip files có th r t lâu, b n ph i kiên nh n ch cho đ n khi nó k tthúc N u không, khi cài đ t có th b than phi n là thi u files
K đó, tr c h t ch y Setup.exe c a Windows Component Update nh
d i đây, click No khi Warning dialog hi n ra:
Ti p theo, ch y Setup.exe c a Visual Studio.NET:
B n nên có CPU Pentium III, 500MHz tr lên, v i 256 MB RAM và ít
nh t 10GB Harddisk V OS b n nên dùng Windows 2000 (Professional
Trang 3Các bài t p 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 đ tadùng cho ASP.NET
M các Samples c a QuickStart
Tr c khi expand Samples c a Quickstart b n c n ph i cài đ t IIS N u
ch a làm vi c y b n b CD c a Windows2000 hay WindowsXP vào đinstall IIS component
QuickStart Samples c a NET Framework ch a các gi i thích c n b n vànhi u thí d expand các Samples doubleclick Webpage
Starthere.htm nh trong hình d i đây:
Khi trang Web c a QuickStart hi n ra, click QuickStart, tutorials and
samples r i sau đó theo ch d n t ng b c
Trang Framework SDK QuickStart Tutorials cho ta các bài t p c a
ASP.NET, Windows Forms và How Do I
Nh đ nguyên các folders c a Unzipped files (E:\CD, E:\CD\WINCUP),
đ ng delete chúng, vì NET s còn dùng chúng Ngoài ra, n u sau này.NET b corrupted vì conflict v i các application software khác, b n có
th cài đ t NET l i
Gi i h n c a Software Tools hi n gi
Trang 4Các bài t p Microsoft NET 4
Architect c a application software hi n gi có nói chung ba t ng (threetiers): t ng giao di n (Presentation Tier), t ng gi a (Middle Tier) và t ng
d ki n (Data Tier):
Presentation Tier: Trong desktop Client ta dùng VB6 và n i v i middle
tier qua DCOM Trong browser based Client ta dùng Javascript hay Javaapplet T browser based Client ta dùng http đ n i v i middle tier quaIIS/ASP (có th dùng COM đây)
Middle Tier: Ch a các rules đ validate data trên client và các businessrules khác Ta dùng VB6 đây, nh ng cách tri n khai COM v i nh ngObject Oriented Programming concepts r c r i h n bình th ng Ta ph ithi t k sao cho các components scale well (dùng cho m i c ) Có khidùng Microsoft Transaction Server trên Windows NT hay COM+Services trên Windows 2000 L p ráp các versions c a components là
m t thách th c l n
Nhi u khi middle tier còn nói chuy n v i các database qua HTTP, ADO
và CDO (Collaborative Data Objects), v.v
Data Tier: Th ng là relational database nh Microsoft SQL Server hayOracle Ngoài ra còn có Exchange hay các database x a c a mainframe
Tùy thu c quá nhi u vào central database: Ngay c ADO dù là ti n d ng
c ng đòi h i Client luôn luôn connect v i Server i u này không thích
Trang 5Các bài t p Microsoft NET 5
h p cho Internet applications, vì b n ch t c a Internet là stateless (không
gi tr ng thái), m i l n c n làm vi c m i connect l i m t chút thôi
• DLL "Hell": Các ActiveX c n ph i đ c registered
v i Windows Registry, ch có m t version đ c ch p
nh n N u version m i nh t c a m t DLL khôngcompatible v i các versions tr c đó mà applicationstrên máy đang c n thì có r c r i
Gi i h n c a VB6
• Thi u kh n ng inheritance (th a k ) và m t s ObjectOriented features khác
• Kh n ng Error handling gi i h n: On Error Goto ,
On Error Resume Next
Trang 6Các bài t p Microsoft NET 6
• Nhi u khi c n ph i g i Windows API đ làm nh ng
vi c VB6 không h tr : vi c này không t nhiên vàđôi khi nguy hi m
• Không có multi-threading: không th đoán tr cresponse c a code ch y trong các windows c a cùng
m t VB6 application Ngay c gi i quy t v n đmultitasking b ng Timers c ng không đáng tin c y
• Không d dùng chung v i các ngôn ng khác nhVC++
• Không ti n cho Web development: WebClass khôngthành công l m Ít ai ch u cho ta cài ActiveX trên máy
c a 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 s không đ dùng cho Internet Vi n t ng c a Microsoft là xây d ng
m t globally distributed system, dùng XML (ch a nh ng databases tí
hon) làm ch t keo đ k t h p ch c n ng c a nh ng computers khác nhautrong cùng m t t ch c hay trên kh p th gi i
Nh ng computers này có th là Servers, Desktop, Notebook hay PocketComputers, đ u có th ch y cùng m t software d a trên m t platform duy
nh t, đ c l p v i hardware và ngôn ng l p trình ó là NETFramework Nó s tr thành m t ph n c a MS Windows và s đ c portqua các platform khác, có th ngay c Unix
M c d u hãy còn là Beta, NET Framework r t stable và VisualStudio.NET r t ít bugs, có th dùng cho software development ngay tbây gi Hi n nay đã có m t s sách v l p trình NET do Wrox vàOreilly xu t b n
Các ph n chính c a Microsoft.NET Framework:
.NET application đ c chia ra làm hai lo i: cho Internet g i là ASP.NET,
Trang 7Các bài t p Microsoft NET 7
g m có Web Forms và Web Services và cho desktop g i là Windows
Forms.
Windows Forms gi ng nh Forms c a VB6 Nó h tr Unicode hoàn
toàn, r t ti n cho ch Vi t và th t s Object Oriented
Web Forms có nh ng Server Controls làm vi c gi ng nh các Controls
trong Windows Forms, nh t là có th dùng codes đ x lý Events y h t
nh c a Windows Forms
i m khác bi t chánh gi a ASP (Active Server Pages) và ASP.NET làtrong ASP.NET, ph n đ i di n visual components và code n m riêngnhau, không l n x n nh trong ASP Ngoài ra ASP.NET code hoàn toànObject Oriented
Web Services gi ng nh nh ng Functions mà ta có th g i dùng t cácURL trên Internet, thí d nh Credit Card authorisation
ADO.NET là m t lo i cache database nho nh (g i là disconnected
database) đ thay th ADO Thay vì application connects v nh vi n v idatabase m qua ADO, application trong NET làm vi c v i portabledatabase ch ch a m t hai tables, là copy t database m Khi nào c n,portable database này (ADO.NET) s đ c reconciled v i 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ó ch a original data
l n data m i nh t nên Rollback trong ADO.NET r t d dàng và nh ký.
XML đ c y m tr t i đa N m 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 b ng toàn b Stream k c Memory Stream và
StreamReader/StreamWriter Thêm vào là DataFormatting cho Serialisation đ ch a Object xu ng binary file hay text file
TCP/IP và http là hai protocols thông d ng nh t trong NET, nh ng
chúng làm vi c phía sau sân kh u giúp ta g i m t remote procedure (n mtrên computer khác) d dàng nh m t local procedure K thu t y g i là
Remoting.
Trang 8Các bài t p Microsoft NET 8
Security h tr Cryptography, Permissions và Policy.
Diagnostics cho ta Debug và Trace.
Threading r t ti n và đ n gi n đ implement Lightweight Process V n
đ Timing trong NET program r t linh đ ng, hi u qu và chính xác
Vi c thi t k Common Language Runtime nh m vào các m c tiêu chínhsau đây:
• Vi c tri n khai đ n gi n và nhanh h n: developers sdành thì gi quy t đ nh ráp nh ng softwarecomponents nào l i v i nhau nhi u h n là l p trình
• Cài đ t đ n gi n và an toàn (no more DLL "hell"): ch
c n xcopy files, gi ng nh th i vàng son c a DOS Lý
do là NET application ch y trên NET framework,
m t khi ta đã cài NET framework vào máy r i thì có
đ y đ m i DLL c n thi t Có l trong t ng laiMicrosoft cài NET framework chung v i Windows
• Dùng cho t WindowsCE đ n Desktop, đ n Web(scalability)
Trang 166Các bài t p Microsoft NET 166
Gi ng nh trong VB6, property MultiColumn hi n th Items trong
nhi u c t n u đ c set thành True, property SelectionMode n u b ng
MultiExtended thì cho ta select nhi u Items cùng m t lúc.
Tuy nhiên, các Items đ c ch n s có m t trong m t collection chkhông ph i có Selected(i)=True nh trong VB6
Mu n select m t Item lúc run-time ta dùng code nh sau:
' Select three items (2nd, fourth and sixth) from the ListBox.
ListBox1.SetSelected(1, True) ' 1 is index of 2nd item
ListBox1.SetSelected(3, True)
ListBox1.SetSelected(5, True)
Trong thí d t i đây ta có ListBox1 v i danh sách các con v t trong S
Thú Saigon Button List Items s li t kê danh sách này ý cách ta hi n
th m t Item v i expression Listbox1.Items(i).ToString.
Private Sub BtnListItems_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnListItems.Click
Dim i As Integer
Dim Mess As String
' make up the list of Items separated by CarriageReturn/LineFeed
Trang 167Các bài t p Microsoft NET 167
MessageBox.Show(Mess)
End Sub
Sau khi set property SelectionMode c a Listbox1 ra MultiExtended,
code d i đây s li t kê danh sách các items đ c ch n v i index c achúng:
Private Sub BtnListSelectedItems_Click( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnListSelectedItems.Click
Dim i As Integer
Dim Mess As String
' make up the list of Selected Items separated by CarriageReturn/LineFeed
' Collection SelectedIndices contains the index of selecteditems
For i = 0 To ListBox1.SelectedItems.Count - 1
Mess &= (ListBox1.SelectedIndices(i).ToString) & ":" & (ListBox1.SelectedItems(i).ToString) & vbCrLf
Next
' Show the list
MessageBox.Show(Mess, "Selected Items", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub
Trang 168Các bài t p Microsoft NET 168
Items là m t Array of Objects
ListBox c a NET không h tr ItemData nh trong VB6 ItemData là
m t array ch a các con s t ng ng v i nh ng Items trong List array
c a ListBox trong VB6 T c là m i ListBox Item trong Vb6 có th đ c
ch đ nh tr c m t con s đ i di n nó Khi user select List(i), ta có th l y
ra ItemData(i) c a List Item y
Th t ra Items c a NET Listbox c ng có th là m t Array of Objects,không nh t thi t ph i là m t collection of Strings nh ta đã dùng
D i đây là code ta đ nh ngh a m t Class tên LBItem, đo n dùng code
th Add m t Array of Objects lo i LBItem vào Listbox1:
Public Class LBItem
Private mList As String
Private mItemData As Integer
' List Item of Listbox
Public Property List() As String
Trang 169Các bài t p Microsoft NET 169
' Function to return a string representing this item for display
Overrides Function ToString() As String
N u ta không ch đ nh DisplayMember, t c là ListBox1.DisplayMember
= "" thì ListBox1 s dùng Function ToString c a LBItem đ hi n th
Ngoài ra, đ tr v m t value gi ng nh ItemData c a List Item ta ch
Trang 170Các bài t p Microsoft NET 170
Dim Objs(5) As LBItem
' Create an array of 6 Objects of LBItem
Dim i As Integer
For i = 0 To 5
Objs(i) = New LBItem()
Objs(i).List = "Line " & i.ToString
Trang 171Các bài t p Microsoft NET 171
Private Sub ListBox1_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ListBox1.SelectedIndexChanged
Nh th ta đã implemented (thi hành) cho NET ListBox m t ch c n ng
t ng đ ng v i ItemData c a ListBox trong VB6
.NET ListBox không h tr Style Checkbox, nh ng ta có th dùng
CheckedListBox.
ComboBox
Vì ComboBox th a k t ListBox nên t t c nh ng gì ta bi t v ListBox
đ u áp d ng cho ComboBox c bi t bây gi ComboBox có property
MaxDropDownItems cho ta quy t đ nh hi n th bao nhiêu items khidanh sách đ c m ra
Kèm theo đây là m t ch ng trình bi u di n ComboBox trong đó ta dùng
Property ValueMember c a ComboBox đ tr v m t tr s đ i di nItem Data trong ComboBox1 đ c loaded t m t Access2000 databasetable b ng code sau đây:
Private Sub frmCombo_Load( ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim ds As New DataSet () ' Instantiate a Dataset
' Instantiate an OleDbDataAdapter for Access2000 database Authors.mdb and return table Authors Dim myData As New OleDbDataAdapter("Select * from Authors",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= \Authors.mdb")
myData.Fill(ds, "Authors") ' Load table Authors into Dataset
Trang 172Các bài t p Microsoft NET 172
Ta truy c p data c a c s d li u b ng cách dùng m t DataAdapter lo i
OleDbDataAdapter khi cho nó m t SQL CommandText: "Select * from Authors" và m t connection string, trong đó có cho bi t database
driver: Microsoft.Jet.OLEDB.4.0 và tên c a database \Authors.mdb.
File Authors.mdb n m chung v i mã ngu n c a ch ng trình trong parent
folder c a folder bin, n i ch a ComboBox.exe.
K đó ta dùng DataAdapter đ b table Authors vào dataset ds Cách làm
vi c này t ng t nh ADO (Active Data Object) trong VB6 Có đi mkhác là Dataset có th ch a nhi u tables (recordsets) và nó ho t đ ng nh
m t cached disconnected database trong b nh K thu t này có tên làADO.NET và ta s bàn thêm nhi u v nó trong t ng lai
M i l n user select m t item m i t ComboBox1, ch ng trình s hi n
th AuthorId, là ValueMember trong Label1.
Private Sub ComboBox1_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Trang 173Các bài t p Microsoft NET 173
End Sub
đây có hai cách đ ta select m t ComboBox item b ng coding Cách
th nh t là cho bi t AuthorId (ValueMember), user clicks button Select
by AuthorId đ th y k t qu :
Private Sub BtnSelectbyAuthorId_Click_1( ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnSelectbyAuthorId.Click
'Use Try to ignore error if operation fails
và cách th hai là cho bi t FullName (DisplayMember), user clicks
button Select by Name đ th y k t qu :
Private Sub BtnSelectByName_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSelectByName.Click
'Use Try to ignore error if operation fails
Try
' Select the ComboBox Item whose DisplayMember equal txtFullName.Text
' FindString returns the index of the found item
ComboBox1.SelectedIndex = ComboBox1.FindString(txtFullName.Text)
Catch
End Try
End Sub
Khi ch y ch ng trình, b n s th y hình nh CÁCd i đây Trong hình
y, MaxDropDownItems c a ComboBox1 đã đ c set b ng 4
Trang 174Các bài t p Microsoft NET 174