1. Trang chủ
  2. » Công Nghệ Thông Tin

Các bài tập Microsoft .NET

174 511 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 174
Dung lượng 1,72 MB

Nội dung

Trong browser based Client ta dùng Javascript hay Javaapplet.. Nh ng b n c ng có th dùng ActiveX có s n trong VB6 trong .NET application b ng cách Add Reference COM click Tab COM trên Ad

Trang 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 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 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 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 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 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 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 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 9

Metadata là các d ki n c t ngh a cho ta bi t v d ki n Thí d XML Schema c a m t XML file là metadata c t ngh a v data structure c a

data trong XML file Chính cái XML Schema c ng là m t XML file Các

.NET application components, g i là Assembly, ch a r t nhi u metadata

đ c t ngh a v chính nó (self describing) Tìm bi t v m t NETapplication đ có th làm vi c v i nó thì g i là Reflection.

g i gi a các components và cho phép các ngôn ng có th h p tác nhau

m t cách thông su t T c là trong NET, VB.NET program có th inheritC# program và ng c l i m t cách hoàn toàn t nhiên

i u này ch ng nh ng giúp các VC++ hay Java programmers b t đ u

Trang 10

dùng C# m t cách d dàng mà còn làm cùng m t d án v i VB.NETprogrammers n a.

N u VC++ linh đ ng và hi u n ng h n VB6, thì C# ch ng khác gìVB.NET B n có th port C# code qua VB.NET code r t d dàng Vìsource code VC++ và Java g n g i C# h n VB6 v i VB.NET nên ngoài

đ i có nhi u C# code h n VB.NET Do đó, m c d u hai ngôn ngVB.NET và C# đ u ngang c nhau, n u dùng C# b n đ c l i đi m cónhi u source code s n và nh t là lâu nay ng i ta v n mang n t ng r ngVC++ hay Java programmers m i th t s là các cao th l p trình, và cókhuynh h ng tr l ng các guru VC++/Java cao h n VB programmers

Khi ch y NET application, nó s đ c compiled b ng m t JIT Time) compiler r t hi u n ng ra machine code đ ch y i m này giúp.NET application ch y nhanh h n Java interpreted code trong JavaVirtual Machine Just-In-Time c ng có ngh a là ch ph n code nào c n x

(Just-In-lý trong lúc y m i đ c compiled IL code ch y trong CLR đu c nói là

managed code.

.NET code có th ch y chung v i ActiveX, nh ng code trong ActiveX

đ c g i là unmanaged code, t c là CLR không ch u trách nhi m.

Ngoài vi c allocation và management of memory, CLR còn gi cácrefrerence đ n objects và đ rác (handle garbage collection), t c là thâu

l i các m nh v n memory khi chúng không c n dùng n a Tr c đây, m ikhi m t DLL đu c loaded vào memory, system s ghi nh n có bao nhiêutask dùng nó đ khi task cu i cùng ch m d t thì system unload DLL và

tr l i ph n memory nó dùng tr c đây đ system dùng cho chuy n khác

Ch n u allocate memory đ dùng mà không nh dispose nó thì s bmemory leak (r ), l n l n ta dùng h t memory, b b t bu c ph i reboot

Trang 11

OS Nh ng bây gi NET dùng m t process đ c l p đ làm vi c garbagecollection Cái ph n ng ph c a vi c này là khi ta đã Dispose m t

Object r i, ta v n không bi t ch c ch n ch ng nào nó m i th t s bi n

m t Vì garbage collector là m t low priority process làm vi c trongbackground, ch khi nào system memory g n c n nó m i nâng caopriority lên D nhiên, n u mu n, ta có th đòi h i system Dispose m tObject ngay l p t c

Assembly

.NET application xây d ng t các assemblies M i assembly ph i có m t manifest Có th nó n m riêng trong m t file hay n m bên trong m t

module Manifest ch a nh ng metadata sau đây:

• Tên và Version number c a assembly

• Nh ng assembly khác (k c version number c aassembly) mà assembly này tùy thu c vào đ ch y

Trang 12

• Types (classes và members) mà assembly này cho

xu t kh u

• Assembly này đòi h i đi u ki n an ninh nào (securitypermissions)

Manifest cho phép ta dùng h n m t version c a assembly (t ng đ ng

v i DLL tr c đây) cùng m t lúc T đây không còn register DLL n a.Thay vào đó, ta ch c n copy các assembly vào m t subfolder /bin c a

ch ng trình chính

Quy t đ nh c a b n

Sau khi bi t qua v NET, câu h i b n s đ t ra là b n có nên h c l p trìnhtrên NET hay không Nói chung, v l p trình có nhi u tôn giáo nhVC++/Java, VB6, Delphi v.v B n có th ch n gi a C# và VB.NET

i v i VB6 programmers, h c l p trình VB.NET s m t m t th i gian,

nh ng không khó Nên nh r ng NET không ph i ch cho ta các ngôn

ng l p trình, mà c m t h th ng tri n khai ph n m m chú tr ng vào

m c tiêu h n là cách th c Các l i ích NET c ng hi n cho b n cách th c

t ng lai Và b o trì NET code thì l i càng kh e h n

tr c đây, vì chính b n có vi t bao nhiêu code (có th

b bugs) đâu mà b o trì

Do đó, có l trong t ng lai NET programmers chúng ta s ng đ n 10

gi sáng m i th c, m t ngày ch c n làm vi c vài ti ng, r nh rang đ làm

v n, câu cá

Trong bài t i ta s h c v Visual Studio.NET interface và b t đ u vi t th

m t program Demo

Trang 13

Bài 2 Visual Studio.NETVisual Studio.NET

ch y VisualStudio.NET b n c n ph i Set Time c a Windows l i tr c

cu i tháng 7,2001, eg: 1-July-2001

Visual Studio.NET Beta 2 hi n nay có Service Pak 2, nó cho phép tadùng Visual Studio.NET Beta 2 sau ngày 31-July-2001, t c là không cótime-bomb N u VS.NET version c a b n b gi i h n v th i gian nóitrên, t trong VS.NET b n có th download Service Pak 2 đ cài đ t b ng

cách dùng IDE Menu Command Help | Check for Updates.

Có hai cách đ b t đ u m t project m i trong VS.NET Ho c Click New Project trong trang Web StartPage nh d i đây:

Ho c dùng Menu command File | New | Project gi ng nh trong VB6

IDE:

Trang 14

Khi Add New Project, Name s là subfolder name c a New Project B n

có th ch n VB.NET, C# hay VC++.NET project Trong t ng lai chúng

ta s ch nh m vào VB.NET và C# thôi Ngoài ra SetUp and Deploymentbây gi là m t lo i project n m trong IDE c a Visual Studio.NET, takhông c n ph i ch y riêng ch ng trình Package and Deployment bênngoài VB6 IDE nh tr c đây

Solution trong VS.NET có th ch a h n m t Project và bao g m t t c

nh ng files b n li t ra là c n thi t cho Solution N u m t trong nh ngfiles y b thay đ i bên ngoài VS.NET, khi VS.NET khám phá ra nó sload vào trong VS.NET cho b n n u b n đ ng ý

Trang 15

m m t Solution/Project có s n, b n có th click link c a 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

Trang 16

Giao di n c a VS.NET có nh ng đ c đi m gi ng nh Delphi và VisualInterDev ch code đ c generated t đ ng, Windows n m chung thànhTab set hay float kh p n i, và h tr Solution r t thích h p cho vi c tri nkhai c a c đ i.

Toolbox bên trái ch a Controls cho Windows Forms, Web Forms, General Components, Data Components, HTML tags, XML Schema tools v.v Khi m t Form đang hi n th , click lên m t button trongToolbox đ ch n Tool Set b n c n Toolbox tr ng thái Fixed displayed

(nh trong hình trên) khi cây ghim phía trên đâm xu ng B n có th clickcây ghim cho nó n m ngang và vertical Toolbox tab hi n ra bên trái Lúc

y, Toolbox trong tr ng thái Auto Hide (hi n ra/rút vào) nh d i đây:

Trang 17

B n có th g i h u h t các Windows hi n th b ng cách dùng Menu

commands View, View | Other Windows và Debug | Windows:

Các Windows bên ph i có th float, n m ch ng lên nhau thành nh ngTabs trong m t Window set hay n m c nh nhau vertically tiled N mTittle bar đ d i nguyên m t Window set đi N m Window Tab c a m tWindow set đ kéo ch m t Window ra B n có th đ ch ng hai

Trang 18

Windows l i v i nhau b ng cách n m Tittle bar c a m t Window đ

ch ng lên m t Window khác Th nhích đi, nhích l i, tr c khi buôngWindow ra đ làm quen v i k t qu

Phía d i có Task List Window đ b n gi s sách v di n ti n c a d

án và qu n lý c đ i Khi b n dùng menu command Build | Build đ

compile program, n u có errors chúng s đ c hi n th trong Task ListWindow Double click lên m t hàng error đ mang cursor đ n ch gây raerror 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 gi b n có Output Window đ in ra các

messages mà trong VB6 b n dùng Immediate Window Thí d trong VB6

b n vi t:

Debug.Print "Count=" & CStr(Count)

đ in ra trong Immediate Window, thì trong VB.NET b n có th vi t:

Console.WriteLine("Count= {0}", Count)

Trang 19

đ in ra trong Output Window.

D nhiên b n v n có th ti p t c dùng Immediate Window trong công tácDebug nh tr c đây trong VB6

Ch a h t, VS.NET còn cho b n Command Window đ ta có th enter

nh ng VS.NET commands đ manipulate IDE, x lý macros, v.v

hi n th Window này b n dùng menu command View | Other Windows | Command Window ti n h n, b n drag title bar c a nó đ

ch ng lên tab bar c a Task List và Output windows

N u ta enter m t command nh :

File.AddNewProject

IDE s hi n th Add New Project dialog.

VS.NET h tr Macro đ b n có th record và playback m t chu i công

tác

Ph ng ti n Integrated Debugging cho ta Debug Menu, Call Stack Window, Breakpoints Window và Watch and Value Display Windows.

Th ng th ng b n s Add Reference các NET components Nh ng b n

c ng có th dùng ActiveX (có s n trong VB6) trong NET application

b ng cách Add Reference COM (click Tab COM trên Add Reference Dialog) .NET s gói ActiveX thành m t NET component (click Yes tr

Trang 20

l i câu h i "Would you like to have a wrapper generated for you?").

Ngoài ra dùng Add Reference Projects đ refer đ n DLL c a các Userdeveloped DLL

Demo Program

Trong ch ng trình bi u di n này, ta dùng giao di n h u nh hoàn toàn

b ng ch Vi t Ta có th đánh ch Vi t (Unicode) cho Title Bar, Menu,

TextBox, ListBox v.v

N u b n c n m t key input software cho ch Vi t h tr Unicode thì

download VPS, Vietkey hay Unikey.

Các documents nh Form, XML v.v trong NET project đ u đ c Saved

v i UTF-8 encoding.

Trang 21

Trong program S thú Saigon này ta có hai Listboxes Khi ch y, b n có

th drag tên các lo i thú t Listbox1 (bên trái) đ drop vào Listbox2 (bên

ph i) Phía d i là m t Label dùng đ hi n th ngày gi Có m t button

L u tr danh sách đ ta save data trong Listbox2 vào file animal.txt trong subFolder bin Ngoài ra b n c ng có th dùng Main menu Item c danh sách đ Load data t file animal.txt vào Listbox2

Nh ng components không c n ph i hi n ra lúc runtime nh Timer, Menu, Tooltip v.v n m trong m t Component Tray (mâm) riêng Mu n

Edit MainMenu, click lên MainMenu1 icon r i đánh tr c ti p vàoMainMenu Thêm các menuitems m i b ng cách đánh th ng vào các ch

có ch Type Here L u ý các Tabs bên trên Editing Area khi b n m

nhi u forms

Trang 22

Edit MainMenu, insert m t Separator

Trang 23

Chú ý danh sách các References đ c li t kê trong Solution Explorer.

Edit Shortcut cho m t menu item

Trang 24

Button bây gi ch ng nh ng có th ch a hình mà còn cho b n ch n v trí

c a hình trong button b ng ImageAlign n a.

B n có th Anchor m t Button đ nó dính vào m t góc c a form đ khiform resizes thì Button ch y theo góc y c a form đây ta click hai

thanh D i và Ph i cho chúng tr nên màu đen đ ch n Anchor Bottom

và Right.

Trang 25

Trong lúc thi t k ta có th edit các List items c a m t Listbox b ng cách

m property Items Collection ra và Edit vào m t trang.

Walk Through Code

Trong NET, các classes đ c chia ra thành nhi u nhóm nh System.IO,System.XML, System.Data, System.Drawing v.v Ngoài ra trong m i nhóm l i còn chia thành nh ng nhóm con, cháu nhSystem.Windows.Forms, System.Windows.Collections,System.Windows.Diagnostics, v.v M c d u m t khi đã Project | Add

Reference các NET components y ta có th dùng chúng trong program

Trang 26

nh ng v n ph i biên m t tên dài nh System.IO.StreamReader đ tránh

l n l n có th vi t tên class g n h n ta dùng Imports nh Imports System.IO, sau đó ta ch c n vi t StreamReader là đ Công vi c

Imports này đ c g i là importing Namespace (c a System.IO).

T ng t nh th , đ có th ti p t c dùng các Functions Left, Right, Mid

c a VB6 trong NET ta có th thêm câu Imports VB6 = Microsoft.VisualBasic đ u ch ng trình Sau đó ta có th vi t: AppPath = VB6.Left(AppPath, Pos)

Nguyên program chúng ta t i đây là Public Class Form1 Form1 th a k

standard form class c a NET Framework nên ta declare:

Dim AppPath As String

PrivateSub MenuItem4_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MenuItem4.Click

End ' Terminate the program

Trang 27

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 n m kéo tên m t con thú qua Listbox bên ph i")

End Sub

Hãy xem cách vi t m t Event Handler nh :

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MenuItem4.Click

Khác v i VB6, nó có thêm các ch Handles MenuItem4.Click phía cu i

đ nói handling event Click c a MenuItem4 M i Event Handler đ u

đ c passed cho hai parameters: ByVal sender As System.Object vàByVal e As System.EventArgs Parameter th nh t, sender, là Object ch

đ ng chuy n RaiseEvent, còn e là Event có ch a nhi u d ki n khác nhautùy theo tình hu ng Khi edit code b n có th nh Intellisense c a IDEgiúp đ cho bi t parameter e ch a nh ng d ki n gì

Trong NET, v n đ handling event không ph i là m t đi u bí hi m nhtrong VB6 Khi m t control có th RaiseEvent thì ch ng nh ng m t, mà

Trang 28

nhi u controls khác đ u có th ng ký (Register) đ đ c Thông báo(Notified) khi Event y xãy ra.

Control RaiseEvent đ c g i là Publisher (Nhà Xu t B n), các controls

mu n handle event đ c g i là Subcribers (nh ng Ng i t Mua dài

h n) D nhiên cách handle event c a m i control đ u khác nhau, d u

r ng đ c passed cho cùng hai parameters Các EventHandlers này đ c

g i là Delegates (nh ng Nhà i Di n lãnh trách nhi m gi i quy t m t s

1 Ng i giao c m s đ "gà-mên" c m tr c nhà, c nhbên h p th Khi đi làm v , b n s mang nó vô nhà.Trong tr ng h p này b n x lý công vi c khi nào

ti n, t c là lúc v đ n nhà Cách này có đi m b t l i làhôm nào b n đi làm v tr thì c m có th b thiêu vì

tr i nóng

B n đ a chìa khóa nhà cho ng i giao c m gi Khi giao c m, ng i y

s t đ ng m c a vô nhà đ "gà-mên" th ng vào trong t l nh Trong

cách này Event GiaoC m đ c handled b ng EventHandler Sub OpenDoorPutIntoFridge, do ng i giao c m x lý, ch không ph ichính b n

Nh th , là Subscriber (ng i n c m tháng giao t n nhà) b n registerEventHandler "Sub OpenDoorPutIntoFridge" v i ng i giao c m qua

Trang 29

vi c đ a chìa khóa Khi Event "GiaoC m" xãy ra, ng i giao c m t

đ ng executes Sub OpenDoorPutIntoFridge K thu t giao AddressOf

Sub cho m t Object khác đ nó execute khi c n còn có tên là CallBack.

Do đó, ngay c trong lúc runtime (không ph i khi design), đ Register

EventHandler Sub MenuItem4_Click v i system đ handle Event Click

c a MenuItem4 ta có th execute code:

AddHandler MenuItem4.Click, AddressOf MenuItem4_Click

L u ý cách ta dùng control ToolTip1 đ register Tooltip Text v iListbox1 Ta có th dùng ch m t control ToopTip1 đ register nhi uTooltip Texts v i nh ng controls khác nhau nh TextBox, ComboBox.v.v

B n có th thay th hàng:

AppPath = VB6.Left(AppPath, Pos)

b ng

AppPath = AppPath.SubString(0,Pos)

Trong VB6, Visual components c a m t form đ c ch a d i d ng Text

di n t các controls r t d đ c ngay đ u form file, nh ng nó không ph i

là VB6 code

Trong NET, Visual components c a m t form đ c ch a d i d ng code

th t s T c là, n u không có VS.NET ta có th dùng Notepad vi t code

nh th và sau khi compile, nó v n ch y y h t nh trong tr ng h p tadùng VS.NET i m này gi ng nh trong Java, ta có th vi t code b ngNotepad và dùng Command line đ compile và link code file v i cáccomponents khác

Thí d nh khi ta vi t m t VB.NET program đ n gi n đ ch y trên trongDOS Console, ta có th compile nó nh sau:

Trang 30

vbc /t:exe /r:system.dll mysource.vb

vbc là VisualBasic Compiler, /t: có ngh a target t c là EXE đ ch y

trong DOS console /r: có ngh a reference đ n DLL

ôi khi ta c ng có th Edit generated code, nh ng b n nh backup code

tr c, đ r i form không th hi n th vì b error, ch cho ta m t trang gi y

tr ng, thì ta còn có đ ng restore

Trang 31

M i class đ u có ít nh t m t Sub New, g i là Constructor (gi ng nh Class_Initialize c a VB6 class) và Sub Dispose, g i là Destructor ó

là hai Sub dùng đ t o ra và phá h y Object Vì Form1 th a k t

Standard Form nên trong Sub New tr c h t ph i g i constructor MyBase.New() c a cha nó, và trong Sub Dispose sau h t ph i g i destructor MyBase.Dispose c a cha nó.

M Class View Window

B n có th Navigate trong Code qua Class View DoubleClick lên tên c aObject hay Sub/Function trong Class View đ mang cursor đ n code c a

nó trong trang Edit

Trang 32

Bi u di n DragDrop

Code c a DragDrop, l u ý ta ph i vi t thêm Sub ListBox2_DragEnter

đ handle Event DragEnter

PrivateSub ListBox1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles

ListBox1.MouseDown

' Start the DragDrop process

Dim ItemIndex AsInteger

Trang 33

' Identify the Listbox item that has mousedown using mouse coordinates ItemIndex = ListBox1.IndexFromPoint(New System.Drawing.Point(e.X, e.Y))

' Start the DragDrop process passing along the ListboxItem as

' Apply the copy effect

' AND remember to set the property Allow Drop of Listbox2 to TRUE

Trang 34

' Obtain the Source ListItem String

PrivateSub MenuItem2_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MenuItem2.Click

' Read the list of animals from a text file into Listbox2

Dim sr As StreamReader

Dim Pos As Integer

Dim TStr As String

ListBox2.Items.Clear() ' Clear Listbox2

' Use a StreamReader to open the UTF-8 file to read.

sr = New StreamReader(AppPath & "animals.txt")

' Read each line in the file.

' When the end of the file is reached, return the value "-1".

Dim x As String

Trang 35

While sr.Peek <> -1

x = sr.ReadLine() ' Read a line

ListBox2.Items.Add(x) ' Add it to Listbox2

End While

sr.Close() ' Close the file

End Sub

Private Sub SaveAnimalList()

' Save the content of Listbox2 into a UTF-8 Text file

Dim i As Integer

Dim sw As StreamWriter

' Open the file to write in UTF-8 mode, using a StreamWriter.

sw = New StreamWriter(AppPath & "Animals.txt")

' Write each line in the Listbox.

' Display Date and Time every half a second

Label3.Text = DateTime.Now.ToLongDateString & " " & DateTime.Now.ToLongTimeString

End Sub

B n c ng có th hi n th ngày gi trong format khác b ng cách vi t:

Label3.Text = DateTime.Now.ToString("ddd dd/MM/yyyy hh:mm:ss")

đ có: WED 18/07/2001 09:16:42

Trang 36

ý trong Format string ta dùng MM cho Month và mm cho Minute.

Trang 37

D u v y, đ i v i VB6 programmers h c VB.NET không khó Lý do là

VB.NET không cho thêm nhi u t m i (reserved words) Nói chung các

ý ni m m i trong VB.NET đ u d l nh h i, nh t là khi đem ra áp d ng

cách th c t ó là nh Microsoft v n gi nguyên t c d u và làm s n

(c a VB6) nh ng gì r c r i phía sau sân kh u, đ ta có th t p trung vào

vi c tìm ki m m t gi i pháp, thay vì quá b n tâm vào cách th c làm m t

vi c gì Chính nguyên t c y đã giúp Microsoft chiêu m đ c 3 tri uVB6 programmers trên kh p th gi i VB.NET c ng hi n cho VBprogrammers m t công c r t h u hi u đ dùng cho m i hoàn c nh, tdatabase, desktop, distributed, internet cho đ n real-time hay mobile(pocket PC)

Nh ng u đi m (features) c a VB.NET đ n t ch c n ng c a NET Framework Nó mang đ n ph ng ti n l p trình cho m ng cách ObjectOriented nh XML, Remoting, Streaming, Serialisation, Threading v.v

Nh ng th này tuy l nh ng không khó h c, ng c l i s ti t ki m r tnhi u thì gi

M c d u VB6 là m t ngôn ng l p trình tr ng thành và hi u n ng, ch c

ch n hãy còn t n t i trong nhi u n m n a, nh ng h c thêm VB.NET là

m t đ u t t ng đ i ít t n kém và đ m b o huê l i g p bao nhiêu l ntrong hàng th p niên t i

Trong bài này ta s bàn v nh ng đi m khác nhau gi a VB6 và VB.NET

t quan đi m ngôn ng l p trình Trong m t bài khác ta s bàn v nh ng

ch c n ng i t ng (Object Oriented) c a VB.NET

Namespaces

Namespaces là m t cách đ t tên đ giúp s p đ t các Classes ta dùngtrong program m t cách th t h u d tìm ki m chúng T t c code trong

Trang 38

.NET, vi t b ng VB.NET, C# hay ngôn ng nào khác, đ u đ c ch atrong m t namespace.

i m này c ng áp d ng cho code trong NET system class libraries

Ch ng h n, các classes c a WinForms đ u n m trongSystem.Windows.Forms namespace Và các classes dùng cho collections

nh Queue, Stack, Hashtable v.v đ u n m trong System.Collectionsnamespace

T t c code ta vi t trong program c a mình c ng đ u n m trong cácnamespaces

Tr c đây trong VB6, m i khi nh c đ n m t Class trong m t COM tên

CompName ta vi t CompName.classname (còn g i là PROGID) , t c là

c ng dùng m t d ng namespace

Tuy nhiên ph ng pháp này có m t vài gi i h n:

• a ch c a class b bu c c ng vào component đang

Nhi u assemblies có th n m trong cùng m t namespace, ngh a là classes

tuyên b trong các components khác nhau có th có chung m tnamespace i u này c ng áp d ng xuyên qua các ngôn ng , giúp cho

m t class vi t trong VB.NET có th n m trong cùng m t namespace v i

m t class vi t trong C#, ch ng h n

H n n a, trong m t assembly có th có nhi u namespaces, dù r ng thông

Trang 39

th ng ta ch dùng m t namespace duy nh t cho t t c các classes trongy.

Nh là m t assembly trong NET thì đ i khái t ng đ ng v i m t COM component.

T t c code trong NET đ u n m trong nh ng assemblies.

By default, tên c a project đ c dùng làm namespace N u b n right click

lên project name NETListbox trong Solution Explorer c a program Demo, r i ch n Properties trong popup menu, IDE s hi n th Property

Pages dialog nh d i đây:

B n th y Root namespace c a project là NETListbox B n có th thay

đ i tên namespace y n u b n mu n

Namespaces có th đ c phân chia th b c gi ng nh Folders trong m tFile Directory Nó s giúp user s p đ t các classes theo đúng nhóm chotrong sáng và d đ c Thí d b n đang vi t m t program cho m t h ng

s n xu t, b n s dùng namespace NhàS nXu t root level Bên trong

Trang 40

Nh th ta đã đ nh ngh a m t base namespace tên NhàS nXu t, v i

nh ng namespaces con, cháu bên trong, m i namespace có ch a classes,modules, enums, structures và các namespaces khác

M i namespace ch a nh ng ph n c a code thích h p cho nó trongprogram nói chung Trong File Directory, ta có th có hai files dù mangcùng tên nh ng n m trong hai folders khác nhau Gi ng nh v y, trong.NET ta có th có hai classes có cùng m t tên nh ng n m trong hainamespaces khác nhau ó là vì khi ta vi t tên c a m t class v i cnamespace c a nó thì có th phân bi t v i m t class khác v i cùng tên

Local và Global Namespaces

Khác v i COM components v i "namespace" c a chúng áp d ng cho

kh p c computer, namespaces c a NET thông th ng là Local, ch có application program c a nó th y mà thôi .NET c ng h tr Global

namespace, nh ng ph i đ c ký tên (digitally signed) và đ ng ký v i.NET runtime đ ch a nó trong global assembly cache.Công vi c làm m t namespace Global r c r i nh th đ gi m thi u

tr ng h p ta tr v tình tr ng DLL hell tr c đây

Dùng Namespaces

Ta có th dùng namespaces b ng cách nói th ng ra (explicitly) v inguyên tên (Direct Addressing) hay hàm ý (implicitly) v i Importkeyword Nh ng đi u tiên quy t là ta ph i reference cái assembly ch anamespace mà ta mu n dùng Ta th c hi n vi c y v i Menu command

Project | Add References Khi Add References dialog hi n ra, ch n Tab NET cho standard NET components hay Tab Projects cho DLL c a

m t NET project khác , highlight DLL b n mu n r i click Select button,

đo n click OK.

Ngày đăng: 14/09/2013, 22:23

HÌNH ẢNH LIÊN QUAN

Button bây gi ch ng nh ng có th cha hình mà còn ch ob nch nv trí c a hình trong button b ng ImageAlign n a. - Các bài tập Microsoft .NET
utton bây gi ch ng nh ng có th cha hình mà còn ch ob nch nv trí c a hình trong button b ng ImageAlign n a (Trang 24)
Namespace Ch cn ng Classes đ in hình - Các bài tập Microsoft .NET
amespace Ch cn ng Classes đ in hình (Trang 41)
Polymorphism th hin di nh iu hình th c: - Các bài tập Microsoft .NET
olymorphism th hin di nh iu hình th c: (Trang 65)
subfolder ClassLibrary1\bin ca solution nh trong hình di đây: - Các bài tập Microsoft .NET
subfolder ClassLibrary1\bin ca solution nh trong hình di đây: (Trang 99)
Save Option vi Menu command File nh trong hình di đây: - Các bài tập Microsoft .NET
ave Option vi Menu command File nh trong hình di đây: (Trang 101)
nh trong hình di đây: - Các bài tập Microsoft .NET
nh trong hình di đây: (Trang 102)
Th ak hình nh (Visual Inheritance) - Các bài tập Microsoft .NET
h ak hình nh (Visual Inheritance) (Trang 110)
Nh ng Controls tàn hình đc cha riêng - Các bài tập Microsoft .NET
h ng Controls tàn hình đc cha riêng (Trang 118)
Th c hy ch ng trình và click Button2, b ns t hy hình di đây: - Các bài tập Microsoft .NET
h c hy ch ng trình và click Button2, b ns t hy hình di đây: (Trang 132)
Left, Right nh trong hình di đây: - Các bài tập Microsoft .NET
eft Right nh trong hình di đây: (Trang 135)
trong cas Properties đm ra các chi tit nh trong hình di đây: - Các bài tập Microsoft .NET
trong cas Properties đm ra các chi tit nh trong hình di đây: (Trang 140)
Khi c hy ch ng trình, hình di đây shi nt h: - Các bài tập Microsoft .NET
hi c hy ch ng trình, hình di đây shi nt h: (Trang 151)

TỪ KHÓA LIÊN QUAN

w