You are on page 1of 106

I HC NNG

TRNG CAO NG CNG NGH THNG TIN

B MN CNG NGH

GIO TRNH
LP TRNH .NET
Dch v tng hp: L Vn Minh

(Lu hnh ni b)

NNG, 07/2008

LI NI U
Gio trnh Lp trnh .Net c bin son nhm mc ch cung cp
nhng kin thc c bn v lp trnh trong mi trng .Net ca Microsoft.
Vi gio trnh ny sinh vin s c c cc kin thc v lp trnh to ra
cc dng ng dng khc nhau, bao gm: ng dng dng lnh (Console
Application), ng dng giao din windows (Windows Application) v ng
dng giao din web (ASP.NET Website Application).
V y l phin bn u tin nn gio trnh ny cn c nhng thiu st,
hn ch. Tc gi mong nhn c s gp qu bu t pha bn c. Mi
chi tit xin lin lc qua a ch email: minhlevan@cit.udn.vn
Xin chn thnh cm n.

Mc lc

ii

MC LC
VISUAL STUDIO V .NET FRAMEWORK ..............................................1
I. Mc tiu ..................................................................................................................... 1
II.
.NET Framework ................................................................................................... 1
II.1. Khi nim ...................................................................................................... 1
II.2. Kin trc ca .NET Framework..................................................................... 1
II.3. Cc ngn ng thuc h .NET ........................................................................ 2
II.4. Cc th vin c sn ca .Net Framework ...................................................... 2
III.
Visual Studio ......................................................................................................... 3
III.1.
Khi nim .................................................................................................. 3
III.2.
Cch t chc chng trnh ca Visual Studio ........................................... 3
III.3.
Cc dng Project ca Visual Studio .......................................................... 4
IV.
Ngn ng lp trnh C# ........................................................................................... 4
IV.1.
Khi nim .................................................................................................. 4
IV.2.
c im .................................................................................................... 4

LP TRNH C# CN BN ............................................................................6
I. Mc tiu ..................................................................................................................... 6
II.
Bt u vi Console Application........................................................................... 6
II.1. To Project..................................................................................................... 6
II.2. Lp trnh ........................................................................................................ 8
II.3. Bin dch ........................................................................................................ 8
II.3.1.
Bin dch tng phn................................................................................... 8
II.3.2.
Bin dch ton phn ................................................................................... 9
II.4. Chy chng trnh ......................................................................................... 9
II.4.1.
Ch debug ........................................................................................... 10
II.4.2.
Ch non-debug.................................................................................... 10
III.
Bin v phm vi hot ng ca bin trong C#..................................................... 11
III.1.
Bin.......................................................................................................... 11
III.2.
Phm vi hot ng ca bin ..................................................................... 11
IV.
Hng..................................................................................................................... 12
V.
Kiu d liu ......................................................................................................... 12
V.1. Kiu gi tr (Value Types) ........................................................................... 13
V.1.1.
Kiu d liu s nguyn ............................................................................ 13
V.1.2.
Kiu d liu du chm ng .................................................................... 13
V.1.3.
Cc kiu d liu khc .............................................................................. 13
V.2. Kiu tham chiu (Reference Type) .............................................................. 13
VI.
Cu trc iu kin ................................................................................................ 14
VI.1.
Cu lnh iu kin if..else ....................................................................... 14
VI.1.1. C php ................................................................................................... 14
VI.1.2. Cch s dng ........................................................................................... 15
VI.2.
Cu lnh switch..case............................................................................... 15
VI.2.1. C php ................................................................................................... 15

Mc lc
VI.2.2. Cch s dng ........................................................................................... 15
VII. Cu trc lp.......................................................................................................... 16
VII.1.
Cu trc lp for ........................................................................................ 16
VII.1.1.
C php ............................................................................................... 16
VII.1.2.
Cch s dng ....................................................................................... 16
VII.2.
Cu trc lp while .................................................................................... 17
VII.2.1.
C php ............................................................................................... 17
VII.2.2.
Cch s dng ....................................................................................... 17
VII.3.
Cu trc lp do..while .............................................................................. 17
VII.3.1.
C php ............................................................................................... 17
VII.3.2.
Cch s dng ....................................................................................... 17
VII.4.
Cc lnh h tr cho cu trc lp .............................................................. 18
VII.4.1.
Lnh break ........................................................................................... 18
VII.4.2.
Lnh continue ...................................................................................... 18
VIII.
Mng (Array) ................................................................................................... 19
VIII.1. Mng mt chiu ....................................................................................... 19
VIII.1.1.
C php khai bo................................................................................. 19
VIII.1.2.
Cch s dng ....................................................................................... 19
VIII.1.3.
Cu trc lp foreach ............................................................................ 19
VIII.2. Mng hai chiu (Ma trn) ........................................................................ 20
VIII.2.1.
C php khai bo................................................................................. 20
VIII.2.2.
Cch s dng ....................................................................................... 20
IX.
X l nhp xut file ............................................................................................. 21
IX.1.
Khi nim file .......................................................................................... 21
IX.2.
Phn loi .................................................................................................. 21
IX.2.1. File vn bn (text file) ............................................................................. 21
IX.2.2. File nh phn (binary file) ....................................................................... 22
IX.3.
c v ghi file vn bn ............................................................................ 22
IX.3.1. c file vn bn bng StreamReader ...................................................... 22
IX.3.2. Ghi file vn bn bng StreamWriter........................................................ 24

LP TRNH HNG I TNG VI C# ........................................... 25


I. Mc tiu ................................................................................................................... 25
II.
Lp (Class) .......................................................................................................... 25
III.
i tng (Object) .............................................................................................. 27
IV.
Thuc tnh (Attribute).......................................................................................... 27
V.
Phng thc (Method)......................................................................................... 27
VI.
Np chng ton t (Overloading) ........................................................................ 28
VII. K tha (Inheritance) ........................................................................................... 29
VIII.
a hnh (Polymorphism) ................................................................................. 31
IX.
Interface ............................................................................................................... 33

X L BIT L ........................................................................................... 34
I. Mc tiu ................................................................................................................... 34
II.
Bit l (Exception) ............................................................................................... 34
II.1. Chng trnh v li ...................................................................................... 34

iii

Mc lc
II.2. Khi nim bit l ......................................................................................... 35
III.
X l bit l (Exception Handler) ....................................................................... 35
III.1.
C ch try/catch ....................................................................................... 35
III.2.
X l bit l lng nhau ............................................................................ 37
III.3.
X l bit l song song ............................................................................ 40

TH VIN LIN KT NG ................................................................... 42


I. Mc tiu ................................................................................................................... 42
II.
Th vin trong lp trnh ....................................................................................... 42
II.1. Khi nim .................................................................................................... 42
II.2. Phn loi th vin ........................................................................................ 43
II.2.1.
Th vin tnh ............................................................................................ 43
II.2.2.
Th vin lin kt ng ............................................................................. 43
III.
Namespace ........................................................................................................... 44
IV.
Th vin lin kt ng ......................................................................................... 44
IV.1.
Cch xy dng th vin vi Visual Studio 2005 ..................................... 44
IV.1.1. To mt project cho th vin ................................................................... 44
IV.1.2. Cu hnh cho project ............................................................................... 45
IV.1.3. Xy dng lp v phng thc cn thit .................................................. 46
IV.2.
Cch s dng th vin ............................................................................. 47
IV.2.1. To thm tham chiu (add reference). ..................................................... 47
IV.2.2. Khai bo tham chiu ................................................................................ 48
IV.2.3. S dng th vin ...................................................................................... 49
V.
Cc namespace c sn ca .Net Framework 2.0 .................................................. 49
V.1. Namespace System.Windows.Forms........................................................... 49
V.2. Namespace System.Data.............................................................................. 50

LP TRNH NG DNG WINDOWS...................................................... 51


I. Mc tiu ................................................................................................................... 51
II.
Cc bng iu khin ............................................................................................ 51
II.1. Toolbox panel .............................................................................................. 52
II.2. Solution Explorer panel ............................................................................... 53
II.3. Properties panel ........................................................................................... 54
III.
Form v Label ...................................................................................................... 54
III.1.
Form ........................................................................................................ 54
III.1.1. Khi nim Form ....................................................................................... 54
III.1.2. Cc thuc tnh ca Form ......................................................................... 54
III.1.3. Cc s kin ca Form .............................................................................. 55
III.2.
Label ........................................................................................................ 56
III.2.1. Khi nim Label ...................................................................................... 56
III.2.2. Cc thuc tnh ca Label ......................................................................... 56
III.3.
ng dng Form v Label ......................................................................... 56
III.3.1. To mi project ....................................................................................... 56
III.3.2. i tn Form chnh ................................................................................. 57
III.3.3. t tiu cho Form ............................................................................... 58
III.3.4. Ci t s kin FormClosed .................................................................... 59
III.3.5. Thm Label vo Form ............................................................................. 60

iv

Mc lc
III.3.6. Bin dch v chy ng dng .................................................................... 62
IV.
TextBox v Button .............................................................................................. 62
IV.1.
TextBox ................................................................................................... 62
IV.1.1. Khi nim TextBox .................................................................................. 62
IV.1.2. Cc thuc tnh ca TextBox ..................................................................... 62
IV.1.3. Cc s kin ca TextBox ......................................................................... 63
IV.2.
Button ...................................................................................................... 63
IV.2.1. Khi nim Button ..................................................................................... 63
IV.2.2. Cc thuc tnh ca Button ....................................................................... 63
IV.2.3. Cc s kin ca Button ............................................................................ 64
IV.3.
ng dng TextBox v Button ................................................................. 64
IV.3.1. To project, to Form v cc Label ........................................................ 64
IV.3.2. To cc TextBox ...................................................................................... 64
IV.3.3. Thm cc Button ...................................................................................... 65
IV.3.4. Ci t s kin cho tng Button .............................................................. 66
IV.3.5. Bin dch v chy chng trnh ............................................................... 67
V.
ComboBox, CheckBox, RadioButton ................................................................. 67
V.1. ComboBox ................................................................................................... 67
V.1.1.
Khi nim ComboBox .............................................................................. 67
V.1.2.
Cc thuc tnh ca ComboBox ................................................................ 67
V.1.3.
Cc phng thc ca ComboBox ............................................................ 68
V.1.4.
Cc s kin ca ComboBox ..................................................................... 68
V.2. CheckBox .................................................................................................... 68
V.2.1.
Khi nim CheckBox ............................................................................... 68
V.2.2.
Cc thuc tnh ca CheckBox .................................................................. 69
V.2.3.
Cc s kin ca CheckBox ...................................................................... 69
V.3. RadioButton ................................................................................................. 69
V.3.1.
Khi nim RadioButton ........................................................................... 69
V.3.2.
Cc thuc tnh ca RadioButton.............................................................. 69
V.3.3.
Cc s kin ca RadioButton .................................................................. 69
V.4. ng dng ComboBox, CheckBox, RadioButton ........................................ 69
V.4.1.
To project, to Form, to cc Label v TextBox ................................... 70
V.4.2.
To cc RadioButton ............................................................................... 70
V.4.3.
To ComboBox ........................................................................................ 71
V.4.4.
To cc CheckBox ................................................................................... 72
V.4.5.
To Button ............................................................................................... 73
V.4.6.
Bin dch v chy chng trnh ............................................................... 73
VI.
MDI Form v MenuStrip ..................................................................................... 74
VI.1.
MDI Form ................................................................................................ 74
VI.1.1. Khi nim MDI Form .............................................................................. 74
VI.1.2. Cc thuc tnh ca MDI Form ................................................................ 75
VI.2.
MenuStrip ................................................................................................ 75
VI.2.1. Khi nim MenuStrip ............................................................................... 75
VI.2.2. Cc thuc tnh ca MenuStrip ................................................................. 75
VI.3.
ToolStripMenuItem ................................................................................. 75
VI.3.1. Khi nim ToolStripMenuItem ................................................................ 75
VI.3.2. Cc thuc tnh ca ToolStripMenuItem .................................................. 75

Mc lc

VI.3.3.
VI.4.
VI.4.1.
VI.4.2.
VI.4.3.
VI.4.4.

vi
Cc s kin ca ToolStripMenuItem ....................................................... 76
ng dng MDI Form, MenuStrip ............................................................ 76
To project v cu hnh MDI Form......................................................... 76
To Form LogIn v Form Register ......................................................... 76
To MenuStrip ......................................................................................... 77
Vit s kin cho tng ToolStripMenuItem ............................................... 77

TNG TC C S D LIU ................................................................. 78


I. Mc tiu ................................................................................................................... 78
II.
ADO.NET ............................................................................................................ 78
II.1. Khi nim .................................................................................................... 78
II.2. Kin trc ...................................................................................................... 78
II.3. Cc namespace phc v cho ADO.NET...................................................... 80
III.
SqlConnection, SqlCommand ............................................................................. 80
III.1.
SqlConnection ......................................................................................... 80
III.1.1. Khi nim SqlConnection ........................................................................ 80
III.1.2. Cc thuc tnh ca SqlConnection .......................................................... 80
III.1.3. Cc phng thc ca SqlConnection ...................................................... 81
III.2.
SqlCommand ........................................................................................... 81
III.2.1. Khi nim SqlCommand .......................................................................... 81
III.2.2. Cc thuc tnh ca SqlCommand ............................................................ 81
III.2.3. Cc phng thc ca SqlCommand ........................................................ 82
III.3.
ng dng SqlConnection, SqlCommand, ExcuteNonQuery .................. 82
III.3.1. To c s d liu ..................................................................................... 82
III.3.2. To bng tblUser ..................................................................................... 83
III.3.3. To stored procedure .............................................................................. 84
III.3.4. Lp trnh tng tc c s d liu ............................................................ 85
III.3.5. Bin dch v chy ng dng .................................................................... 86
IV.
SqlDataReader v phng thc ExcuteReader.................................................... 87
IV.1.
SqlDataReader ......................................................................................... 87
IV.1.1. Khi nim SqlDataReader ....................................................................... 87
IV.1.2. Cc thuc tnh ca SqlDataReader ......................................................... 87
IV.1.3. Cc phng thc ca SqlDataReader ..................................................... 87
IV.2.
Phng thc ExcuteReader ..................................................................... 88
IV.3.
ng dng SqlDataReader v phng thc ExcuteReader ...................... 88
V.
SqlDataAdapter, DataSet v DataGridView........................................................ 89
V.1. SqlDataAdapter ........................................................................................... 89
V.2. DataSet ........................................................................................................ 89
V.3. DataGridView.............................................................................................. 90
V.3.1.
Khi nim DataGridView ........................................................................ 90
V.3.2.
Cc thuc tnh ca DataGridView .......................................................... 90
V.3.3.
Cc s kin ca DataGridView ............................................................... 90
V.4. ng dng SqlDataAdapter, DataSet, DataGridView .................................. 90
V.4.1.
To project............................................................................................... 90
V.4.2.
Thm i tng DataGridView ............................................................... 90
V.4.3.
Ci t s kin Load ca Form ............................................................... 91
V.4.4.
Bin dch v chy chng trnh ............................................................... 92

Mc lc

vii

KT LUN .................................................................................................... 93
PH LC ........................................ ERROR! BOOKMARK NOT DEFINED.

Mc lc

viii

Chng 1

Visual Studio v .NET Framework

I.

Mc tiu
Trong chng ny, ngi hc s c cung cp mt s kin thc v cc vn sau:
1. Microsoft .Net Framework
2. Microsoft Visual Studio
3. Ngn ng lp trnh C#

II. .NET Framework


II.1. Khi nim
Microsoft .NET Framework l mt thnh phn c th c ci thm hoc c sn trong
cc h iu hnh Windows. N cung cp nhng gii php c lp trnh sn cho nhng
yu cu thng thng ca chng trnh qun l vic thc thi cc chng trnh vit trn
framework, ngi dng cui cn phi ci framework c th chy cc chng trnh c
pht trin bng cc ngn ng trong h .NET. .NET Framework do Microsoft a ra v c
s dng trong hu ht cc ng dng vit trn nn Windows. Nhng gii php c lp trnh
sn hnh thnh nn mt th vin cc lp ca framework, c s dng trong nhiu lnh vc
ca lp trnh nh: giao din ngi dng, truy cp d liu, kt ni c s d liu, m ho, pht
trin nhng ng dng website, cc gii thut s hc v giao tip mng. Th vin lp ca
framework c lp trnh vin s dng, kt hp vi chng trnh ca chnh mnh to nn
cc ng dng.

II.2. Kin trc ca .NET Framework


Microsoft t chc .NET Framework thnh nhiu tng, qu trnh bin dch v thc thi mt
chng trnh vit trn nn .NET Framework c thc hin tng bc t phn m ngun n
phn m my.
M ngun ca chng trnh sau khi bin dch s thnh ngn ng trung gian (Common
Intermediate Language - CIL). Ngn ng ny bin dch phn ln cc th vin c vit trn
nn .NET thnh cc th vin lin kt ng (Dynamic Linked Library - DLL). Vi gii php
ny, cc ngn ng c .NET Framework h tr s d dng s dng li ln nhau. Mt
chng trnh c vit bng ngn ng C# c th s dng cc lp, cc thuc tnh c vit
trc bng ngn ng VB.NET hoc J#.
Tng di cng ca cu trc phn tng ca .NET Framework l Common Language
Runtime cn c gi l CLR. y l thnh phn quan trng nht ca .NET Framework.
Tng ny thc hin bin dch m ca CIL thnh m my v thc thi.
L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

Lp trnh .Net

Hnh 1 Cu trc ca .NET Framework

II.3. Cc ngn ng thuc h .Net


Hin ti cc lp trnh vin c th s dng nhiu ngn ng khc nhau lp trnh, c ngi
thn thin vi ngn ng ny, c ngi thn thin vi ngn ng khc. C ngi lm vic rt
tt vi ngn ng Basic, trong khi , mt s ngi khc thn thin vi ngn ng Java. Nhng
lp trnh vin vi kh nng thng tho nhng ngn ng khc nhau dng nh khng th cng
xy dng mt ng dng v s khng tng thch gia cc m lnh bin dch. khc phc
tnh trng ny, Microsoft a ra gii php .Net Framework. Vi .Net Framework, cc lp
trnh vin c th lp trnh nhng ngn ng khc nhau, sau khi bin dch, kt qu thu c s
l cc th vin lin kt ng .dll (dynamic linked library). Cc th vin ny s c cc lp
trnh vin khc k tha v s dng li.
Visual Studio v Microsoft .Net Framework h tr cc ngn ng lp trnh: Visual C++,
Visual Basic .NET, Visual C#, Visual J#. Cc ngn ng lp trnh trn c gi chung l h
ngn ng .NET.

II.4. Cc th vin c sn ca .Net Framework


Th vin lp c s ca .NET l mt tp hp ln cc lp c vit bi Microsoft, nhng
lp ny cho php bn thao tc rt nhiu cc tc v sn c trong Windows. Bn c th to cc
lp ca mnh t cc lp c sn trong th vin lp c s ca .NET da trn c ch tha k
n.
Th vin lp c s ca .NET rt trc quan v rt d s dng. V d, to mt tin trnh
mi, bn n gin gi phng thc Start() ca lp Thread. v hiu ha mt TextBox, bn
t thuc tnh Enabled ca i tng TextBox l false. Th vin ny c thit k d s
dng tng t vi cc ngn ng nh l Visual Basic v Java.

Lp trnh .Net
Cc th vin c sn .NET Framework bao gm:
Th vin h tr Windows GUI v Controls
Th vin Web Forms (ASP.NET)
Th vin Data Access (ADO.NET)
Th vin Directory Access
Th vin File system v Registry access
Th vin Networking v Web browsing
Th vin .NET attributes v reflection
Th vin h tr truy xut vo h iu hnh Windows
Th vin COM interoperability

III. Visual Studio


III.1. Khi nim
Visual Studio .Net l mi trng tch hp pht trin phn mm (Integrated Development
Environment (IDE)) ca Microsoft, l cng c cho php bn vit m, g ri v bin dch
chng trnh trong nhiu ngn ng lp trnh .NET khc nhau.

III.2. Cch t chc chng trnh ca Visual Studio


Chng trnh hoc ng dng hoc thm ch l mt h thng u c Visual Studio t
chc di dng Solution. Solution l tp hp ca nhiu Project. Project l tp hp cc tp tin
lin quan n mt ng dng v c ngi dng t chc theo cc cp th mc.
Mt Project ca Visual Studio thng thng bao gm 3 phn: phn thuc tnh (Properties),
phn tham chiu (References), phn ngi dng t nh ngha.

Hnh 2 Cu trc ca mt project ca Visual Studio

Lp trnh .Net
Phn thuc tnh (Properties) cha class AssemblyInfo trong m t cc thng tin c bn
v ng dng nh: tn ng dng, tn cng ty, a ch cng ty, bn quyn v cc thng tin khc.
Phn tham chiu (References) cha cc gi hoc cc class m ng dng ny cn dng.
Ngi dng c th s dng cc gi v cc class c sn ca .NET Framework hoc s dng
cc gi v class do ngi dng nh ngha. Cc gi v class ny c th c xy dng bng
nhiu ngn ng khc nhau min l cc ngn ng ny cng thuc h .NET.
Phn ngi dng nh ngha l phn cn li, ngi dng c th t nh ngha cc gi, cc
lp hoc thm vo mt s file d liu nu cn.

III.3. Cc dng Project ca Visual Studio


Hin nay, mt h thng thng tin thng c nhng dng ng dng sau: ng dng Console
phc v x l cc vn lin quan n h thng v giao tip vo ra; ng dng Desktop phc
v xy dng cc phn mm ng dng vi giao din thn thin; ng dng Internet phc v
vic xy dng cc website; i vi mi dng ng dng khc nhau, Visual Studio cung cp
cc dng Project khc nhau. Cc dng Project c Visual Studio cung cp gm c:
Console Application: Cung cp template cho ng dng Console
Windows Application: Cung cp template cho ng dng Desktop
Class Library: Cung cp template cho vic xy dng th vin lin kt ng
ASP.NET Website: Cung cp template cho vic xy dng Website
ASP.NET Web Service: Cung cp template cho vic xy dng Web Service

IV. Ngn ng lp trnh C#


IV.1. Khi nim
C# l mt ngn ng lp trnh hng i tng c pht trin bi Microsoft. Microsoft
pht trin C# da trn C++ v Java. C# c miu t l ngn ng c c s cn bng gia
C++, Visual Basic, Delphi v Java. C# c thit k ch yu bi Anders Hejlsberg kin trc
s phn mm ni ting vi cc sn phm Turbo Pascal, Delphi, J++, WFC.

IV.2. c im
C# l ngn ng lp trnh phn nh trc tip nht n .NET Framework m tt c cc
chng trnh .NET chy. C# ph thuc mnh m vo .Net Framework, mi d liu c s u
l i tng, c cp pht v hy b bi trnh dn rc Garbage-Collector (GC). C# cung cp
nhiu kiu tru tng khc chng hn nh class, delegate, interface, exception, v.v, phn nh
r rng nhng c trng ca .NET runtime.
So snh vi C v C++, ngn ng ny b gii hn v c nng cao mt vi c im no
, nhng khng bao gm cc gii hn sau y:

Lp trnh .Net
Cc con tr ch c th c s dng trong ch khng an ton. Hu ht cc i
tng c tham chiu an ton, v cc php tnh u c kim tra trn b m. Cc
con tr ch c s dng gi cc loi kiu gi tr; cn nhng i tng thuc b
thu rc (garbage-collector) th ch c gi bng cch tham chiu.
Cc i tng khng th c gii phng tng minh.
Ch c n k tha, nhng c th ci t nhiu interface tru tng (abstract
interfaces). Chc nng ny lm n gin ha s thc thi ca thi gian thc thi.
C# th an-ton-kiu (typesafe) hn C++.
C php khai bo mng khc nhau("int[] a = new int[5]" thay v "int a[5]").

Chng 2

LP TRNH C# CN BN

I.

Mc tiu

Trong chng ny gio trnh s cung cp cho bn nhng kin thc c bn nht ca ngn
ng lp trnh C#. Nhng ch chnh nh sau:
Khai bo bin
Khi to v phm vi hot ng ca bin
Cch s dng cc vng lp v cu lnh
Cch s dng mng
Namespaces v th vin lin kt ng
C bn trnh bin dch dng lnh trong C#
S dng gi System.Console thc hin vic nhp xut
S dng ch thch trong C# v Visual Studio .NET
Cui chng ny ngi hc s c kh nng vit mt chng trnh gii quyt mt bi
ton n gin bng C#.

II. Bt u vi Console Application


Console Application l dng Project phc v vic lp trnh vi cc ng dng n gin. Vi
dng Project ny chng ta d dng thc hin vic lp trnh m phng thut ton v m
phng hng i tng. Cc bc khi to Console Application nh sau:

II.1. To Project
Ngay sau khi khi ng Visual Studio, chn Menu File New Project.

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

Lp trnh .Net

Hnh 3 Khi to Project


Sau khi chn vo Project, Visual Studio hin th giao din ngi dng chn dng
Project mc Project types v Templates, t tn cho Project mc Name v t ng dn
cho Project mc Location. v d hnh 4, ti liu trnh by cch to Project Console
Application vi tn l HelloWorld v Project ny c t trong th mc
E:\CDCNTT\GiaoTrinh\LapTrinh.Net - .NetProgramming.

Hnh 4 Cu hnh Console Application Project

Lp trnh .Net

II.2. Lp trnh
Ngay sau khi khi to, Visual Studio s to sn mt Project vi cu trc chun (Xem
chng 1, phn III.2). Trong Project, Visual Studio to sn mt class c tn l Program
nm trong file Program.cs, trong class ny c sn phng thc Main(), ngi s dng ch cn
lp trnh ngay ti phng thc ny.

Hnh 5 Lp trnh trong Console Application ca C#


Trong v d hnh 5, ti liu ny trnh by cch lp trnh hin th dng ch Hello
world. ra mn hnh. C# cung cp class Console thc hin vic xut hoc nhp d liu.
Dng lnh Console.Writeline(); dng hin th mt chui ra mn hnh. Dng lnh
Console.Readline(); dng nhp mt chui t bn phm.
Trong .NET Framework, Microsoft a ra thm khi nim namespace qun l cc class
trong cng mt th vin. Vi .NET, namespace l mt thut ng dng tham chiu v c
hiu l mt tp hp cc class. Nh th, mt th vin (*.dll) s l tp hp cha cc namespace
v trong mi namespace cha cc class. Visual Studio t to ra namespace mc nh trng
vi tn Project m bn t. Trong trng hp ny, namespace mc nh l HelloWorld.

II.3. Bin dch


Thng thng, mt ng dng hoc mt d n c t chc thnh mt Solution. Ty vo
mc ln nh, ta c 2 cch bin dch i vi ng dng m ta xy dng: bin dch tng phn
v bin dch ton b.

II.3.1.

Bin dch tng phn

Bin dch tng phn l hnh thc bin dch tng Project trong mt Solution. Hnh thc
bin dch ny p dng i vi d n c chia thnh nhng thnh phn ring bit. Vi

Lp trnh .Net
hnh thc bin dch, tc bin dch s nhanh v cc li d dng c phn vng sa
cha.
thc hin vic bin dch tng phn, ta c th click chut phi (right-click) vo Project
cn bin dch v chn Build.

Hnh 6 Bin dch tng phn

II.3.2.

Bin dch ton phn

Bin dch ton b l hnh thc bin dch tt c cc Project trong mt Solution. Hnh thc
bin dch ny c p dng i vi cc ng dng va phi hoc cc ng dng m tt c cc
Project u c lin quan mt thit vi nhau. Vi hnh thc bin dch ny, tc bin dch s
chm, ty nhin tnh ng b c bo m.
thc hin bin dch ton phn, ta c th click phi chut (right-click) vo Solution ri
chn Build Solution.

Hnh 7 Bin dch ton phn

II.4. Chy chng trnh


Visual Studio cung cp 2 ch chy chng trnh: ch debug v ch non-debug.
9

Lp trnh .Net

II.4.1.

Ch debug

Ch debug l ch chy tng dng lnh ngi lp trnh bt li. Trong ch ny


ngi lp trnh quy nh mt s im dng gi l breakpoint, chng trnh s t ng dng
ti breakpoint ngi dng d dng theo di kt qu ca cc lnh chy tip theo. to ra
breakpoint, ngi lp trnh ch cn click phi chut (right-click) vo dng lnh cn dng ri
chn breakpoint ri chn Insert Breakpoint.

thc hin debug, ngi lp trnh c th bm F5 hoc chn vo Menu Debug Start
Debug.

II.4.2.

Ch non-debug

Ch non-debug l ch chy ht c chng trnh m khng dng li bt li cho d


ngi lp trnh thit lp breakpoint. chy ch ny, ngi lp trnh c th bm
Ctrl+F5 hoc chn vo Menu Debug Start Without Debugging.
Vi chng trnh HelloWorld trn kt qu chy chng trnh nh sau.

Hnh 8 Kt qu chy chng trnh

10

Lp trnh .Net

III. Bin v phm vi hot ng ca bin trong C#


III.1. Bin
Bin l n v c cc ngn ng lp trnh t chc lu tr v x l d liu. Bin c
khai bo theo c php sau.
[modifier] datatype identifier;
[modifier] l mt trong nhng t kha public, private, protected, ; datatype l kiu d
liu; identifier l bin c ngi dng nh ngha;
V d di y mt bin mang tn i kiu s nguyn int v c th c truy cp bi bt c
hm no.
public int i;
Ta cng c th khai bo bin v khi to cho bin mt gi tr nh sau:
int i = 10;
Nu ta khai bo nhiu bin c cng kiu d liu s c dng nh sau:
int x = 10; y = 20;

III.2. Phm vi hot ng ca bin


Trong C#, phm vi hot ng ca bin l vng on m m t y bin c th c truy
xut. Thng thng mt on m c nh ngha bng mt cp du {}. Trong mt phm vi
hot ng (scope), khng th c hai bin cng mang mt tn trng nhau.
V d sau thc hin vic in ra cc s t 0 n 9 ra mn hnh ri tip tc in cc s t 9 n 0
ra mn hnh;
public static int Main()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
} // bin i ra khi phm vi
// Chng ta c th khai bo thm bin i y
for (int i = 9; i >= 0; i--)
{
Console.WriteLine(i);
} // bin i ra khi phm vi y
return 0;
}
Hnh 9 Minh ha phm vi ca bin

11

Lp trnh .Net
Vi v d trn, trong 2 vng lp for khc nhau, ta c th khai bo cng mt bin i cho d 2
vng lp ny cng nm trong mt khi lnh. iu ny hp l bi v i c khai bo trong hai
vng lp khc nhau v l bin cc b ca 2 vng lp . Khi vng lp hon c thc hin
xong th bin t ng c gii phng v v th cc bin cc vng lp khc nhau th c th
c t tn ging nhau.

IV. Hng
Mt hng (constant) l mt bin nhng tr khng th thay i c sut thi gian thi hnh
chng trnh. i lc ta cng cn c nhng gi tr bao gi cng bt bin.
Hng c khai bo nh sau:
const datatype identifier = value;
V d: const int numberOfModules = 12;
Hng c nhng c im sau:
Hng bt buc phi c gn gi tr lc khai bo. Mt khi c khi gn th khng
th vit ln
Tr ca hng phi c th c tnh ton vo lc bin dch, do khng th gn mt
hng t mt tr ca mt bin.
Hng bao gi cng static, tuy nhin ta khng th a t kho static vo khi khai bo
hng
C ba thun li khi s dng hng trong chng trnh ca bn:
Hng lm cho chng trnh c d dng hn, bng cch thay th nhng con s v cm
bi nhng tn mang y ngha hn
Hng lm cho d sa chng trnh hn, vic thay i gi tr ch cn thc hin mt ln
ngay ti v tr khai bo hm
Hng lm cho vic trnh li d dng hn, nu bn gn mt tr khc cho mt hng vn
c khai bo u trong chng trnh trnh bin dch s t ng thng bo li v
hng ny c khai bo

V.

Kiu d liu

C# l mt ngn ng c kim sot cht ch v mt kiu d liu, ngoi ra C# cn chia cc


kiu d liu thnh hai loi khc nhau: kiu tr (value type) v kiu qui chiu (reference type).
Ngha l trn mt chng trnh C# d liu c lu tr mt hoc hai ni tu theo c th ca
kiu d liu.
C# cng h tr kiu con tr (pointer type) ging nh C++ nhng t khi dng n v ch
dng khi lm vic vi on m unmanaged. on m unmanaged l on m uc to ra
ngoi .NET Framework, chng hn nhng i tng COM.

12

Lp trnh .Net

V.1. Kiu gi tr (Value Types)


V.1.1.

Kiu d liu s nguyn


Tn kiu
sbyte
short
int
long
byte
ushort
uint
ulong

Din gii
S nguyn c du 8bit
S nguyn c du 16bit
S nguyn c du 32bit
S nguyn c du 64bit
S nguyn khng du 8bit
S nguyn khng du 16bit
S nguyn khng du 32bit
S nguyn khng du 64bit

Min gi tr
-128:127
-215:215-1
-231:231-1
-263:263-1
0:255
0:216-1
0:232-1
64
0:2 -1

Hnh 10 Danh sch cc kiu s nguyn ca C#


Vi cc kiu d liu trn, ta c th khai bo bin nh sau:
long x = 0x12ab; // ghi theo hexa
int i = 1234;
Khi s dng cc kiu s nguyn ca C# cn ch rng kiu int ca C# c cp pht 32bit
khng ging nh kiu int ca Ansi C vn ch c cp pht 16bit. Ni mt cch khc kiu int
trong C# tng ng vi kiu long trong Ansi C.

V.1.2.

Kiu d liu du chm ng


Tn kiu
Din gii
float
Kiu s thc 32bit
double Kiu s thc 64bit

S ch s c ngha
7
16

Hnh 11 Danh sch cc kiu d liu du chm ng

V.1.3.

Cc kiu d liu khc


Tn kiu
Din gii
decimal S thp phn 128bit
bool
Kiu logic
char
Kiu k t 16bit

Ghi ch
28 ch s c ngha
[true, false]
kiu k t unicode

Hnh 12 Cc kiu d liu khc

V.2. Kiu tham chiu (Reference Type)


C# h tr 2 kiu tham chiu c bn: object, string. Kiu object l kiu d liu d liu gc,
tt c cc kiu d liu khc u c dn xut t kiu d liu ny. Kiu string l kiu d liu
trnh by chui k t. Chui string trong C# h tr hon ton unicode.
Cng ging nh Ansi C v Java, C# nh ngha gi tr ca mt chui trong cp du ngoc
kp , cn c gi l Double Quote. tin cho vic x l tt c cc k t, C# nh ngha
mt s k t c bit gi l Escape Sequence.
13

Lp trnh .Net
Danh sch cc Escape Sequence thng dng.
Escape Sequence
\'
\"
\0
\n
\\

Din gii
Single quote
Double quote
Null
Return
Backslash

Hnh 13 Danh sch Escape Sequence


C# h tr ton t + ghp ni cc chui v ton t = gn gi tr cho chui. V d sau
trnh by cc ton t dng cho kiu string.
public static int Main()
{
string s1 = "Windows folder is: ";
string s2 = "C:\\windows";
Console.WriteLine("s1 is: " + s1);
Console.WriteLine("s2 is: " + s2);
s1 = s1 + s2;
Console.WriteLine("s1 is now: " + s1);
Console.WriteLine("s2 is now: " + s2);
return 0;
}
Hnh 14 Minh ha cc ton t trn kiu string
Chng trnh chy ra kt qu nh sau:
s1 is: Windows folder is
s2 is: C:\windows
s1 is now: Windows folder is C:\windows
s2 is now: C:\windows
Hnh 15 Kt qu chy chng trnh v d trong hnh 14
Vi v d trn, cho thy sau khi thc hin ton t gn th gi tr ca biu thc bn phi s
c gn vo bin bn tri cho d biu thc pha bn phi c s xut hin ca bin c tr
v. Cng trong v d ny, m t k t \ (k t ng dn hay k t Backslash), chng ta
phi s dng quy nh ca Escape Sequence, trong trng hp ny, v d s dng k t \\.

VI. Cu trc iu kin


VI.1. Cu lnh iu kin if..else
VI.1.1.

C php

if (condition) statement(s);
[else statement(s);]

14

Lp trnh .Net

VI.1.2.

Cch s dng

Lnh iu kin if thc hin mt hoc nhiu lnh trong khi lnh nu kt qu tr v ca
biu thc condition l true, ngc li, cc lnh hoc khi lnh ngay sau t kha else s c
thc hin. Xt v d sau:
if (i != 0)
{
Console.WriteLine(i is not Zero);
}
else
{
Console.WriteLine(i is Zero);
}
Hnh 16 Minh ha cu trc if..else
V d trn thc hin vic kim tra bin i c bng 0 hay khng. Nu i bng 0, chng trnh
s xut ra i is Zero, ngc li, chng trnh s xut ra i is not Zero.

VI.2. Cu lnh switch..case


Trong trng hp phi dng nhiu lnh if..else lng nhau, chng trnh s tr nn phc tp
v kh g ri. khc phc vn ny, C# cung cp cu trc lnh switch..case phc v
cho vic lp trnh khi x l mt lot cc trng hp khc nhau ca cng mt iu kin.

VI.2.1.

C php

switch (expression)
{
case (condition): statement(s);
[break;]

case (condition): statement(s);


[break;]
[default: statement(s);]
}

VI.2.2.

Cch s dng

Vi tng trng hp ca biu thc iu kin expression, cc lnh tng ng s c thc


hin. Trong cu trc lnh ny, lnh break c s dng nhy ra khi khi lnh. Ch dn
default c s dng gii quyt trng hp ca iu kin m trng hp ny khng nm
trong tt c cc trng hp lit k trong cc ch dn case. V d sau trnh by cch s dng
lnh switch..case vo vic tnh s ngy trong mt thng c nhp t bn phm.

15

Lp trnh .Net

Hnh 17 Minh ha cu trc switch..case

VII. Cu trc lp
VII.1. Cu trc lp for
VII.1.1. C php
for (initializer; condition; iterator)
statement(s)

VII.1.2. Cch s dng


Cu trc ca lnh for bao gm biu thc khi to initializer, iu kin kt thc condition,
biu thc bin i iterator. Lnh for thc hin vic lp mt hoc nhiu lnh trong khi iu
kin kt thc condition vn cn ng. V d sau minh ha cho chng trnh xut ra mn hnh
tt c cc s dng chia ht cho 3 m nh hn 100.

Hnh 18 Minh ha cu trc lp for

16

Lp trnh .Net

VII.2. Cu trc lp while


VII.2.1. C php
while(condition)
statement(s);

VII.2.2. Cch s dng


Cu trc while thc hin vic lp mt hay nhiu lnh khi iu kin condition vn cn
ng. Khi s dng cu trc ny, ngi lp trnh cn phi ch ng thc hin cc cu lnh to
s bin i trnh nhng vng lp v tn. V d sau minh ha cho chng trnh tnh c
chung ln nht ca 2 s nguyn a, b.

Hnh 19 Minh ha cu trc lp while

VII.3. Cu trc lp do..while


VII.3.1. C php
do
{
statement(s);
} while (condition);

VII.3.2. Cch s dng


Cu trc lp do..while thc hin vic lp mt hoc nhiu lnh cho ti khi iu kin
condition c gi tr false. Cu trc lp ny c c im l cc lnh c thc hin t nht mt
ln cho d ngay t u iu kin l false. V d sau y minh ha cho chng trnh tnh
tng cc s dng b hn 100.

17

Lp trnh .Net

Hnh 20 Minh ha cu trc lp do..while

VII.4. Cc lnh h tr cho cu trc lp


VII.4.1. Lnh break
Lnh break thc hin vic dng vng lp. Khi chng trnh ang chy m gp lnh break
th chng trnh s lp tc chm dt vng lp cho d iu kin ca vng lp vn cho php
chy tip. Trong trng hp c nhiu vng lp lng nhau, chng trnh s chm dt vng lp
gn vi break nht. V d sau s dng vng lp for v cu lnh break tnh tng tt c cc
s nguyn t nh hn 100.

Hnh 21 Minh ha lnh break

VII.4.2. Lnh continue


Trong khi thc hin vng lp, ngi lp trnh i khi cn thc hin vic b qua mt s
dng lnh tip tc thc hin vic lp cho ln tip theo. C# h tr lnh continue thc
hin chc nng ny. Lnh continue thc hin vic chuyn sang ln lp tip theo v b qua cc

18

Lp trnh .Net
lnh nm trong vng lp nhng nm pha sau n. V d sau minh ha cho vic s dng vng
lp for v lnh continue.

Hnh 22 Minh ha lnh Continue

VIII.

Mng (Array)

Mng hay cn gi l Array l mt cu trc d liu cu to bi mt s bin c gi l


nhng phn t mng. Tt c cc phn t ny u thuc mt kiu d liu. Ngi lp trnh c
th truy xut phn t thng qua ch s (index). Ch s bt u bng zero.
Ngi ta thng chia mng thnh 2 loi: Mng mt chiu v mng nhiu chiu. i vi
mng nhiu chiu gio trnh ny ch trnh by mng hai chiu bi v mng hai chiu l c
trng tiu biu cho mng nhiu chiu.

VIII.1.

Mng mt chiu

VIII.1.1. C php khai bo


type[ ] array-name;
hoc type[] array-name = new type[length];
Vi c php trn, type l kiu d liu ca cc phn t trong mng, array-name l tn ca
mng, length l di ca mng di ny chnh l s phn t ca mng.

VIII.1.2. Cch s dng


lm vic vi mng, ngi lp trnh thng can thip trc tip vo tng phn t ca
mng thng qua ch s index vi c php array-name[index]. V d:
x = A[0];
st = B[i];
B[1] = x;
duyt mng, ngi lp trnh thng s dng cu trc lp. Bn cnh cc cu trc lp
trnh by, C# cn cung cp mt cu trc lp khc l vng lp foreach.

VIII.1.3. Cu trc lp foreach


Cu trc lp foreach c thc hin theo cu trc sau:
foreach (data-type identifier in array-name) statement(s)

19

Lp trnh .Net
Vi mi gi tr ca mng array-name, chng trnh s thc hin mt hoc nhiu lnh
statement(s). Trong , gi tr ca mi phn t c tham chiu qua bin identifier m bin
ny thuc kiu data-type. V d sau minh ha vic s dng mng mt chiu v minh ha cho
phng php duyt mng mt chiu bng cu trc lp foreach.

Hnh 23 Minh ha cu trc foreach khi duyt mng Array

VIII.2.

Mng hai chiu (Ma trn)

VIII.2.1. C php khai bo


type[,] array-name;
hoc type[,] array-name = new type[height, width];
Vi c php trn, type l kiu d liu ca cc phn t trong mng, array-name l tn ca
mng, height v width ln lt l s dng v s ct ca ma trn. V d nh sau:
int[,] myRectArray = new int[2,3]; //khai bo mng s nguyn c 2 dng v 3 ct
int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; //khai bo mng 4 hng 2 ct
string[,]
beatleName
=
{
{"Lennon","John"},
{"McCartney","Paul"},
{"Harrison","George"}, {"Starkey","Richard"} }; //khai bo mng string c 2 dng 4 ct

VIII.2.2. Cch s dng


lm vic vi mng hai chiu, ngi lp trnh c th can thip trc tip vo tng phn t
ca mng thng qua ch s hng v ch s ct. V d nh sau:
A[0, 1] = 2; //Gn gi tr 2 vo phn t hng 0 ct 1
Console.Write(A[2, 3]); // Ghi gi tr ca phn t hng 2 ct 3 ra mn hnh
V cu trc lu tr ca ma trn bao gm cc hng v cc ct nn ngi lp trnh thng s
dng hai vng lp lng nhau thc hin vic duyt c ma trn. V d sau minh ha vic
duyt ma trn bng cch s dng hai vng lp lng nhau, trong qu trnh lp, chng trnh s
hin th cc chui trong ma trn.

20

Lp trnh .Net

Hnh 24 Minh ha vic s dng hai vng lp lng nhau khi dng ma trn

IX. X l nhp xut file


IX.1. Khi nim file
File cn c gi l tp tin hoc c gi l tp l khi nim dng ch tp hp nhng
thng tin lin quan vi nhau v nhng thng tin ny c lu tr trn a.
Khc vi nhng thng tin c lu tr trn RAM, cc thng tin c lu trong file phi
c truy cp mt cch tun t, ngha l mun c hoc ghi d liu v tr th i th b x l
phi thc hin vic c hoc ghi t v tr 0 n v tr i-1.

IX.2. Phn loi


Ty vo ni dung d liu cha trong file, file c chia thnh 2 loi: file nh phn (binary
file) v file vn bn (text file). Trong phn ny gio trnh ch trnh by phng php c ghi
i vi file vn bn, ngi hc t nghin cu phng php c ghi file nh phn t cc ti
liu tham kho trong phn ti liu tham kho cui gio trnh.

IX.2.1.

File vn bn (text file)

File vn bn l file m d liu ghi trong l nhng k t thuc bng m ASCII chun
(bng m khng bao gm cc k t iu khin) trong cc k t c t chc thnh nhiu
hng. Cc hng c phn cch bng k t xung hng.
i vi cc file vn bn c t chc trn h iu hnh Dos hoc Windows ca Microsoft
th cc hng c phn cch bi mt cp k t bao gm: k t xung dng v k t v u
dng. i vi cc file vn bn c t chc trn h iu hnh Unix hoc Linux th cc hng
c phn cch bi mt du xung hng. iu ny gii thch ti sao khi ngi s dng m
mt s file vn c son tho trong h iu hnh Linux bng chng trnh son tho ca
Windows (c th l notepad) th tt c cc dng ca file c ni thnh mt dng duy nht.
Cc file vn bn thng thng l nhng file vn bn n gin hoc nhng file m ngun
ca nhng ngn ng lp trnh hoc nhng file c s d liu XML.

21

Lp trnh .Net

IX.2.2.

File nh phn (binary file)

File nh phn l file m thng tin lu tr mt cch tng qut. D liu lu tr trn file nh
phn c chia thnh tng byte, mi byte c c trng bi mt k t ca bng m ASCII
m rng.
Cc file nh phn thng c mt cu trc hoc nh dng ring, nhng file c bin son
theo nh dng no th ch c nhng phn mm hiu c nh dng mi c th c c.
V d nhng file hnh ng th ch c th c c bng nhng chng trnh hin th hnh nh.
Cc chng trnh son tho cho file vn bn th khng hin th chnh xc file nh phn. C
th l khi ngi s dng dng chng trnh son tho vn bn m mt file thc thi (.exe)
th chng trnh son tho vn bn y ch hin th cc k t c bit.
Cc file nh phn thng thng l nhng file thc thi (.exe), file hnh nh (.jpg, .gif, ..png,
.bmp, ), file m thanh (.mp3, .wma, .mid, .wav, ), file cha cc on phim (.mpg, .wmv,
.rm, ) v nhiu dng nh dng mc nh khc.

IX.3. c v ghi file vn bn


Visual Studio cung cp nhiu i tng thc hin vic c v ghi file vn bn. Gio
trnh ny trnh by vic c bng cp i tng StreamReader v StreamWriter. y l cp
i tng c/ghi tng qut, ngi lp trnh c th s dng cp i tng ny thc hin
vic c hoc ghi trn cc lung nhp xut khc. s dng phng thc ny, ngi lp
trnh phi khai bo s dng namespace System.IO ca Visual Studio bng lnh using
System.IO chi tit v namespace s c trnh by trong chng tip theo. Ngi hc t
nghin cu cc phng php c ghi file khc t cc gio trnh c nu trong phn ti liu
tham kho.

IX.3.1.

c file vn bn bng StreamReader

StreamReader l mt lp v lp ny thc to ra cc i tng phc v vic c d liu t


mt lung hoc mt file. Khi khi to i tng, ngi lp trnh phi cung cp tn file cho
phng thc khi to. Vic khi to i tng c th sinh ra cc li nh file khng tn ti,
a b hng, , do , hm khi to phi c t trong khi try/catch x l bit l X
l bit l s c trnh by chng tip theo.
i tng StreamReader cung cp nhiu phng php c d liu, trong phng
thc hu hiu nht l phng thc ReadLine(). Phng thc ReadLine() thc hin vic c
tng dng trong file vn bn v tr v mt chui string. V d sau trnh by vic c d liu
t file vn bn c tn l input.txt, file ny cha cc s nguyn, mi s nguyn nm trn mt
dng.

22

Lp trnh .Net

Hnh 25 File input.txt


Chng trnh sau s dng i tng StreamReader c file input.txt v tnh tng cc s
nguyn ca trong file .

Hnh 26 Chng trnh s dng StreamReader c file vn bn

23

Lp trnh .Net

IX.3.2.

Ghi file vn bn bng StreamWriter

Cng ging StreamReader, StreamWriter l mt lp v lp ny to ra cc i tng phc


v vic ghi d liu vo mt lung hoc mt file. Khi khi to i tng, ngi lp trnh phi
cung cp tn file cho phng thc khi to. Vic khi to i tng c th sinh ra cc li nh
a b hng hoc li nhp xut, , do , hm khi to phi c t trong khi try/catch
x l bit l X l bit l s c trnh by chng tip theo.
i tng StreamWriter cung cp nhiu phng php ghi d liu, trong phng
thc hu hiu nht l phng thc Write(). Phng thc Write() thc hin vic ghi mt chui
string vo file vn bn. V d sau trnh by vic ghi d liu t file vn bn c tn l output.txt.

Hnh 27 Chng trnh s dng StreamWriter ghi file vn bn


Sau khi chy chng trnh, file vn bn thu c nh sau.

Hnh 28 File kt qu thu c sau khi chy chng trnh

24

Chng 3

LP TRNH HNG I TNG VI C#


I.

Mc tiu

T cc hc phn Lp trnh hng i tng vi C++ v Lp trnh Java, ngi hc


c tip cn l thuyt v thc hnh vi Lp trnh hng i tng (Object Oriented
Programming). Trong chng ny gio trnh cng cung cp nhng kin thc c bn v lp
trnh hng i tng tuy nhin cc nguyn l ny c vn hnh bng ngn ng C#. Nhng
ch chnh c trnh by trong chng ny nh sau:
Lp (Class) v i tng (Object)
Thuc tnh (Attribute) v Phng thc (Method)
Np chng ton t (Overloading)
K tha (Inheritance)
a hnh (Polymorphism)
Interface
Cui chng ny ngi hc s c kin thc gii quyt cc vn lp trnh bng
quan im hng i tng.

II. Lp (Class)
Lp l mt khi nim trong phng php lp trnh hng i tng (Object Oriented
Programming) c dng ch s gi gn cc d liu v cc phng thc hot ng trn d
liu . Lp cn c hiu l khi nim dng ch tp hp tt c cc thc th c chung mt
s thuc tnh no trong phm vi ng cnh no . V d, khi xt mt s thc th gm bo,
h, s t, nga vn; Nu cc thc th ny c xt trong ng cnh ch ch n 3 yu t gm
mu lng, cn nng, tc di chuyn th cc thc th ny c th c gp chung vo mt lp
gi l lp Th;
Trong C#, tt c cc lp c dn xut t lp c s System.Object. Mi lp thng c
nh ngha trong mt file .cs v file ny c thm vo project. V d sau y minh ho vic
xy dng mt class. Trong class ny ch c mt thuc tnh l name v mt phng thc l
Speak(). Cng ging nh cc ngn ng C++ v Java, C# cung cp con tr this dng tham
chiu n mt th hin (instance) ca class ang xt.

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

25

Lp trnh .Net

Hnh 29 Minh ho vic xy dng Class trong C#

Trong lp c mt phng thc mc nh dng khi to i tng c gi l phng


thc khi to (constructor). Phng thc khi to c c t tn trng vi tn lp v c
ch dn truy cp bt buc l public phng thc ny c th c triu gi t bn ngoi
phng thc. Cc ch dn bin dch (accessibility) bao gm: public, internal, protected,
private c m t chi tit theo hnh sau.
Ch dn truy cp

M t

public

Bin v phng thc c th c truy cp t bt k


ni u (bn ngoi cng nh bn trong lp)

internal

Bin v phng thc ch c th c truy cp trong


cng mt gi

protected

Bin v phng thc ch c truy cp ngay trong


lp hoc c c truy cp t trong lp k tha
ca n

private

Bin v phng thc ch c truy cp ngay trong


phm vi ca lp
Hnh 30 M t cc ch dn truy cp trong C#

26

Lp trnh .Net

III. i tng (Object)


i tng l khi nim dng ch mt trng hp c th (instance) ca mt lp. Trong
lp trnh hng, i tng l thc th c bn ca vic lp trnh, cc ng x v hnh vi ca i
tng c chng trnh triu gi thng qua cc phng thc c m t lp thuc i
tng . Cng ging nh cc lp trong C#, tt c cc i tng cng c k tha t i
tng c s System.Object. V d sau minh ha vic khai bo v s dng i tng ca lp
Dog va c m t trn.

Hnh 31 Minh ha vic khai bo v s dng i tng


Trong v d trn, ton t new c s dng khi khi to i tng. Tham s ban u ca
phng thc khi to c a vo trc tip t tham s ca ton t new. Phng thc c ch
dn truy cp l public c triu gi bng cch gi tn i tng v tn phng thc, trong
du chm (dot) c s dng ngn cch gia i tng v phng thc cn triu gi.

IV. Thuc tnh (Attribute)


Thuc tnh l khi nim dng ch cc tnh cht c trng ca mt lp. Trong mt lp,
cc thuc tnh c m t mt cch nh tnh bao gm tn thuc tnh, kiu d liu v ch dn
truy cp. Trong mt i tng, cc thuc tnh c th hin mt cch nh lng vi vic cc
thuc tnh c cung cp mt gi tr xc nh (gi tr mc nh l null nu nh thuc tnh
cha cung cp gi tr)
C# cung cp th tc get v set thc hin vic truy cp mt thuc tnh, th tc get ly
gi tr v th tc set thc hin vic thay i gi tr. V d hnh 25 m t th tc get v set
i vi thuc tnh private string _name, th tc get v set thc hin vic nh ngha mt nh
danh (alias) khc c tn l Name ngi dng s dng khi truy cp vo thuc tnh _name.
Nu khng c th tc ny, ngi s dng khng th truy cp thuc tnh _name v thuc tnh
ny c nh ngha vi ch dn truy cp l private.

V.

Phng thc (Method)

Phng thc l khi nim dng ch mt ng x hoc l mt hnh ng ca i tng.


Trong C#, phng thc c chia thnh 2 loi: non-static method v static method.

27

Lp trnh .Net
Non-static method l phng thc ch c th c gi t i tng, phng thc ny
mang tnh c th ca i tng v nhng i tng khc nhau trong cng mt lp s
c nhng kt qu tr v khng ging nhau khi cng triu gi mt phng thc thuc
loi ny. Trong v d hnh 27, phng thc Speak() do i tng toto thc hin s
c kt qu khc vi phng thc do i tng milu triu gi.
Static method l phng thc c trng cho tt c cc i tng thuc lp . Phng
thc ny khng th c gi t i tng m phi c gi trc tip t lp. Kt qu
chy phng thc ny khng ph thuc vo i tng m ph thuc vo tham s u
vo ca phng thc. Trong cc v d trn, phng thc Console.Writeln() l phng
thc static ca lp Console.

VI. Np chng ton t (Overloading)


Np chng ton t l khi nim dng ch vic nh ngha li mt s ton t m nhng
ton t ny lm vic vi d liu l i tng thuc lp m ngi lp trnh ang xy dng.
Ton t c tnh ng nht i vi tt c cc i tng thuc lp hoc i vi tt c cc gi tr
thuc kiu d liu do C# yu cu tt c cc ton t phi l static method vi ch dn truy
cp l public. Trong C#, tt c cc lp u dn xut t lp c s System.Object v lp ny
vn nh ngha sn phng thc equal v ton t gn (=) do ngi lp trnh khng cn
thit phi nh ngha li ton t gn. V d sau y trnh by vic np chng ton t cng (+)
i vi i tng thuc lp phn s (Fraction).

Hnh 32 Minh ha vic np chng ton t

28

Lp trnh .Net
V d trn trnh by vic np chng ton t cng (+) 2 phn s (Fraction). Ton t ny
c khai bo vi tin t static operator v ch dn truy cp l public.

VII. K tha (Inheritance)


K tha l khi nim then cht ca cc ngn ng lp trnh hng i tng dng hiu
hin tng mt lp thc hin vic s dng li mt s thuc tnh (attribute) hoc phng thc
(method) ca mt lp khc. Lp s dng cc thuc tnh v phng thc ca lp khc c
gi l lp dn xut, i khi cn c gi l lp con. Lp cho php lp khc s dng cc
thuc tnh v phng thc c gi l lp c s, i khi cn c gi l lp cha.
K tha trong hng i tng c chia thnh hai loi: n k tha (single inheritance)
v a k tha (multiple inheritance). n k tha c hiu l mt lp dn xut s dng cc
thuc tnh v phng thc ca mt lp c s duy nht. Ngc li, nu mt lp s dng cc
thuc tnh v phng thc t nhiu lp s s th c gi l a k tha.
C++ h tr c n k tha v a k tha, tuy nhin C# ch h tr n k tha. Vic s
dng a k tha mt cch hp l s gip cho chng trnh ti u hn v mt kch thc
nhng vic x l li (nu c) s v cng phc tp. y l l do c bn m C# ch thit k cho
n k tha. V d sau trnh by vic xy dng mt lp c s v hai lp k tha.

Hnh 33 Lp c s
V d trn trnh by vic xy dng lp c s Dog gm hai thuc tnh l Name, Weight v
hai phng thc l Speak(), DrinkWater().

29

Lp trnh .Net

Hnh 34 Cc lp dn xut
V d trn trnh by hai lp dn xut t lp c s l Dog. Lp th nht l GermanShepard
trong c thm phng thc l OnGuard(), lp cn li l JackRussell c thm phng thc
l Chew(); V d sau s minh ha vic s dng hai lp dn xut dn xut trn.

Hnh 35 Minh ho vic s dng lp dn xut


V d trn khai bo hai i tng: i tng Simon thuc lp GermanShepard v i
tng Daisy thuc lp JackRussell. Khi gi phng thc Speak() v DrinkWater() t lp c
s th cc ng x (hoc kt qu thu c) ca chng trnh l ging nhau. Tuy nhin khi gi

30

Lp trnh .Net
phng thc c th t lp dn xut phng thc OnGuard() i vi Simon v phng thc
Chew() i vi Daisy th kt qu thu c khc nhau.
Trong mt ng dng, vic tn dng tnh nng k tha ca hng i tng lm cho
chng trnh tr nn ngn gn, d hiu. Trong tnh hung chng trnh c cha rt nhiu lp
tng t nhau trong c rt nhiu phng thc ging nhau th vic xy dng mt lp c s
trong c nhiu phng thc chung lm cho vic cp nht chnh sa c thun li, v
ngi lp trnh ch cn sa mt ln ti lp c s thay v phi chnh sa tng phng thc
trong tng lp.

VIII.

a hnh (Polymorphism)

a hnh l thut ng c dng trong hng i tng dng ch vic ng x khc nhau
ca cc i tng trong nhng lp k tha t mt lp c s khi mt phng thc chung c
gi. Tnh a hnh c s dng trong trng hp mt phng thc chung c s dng trong
nhiu lp dn xut nhng ng vi mi lp dn xut c th th phng thc ny c nhng ng
x khc nhau.
thc hin c tnh a hnh, phng thc lp c s phi c m t dng o
(virtual) v phng thc lp dn xut phi c ghi (override). Override l thut ng
c dng ch vic lp dn xut c t li phng thc lp c s. V d sau trnh by
vic thc hin tnh nng a hnh khi xy dng mt lp c s v hai lp dn xut.

Hnh 36 Lp c s v phng thc virtual khi thc hin tnh a hnh


Hnh trn minh ha cho lp c s trong c mt phng thc o (virtual). Phng thc
ny s c ghi (override) lp c s. Cc hnh tip theo trnh by vic xy dng hai lp
dn xut trong mi lp, phng thc Speak() c nh ngha li bng cch ghi (override).
Nu ngi lp trnh khng s dng t kha override th Visual Studio vn khng bo li. Tuy
nhin, phng thc Speak() trong lp dn xut c hiu l phng thc ring ca chnh lp
dn xut v phng thc ny ch c gi trc tip t lp dn xut.

31

Lp trnh .Net

Hnh 37 Lp dn xut th nht c phng thc override

Hnh 38 Lp dn xut th hai c phng thc override


minh ha cho kh nng ng x ca nhng i tng thuc nhng lp khc nhau khi
chng u triu gi mt phng thc ta xy dng mt mng gm 3 i tng trong i
tng th nht thuc lp c s, hai i tng cn li thuc lp dn xut. Khi gi phng
thc Speak() cho tng i tng, chng trnh s cho ra cc kt qu khc nhau do tnh nng
Polymorphism.

Hnh 39 Minh ha vic s dng Polymorphism


32

Lp trnh .Net
Trong hnh trn, mi phn t ca mt mng c gn nhng i tng khc nhau. V cc
i tng u thuc mt lp c s hoc thuc lp dn xut t chnh lp c s nn vic
gn nhng i tng nh th vo cng mt mng khng gy ra xung t.. Cng trong v d
trn, khi thc hin mt vng lp duyt qua tt c cc i tng m trong , ng vi mi i
tng, phng thc Speak() c th s c gi v kt qu thu c s khc nhau qua tng
phng thc.

IX. Interface
Interface c mt tc gi khc dch thnh cc thut ng l giao din hoc giao tip.
Thut ng Interface c dng ch mt lp tru tng. Lp tru tng ny c xy dng
nhm thun tin ha vic pht trin chng trnh theo phong cch xy dng thnh phn c s
(component-based). Interface cung cp nhng tha thun chung cho php cc thnh phn c
th lm vic vi nhau. Interface c s dng rt c lc trong vic x l cc s kin (Event
Handler) khi xy dng cc i tng giao din ngi dng (GUI Graphic User Interface).
Ngi hc c th tham kho m hnh x l s kin ActionPerformce khi x l Button trong
hc phn Java hc trc .
Interface khng phi l mt lp hon chnh nn c bt c m ci t no v khng th
c dng khi to i tng. Interface ch c cc thuc tnh, cc phng thc (phng
thc ny ch c tn khai bo m khng c m ci t). Tt c cc thuc tnh, phng thc
phi c khi bo vi ch dn truy cp l public.
Khi mt lp thc hin vic k tha t mt hoc nhiu Interface th trong lp , tt c cc
phng thc thuc cc Interface u phi c nh ngha hon chnh.

33

CHNG 4

X L BIT L
I.

Mc tiu

Trong chng ny gio trnh s trnh by qu trnh nm bt v x l li khi lp trnh C#.


Nhng ch chnh c trnh by trong chng ny nh sau:
Bit l (Exception)
X l bit l (Exception Handler)
X l nhiu bit l lng nhau
X l nhiu bit l song song
Cui chng ny ngi hc s c kin thc xy dng mt chng trnh tng mnh
trong cc tnh hung gy li thng thng u c nm bt gii quyt.

II. Bit l (Exception)


II.1. Chng trnh v li
Chng trnh (theo quan im ca cng ngh thng tin) l mt khi nim dng ch tp
hp cc mnh lnh c trt t m da vo my tnh s thi hnh. Qu trnh con ngi son
tho tp hp cc lnh cho chng trnh c gi l lp trnh. Trong qu trnh lp trnh, c th
v l do ny hoc l do khc m kt qu thu c ca chng trnh khng nh mong mun,
nhng tnh hung khng mong mun nh th gi chung l li (error hoc defect).
Trong lnh vc lp trnh, li thng c chia thnh 2 loi chnh: li tin bin dch (precompiled error) v li khi thc thi (runtimed error).
Li tin bin dch (pre-compiled error) l nhng li xut hin ngay khi xy dng chng
trnh v c trnh bin dch thng bo trong qu trnh bin dch t ngn ng lp trnh sang
ngn ng my hoc ngn ng trung gian. Cc li thuc dng ny thng thng l cc li lin
quan n c php, lin quan n khai bo d liu hoc lin quan cc cu lnh vn c h tr
sn. Cc li tin bin dch thng thng khng nghim trng v thng c pht hin cng
nh chnh sa d dng. Mt s IDE hin ny h tr vic kim tra li t ng ngay trong qu
trnh son tho iu lm cho cc li v cu trc gim i ng k. Cc IDE h tr tnh nng
ny bao gm: Visual Studio (tt c cc phin bn), NetBean, Eclipse, Jbuilder,
Li khi thc thi (runtimed error) l nhng li xy ra khi chy chng trnh. y l mt
dng li tim n v khi chng trnh chy n mt trng thi nht nh mi sinh ra li. Cc li
thuc dng ny rt nghim trng v rt kh khc phc v lc , chng trnh c bin
dch sang m my hoc m trung gian. Cc li thuc dng ny thng c rt nhiu nguyn
nhn: c th do thut ton, c th s khng tng thch ca h thng khi d liu gin n, hoc
cng c th do chnh ngi lp trnh khng lng ht c tt c cc trng thi c th xy ra

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

34

Lp trnh .Net
i vi chng trnh. C mt vi v d c th cho cc li dng ny m ngi lp trnh thng
gp phi nh: li khi chuyn kiu t kiu chui k t sang kiu s nguyn, li khi truy xut
n phn t nm ngoi mng, li khi kt ni c s d liu,

II.2. Khi nim bit l


Bit l (Exception) l khi nim c s dng trong cc ngn ng lp trnh bc cao dng
ch nhng bin c khng mong i khi chy chng trnh. Bn cht bit l l nhng li
xy ra trong qu trnh thc thi (runtimed error).
Cc ngn ng lp trnh bc cao nh Java v .Net u cung cp mt c ch x l bit l
(gi l c ch try/catch) v c t cc lp c trng cho tng dng bit l m mt chng
trnh thng gp.

III. X l bit l (Exception Handler)


III.1. C ch try/catch
C ch try/catch l c ch c Visual Studio a ra x l cc bit l. C ch ny c
lp trnh theo c php sau:
try
{
harmful-statement(s);
}
catch (Exception-type identifier)
{
behavior-statement(s);
}
[finally
{
final-statement(s);
}]
Cc lnh c nguy c gy li (harmful-statement(s);) c t trong khi try. Cc lnh ny
c th bao gm cc lnh chuyn i kiu d liu (t kiu chui sang kiu s), lnh lin quan
n nhp xut v thm ch c ton t chia Khi gp mt lnh gy ra li trong khi try,
chng trnh thc thi s lp tc triu gi cc lnh trong khi catch tng ng thc thi.
Khi catch l khi lnh thc hin cc ng x khi c li, trong khi ny, thng thng
ngi lp trnh thc hin vic hin th li. Khi xy dng khi catch, u tin phi khai bo
loi bit l (Exception-type). Tt c Exception-type l nhng lp k tha t lp Exception.
Trong mi lp u c phng thc ToString(), phng thc ny c dng hin th thng
tin li cho ngi s dng. Vi mi dng cu lnh s c mt Exception-type tng ng, ngi
lp trnh xem hng dn chi tit ca cc phng thc trong b hng dn MSDN chn
Exception-type tng ng. Trong trng hp ngi lp trnh khng quan tm n cc loi
bit l, ngi lp trnh c th s dng dng c bn l Exception cho tt c cc bit l.
Phng thc ToString() thch hp s t ng triu gi da theo tnh a hnh ca hng i

35

Lp trnh .Net
tng (Polymorphism) v chng trnh lun hin th chnh ni dung li cho d tt c cc dng
bit l u khai bo chung l Exception.
Khi lnh finally c dng cha cc lnh x l cui cng (final-statement(s)). Cc
lnh trong khi lnh ny c t ng triu gi cho d cc lnh trong khi try c sinh ra li
hay khng. Ngi lp trnh khng nht thit phi khai bo khi lnh finally, tuy vy, khi
lnh ny rt hu ch trong vic thu dn rc hoc gii phng vng nh.
V d sau trnh by vic tnh bnh phng ca mt s nguyn c nhp t bn phm. Nu
d liu nhp vo khng phi s nguyn th chng trnh s bo li.

Hnh 40 V d v x l bit l
Trong v d trn, lnh Convert.ToInt32() thc hin vic chuyn t kiu chui k t sang
kiu s nguyn v lnh ny c kh nng sinh ra li khi chui k t nhp vo khng ng nh
dng s nguyn. Khi xy ra li th chng trnh s khng chy nhng dng tio theo trong
khi try m chuyn sang khi catch. Trong khi catch, cc lnh hin th li c thc hin.
Trong trng hp d liu c nhp vo ng nh dng ca kiu s nguyn, chng trnh
s chy ng kt qu nh sau.

36

Lp trnh .Net

Hnh 41 Kt qu chy chng trnh vi gi tr u vo hp l


Trong trng hp d liu nhp vo khng ng vi nh dng s nguyn, chng trnh s
bo li v hin th c th li ra mn hnh.

Hnh 42 Kt qu chy chng trnh khi xy ra bit l


Trong khi catch, lnh e.ToString() thng c gi hin th li, li ny c hin th
chnh xc vi ni dung li v dng m sinh ra li. Vi c ch x l li ny, ngi lp trnh d
dng tm ra li v chnh sa ph hp.

III.2. X l bit l lng nhau


Trong qu trnh lp trnh, c mt s tnh hung m chng trnh phi thc hin nhiu lnh
c kh nng gy li lin tip. nm bt li mt cch chnh xc, lp trnh vin thng thc

37

Lp trnh .Net
hin vic bt li theo tng bc, ngha l x l bit l ca lnh ny xong th s x l bit l
lnh tip theo.
V d sau y trnh by vic lp trnh tnh s d khi chia s nguyn x cho s nguyn y,
hai s nguyn ny c nhp t bn phm. Trong v d ny, chng trnh c hai lnh c kh
nng sinh li. Lnh th nht l lnh chuyn kiu khi thc hin vic chuyn t kiu chui k t
sang kiu s thc, lnh ny gy ra bit l khi chui k t c nhp vo khng ng nh
dng s thc. Lnh th hai l lnh thc hin php chia ly s d (%), lnh ny gy ra bit l
khi s chia bng 0.

Hnh 43 Minh ha vic s l cc bit l lng nhau


Trong v d trn, khi lnh try/catch bn trong thc hin vic x l bit l khi chia s x
cho s y ly s d. Nu y = 0 th bit l c to ra, bit l ny thuc lp
DivideByZeroException. Khi lnh try/catch bn ngoi thc hin vic x l bit l khi chuyn
kiu t kiu s chui k t sang kiu s nguyn (Xem chi tit phn III.1 trc ).
Trong trng hp c hai s nhp vo x, y u c nh dng ph hp v y khc 0 th
chng trnh chy v cho ra kt qu ng (Nh hnh).

38

Lp trnh .Net

Hnh 44 Kt qu chy chng trnh vi gi tr u vo hp l


Trong trng hp mt trong hai s nhp vo c nh dng khng phi l s nguyn th bit
l u tin c x l. Khi chng trnh s thng bo li v chng trnh khng tip tc
chy thc hin php ton chia (Nh hnh).

Hnh 45 Bit l xy ra khi gi tr nhp vo khng ng nh dng s nguyn


Trong trng hp c hai s nhp vo ng nh dng s nguyn nhng y c gi tr 0 th
bit l tip theo c x l. Trong trng hp ny php chia ly s d s khng thc hin
c v chng trnh s thng bo li (Nh hnh).

39

Lp trnh .Net

Hnh 46 Bit l xy ra khi s chia bng 0


Vi v d trn, ta c th d dng nhn thy vic x l bit l lng nhau mt cch phn cp
s lm cho chng trnh cht ch v li c nm bt d dng. Vi mi bit l c thng
bo ra mn hnh, ngi lp trnh s d dng nhn thy v chnh sa on m ph hp. Tuy
nhin, vic x l nhiu bit l lng nhau mt cch phn cp lm cho m ngun tr ca
chng trnh thm nng n, cc khi try/catch xut hin nhiu ln v lng nhau lm cho cu
trc ca chng trnh tr nn phc tp.

III.3. X l bit l song song


Nh trnh by phn III.2, khi c nhiu lnh c kh nng gy ra bit l th ta cn phi
thc hin x l tt c cc bit l. x l cc bit l, ta thc hin vic s dng cu trc
try/catch mt cch tun t: lnh no thc hin trc th x l trc, sau , ngay bn trong
khi try, ngi lp trnh s dng mt cu trc try/catch khc x l bit l cho lnh tip
theo. Cch lm ny tuy x l tt c cc bit l nhng cng lm cho chng trnh tr nn phc
tp v phi s dng nhiu cu trc try/catch lng nhau. ti u ha m lnh v lm cho
chng trnh thm tng minh, thng thng ngi lp trnh thc hin vic x l bit l song
song.
X l bit l song song l qu trnh x l bit l trong ch c mt khi try nhng li c
nhiu khi catch. Tt c cc lnh cn thit u t trong khi try v mi khi catch s thc
hin vic bt mt bit l tng ng. Khi chy chng trnh, ng vi mt bit l c to ra,
chng trnh thc thi ca .Net Framework s t ng tham chiu n khi catch c bit l
tng ng gi lnh x l.
V d sau trnh by vic ci tin v d mc III.2, trong v d ny, bit l c x l bng
cch s dng hai khi catch khc nhau bt ly 2 bit l khc nhau. Kt qu chy chng
trnh ci tin ny hon ton ging vi kt qu khi chy v d trong mc III.2

40

Lp trnh .Net

Hnh 47 X l nhiu bit l song song

41

Chng 5

TH VIN LIN KT NG
I.

Mc tiu

Sau khi hiu c nguyn l Lp trnh hng i tng vi C#, ngi lp trnh c th t
xy dng c cc lp theo s c t ca bi ton thc t. Tuy nhin, ng dng tr nn
trong sng v khoa hc, cc lp cn c phn loi v tp hp thnh cc th vin. Cc th
vin ny khng nhng gip cho ngi lp trnh d dng tm kim, cp nht, nng cp chnh
m ngun ca mnh m cn gip cho vic pht trin cc ng dng sau ny mt cch d dng
bng cch s dng li cc th vin c. Trong chng ny gio trnh s trnh by mt s
khi nim lin quan n vic xy dng th vin trong cc ngn ng thuc h .Net m tiu
biu l ngn ng lp trnh C#.. Nhng ch chnh c trnh by trong chng ny bao
gm:
Namespace
Th vin lin kt ng
Cch xy dng mt th vin
Cch s dng mt th vin
Mt s th vin v namespace c sn
Cui chng ny ngi hc s c kin thc c th phn chia ng dng ca mnh
thnh nhng phn ring bit mt cch khoa hc tin cho vic pht trin sau ny.

II. Th vin trong lp trnh


II.1. Khi nim
Khi lp trnh, ngi lp trnh khng nht thit phi nh ngha mi th m c th s dng
nhng on chng trnh t nhng ngi khc hoc nhng on chng trnh t mt ng
dng trc ca chnh mnh. Do , khi lp trnh, ngi lp trnh cn phi nhng vo
chng trnh ca mnh mt hoc nhiu on m ca chng trnh khc.
Trong lp trnh, th vin l mt khi nim dng ch tp hp cc on m hoc on
chng trnh m cc on m ny c nhng vo mt chng trnh khc nhm phc v mt
s chc nng xc nh. V d cc th vin phc v lp trnh ha, cc th vin iu khin
phn cng (cn c bit n vi thut ng driver),
Vic s dng th vin c mt ngha v cng thit thc khi ngi lp trnh cn phi thc
hin vic iu khin mt s thit b c th hoc lp trnh giao din hoc kt ni vi h thng
phn cng, v ngi lp trnh khng th hiu ht ton b thng tin v cc thit b cng nh h
thng ha v phn cng do cc thng tin ny c nh sn xut cung cp. Thng
thng, cc thng tin v phn cng v thit b c nh sn xut cung cp cho ngi lp trnh
di dng th vin.
L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

42

Lp trnh .Net

II.2. Phn loi th vin


i vi vic lp trnh ng dng, th vin thng c phn loi da vo vic nhng th
vin vo chng trnh. Vi tiu ch ny, th vin c phn thnh hai loi: th vin tnh
v th vin lin kt ng

II.2.1.

Th vin tnh

Th vin tnh l khi nim ch on m hoc on chng trnh c nhng trc tip vo
mt chng trnh khc. Nhng on m ca th vin tnh c th l m chng trnh hoc m
tin bin dch (pre-compiler code mt dng m rt gn c hiu bi mt ngn ng lp
trnh c th). Khi bin dch, c m ngun ca chng trnh ln m ca th vin tnh c
bin dch cng mt lc thnh m thc thi hoc nh phn (m my) v cha trong mt file ca
chng trnh.
i vi ngn ng C th vic s dng th vin tnh c thc hin thng qua lnh #include,
lnh ny thc hin vic nhng ton b on m ca th vin c gi vo chng trnh m
ngi lp trnh ang s dng.
Vic s dng th vin tnh tuy gip cho ngi lp trnh s dng li nhng on m xy
dng nhng cch lm ny vn c hai nhc im c bn:
Lm tng ln ca chng trnh: Khi nhng nhiu nhiu th vin vo mt chng
trnh th dung lng ca chng trnh s phi tng thm v cha thm m ngun ca
cc th vin cho d ngi lp trnh ch s dng mt t chc nng ca th vin .
Ngoi ra, khi mt th vin tnh c nhng vo nhiu chng trnh th tt c cc
chng trnh u tng dung lng.
To ra s khng ng b khi cp nht: Khi ngi lp trnh chnh sa th vin th kt
qu vn khng c cp nht vo cc chng trnh vn nhng th vin .
chng trnh c s cp nht ng b, ngi lp trnh bt buc phi bin dch li
chng trnh ton b m ngun ca chng trnh c bin dch li vi phin bn
mi nht ca th vin.
gii quyt hai nhc im trn, Microsoft ra gii php Th vin lin kt ng
Dymamic Linked Library gi tc l dll.

II.2.2.

Th vin lin kt ng

Th vin lin kt ng (Dynamic Linked Library) l khi nim c Microsoft a ra khi


xy dng h iu hnh Windows. Th vin lin kt ng c dng ch nhng on
chng trnh hoc nhng on m nh phn nm trong mt file (thng thng c phn m
rng l .dll) m nhng on m ny c th c cc chng trnh khc gi bng cc tham
chiu thay v phi nhng ton b on m vo chng trnh.
Vi th vin lin kt ng, cc chng trnh s gim bt dung lng v rt nhiu chng
trnh c th s dng chung mt th vin, c bit l cc th vin ca h thng nh th vin
ha, cc driver iu khin thit b. Vic s dng th vin lin kt ng s to ra s ng b
khi lp trnh v chnh sa v ch cn chnh sa ngay ti th vin, tt c cc chng trnh c s
dng th vin s t ng thay i m khng cn phi bin dch li.
43

Lp trnh .Net
Khc vi th vin tnh, cc on m cha trong th vin lin kt ng l nhng on m
thc thi c (executable code). Cc on m ny nu c gi ng cch th vn c th th
thi c. iu ny cng ny sinh nhc im l cc th vin lin kt ng vn c th b
nhim virus. Nhng virus ny tuy khng lm gin on chng trnh nhng c th lm cho
chng trnh b li hoc chy sai kt qu. Cc li ny s lm cho ngi lp trnh kh c th
chnh sa ng n v ngi lp trnh khng c kh nng can thip vo cc th vin ca cc
nh cung cp.
Trong cc ngn ng thuc h .Net, cc lp trong cc th vin c phn nhm. Nhng
nhm ny c gi l namespace.

III. Namespace
Namespace cn c bit di mt thut ng khc l khng gian tn. Namespace l mt
khi nim c a vo h ngn ng .Net t phin bn Visual Studio 2003. Namespace c
dng ch mt nhm cc lp trong mt th vin.
Khi nim namespace gip cho vic t chc cc th vin c trong sng, d dng. Ngoi
ra, namespace cn gip ngi lp trnh trnh n s xung t v tn lp, tn hm, tn cc kiu
d liu khi cc tn ny b trng.
Nhiu namespace c th c t lng nhau v ngi lp trnh c ty t tn cc
namespace nh cch t tn bin. Tuy nhin, thng thng namespace c t tn theo mt
quy c chung ca mt chun phn mm. Quy c v vic t tn namespace thng thng
bao gm tn doanh nghip, tn d n, tn module v c phn cch vi nhau bi du chm
(dot) nh: <Tn doanh nghip>.<Tn d n>.<Tn module>
V d: namespace Wrox.ProCSharp.Basics;

IV. Th vin lin kt ng


IV.1. Cch xy dng th vin vi Visual Studio 2005
Trong phn ny, gio trnh s hng dn xy dng mt th vin c tn l MyLibrary. Th
vin ny cha namespace m namespace ny tp hp cc lp c cc hm hin quan n cc
cng thc ton hc. xy dng th vin ny, ngi lp trnh c th thc hin theo cc bc
sau.

IV.1.1.

To mt project cho th vin

Khi to project cho th vin, project ny c template l Class Library. Vic khai bo tn
v th mc c th hin tng t nh vic to Console Application project trnh by
phn trn. V d sau minh ha vic to mt th vin c tn l MyLibrary.

44

Lp trnh .Net

Hnh 48 To mi mt project Library

IV.1.2.

Cu hnh cho project

Trong bc ny chng ta s thit lp namespace mc nh cho th vin v thit lp ng


dn cho th vin. Khi to cc lp cho th vin th cc namespace mc nh ny s t ng
c gn cho cc lp. ng dn ca th vin chnh l v tr ca file .dll sau khi Visual
Studio bin dch thnh cng.

Hnh 49 Minh ha vic cu hnh namespace mc nh


Vi minh ha hnh trn, namespace mc nh c t tn theo chun gm tn doanh
nghip, tn d n, tn module l MyCompany.CSharp.MathLibrary. Namespace ny c

45

Lp trnh .Net
dng ch tp hp cc lp c cc hm lin quan n cc cng thc ton hc. Sau khi thit
lp namespace mc nh, ngi lp trnh s thit lp thm ng dn ca th vin.

Hnh 50 Minh ha vic thit lp ng dn cho th vin


Vi minh ha hnh trn th ng dn ca th vin l th mc bin, th mc ny nm
ngay trong th mc cha project. Sau khi bin dch thnh cng, file MyLibrary.dll s c
to ra ngay trong th mc bin ny.
Trong phn cu hnh cho project cn c nhiu tham s khc. Ty vo yu cu c th,
ngi lp trnh c th cu hnh theo ca chnh mnh. Cc tham s khc v cu hnh, ngi
hc t nghin cu v tm hiu thm.

IV.1.3.

Xy dng lp v phng thc cn thit

Trong bc ny, ngi lp trnh c th xy dng cc lp. Trong cc lp, cc thuc tnh v
phng thc c xy dng theo nguyn l lp trnh hng i tng. Khi xy dng cc lp
trong th vin, v cc lp ny cn c truy xut t mt ng dng khc (truy xut t bn
ngoi), do ch dn truy cp ca cc lp thng thng l public. V d sau trnh by vic
xy dng mt lp trong th vin, lp ny c tn l MyMath. Trong lp MyMath, v d trnh
by vic xy dng mt phng thc IsPrime(int x), phng thc ny l mt hm thc hin
vic kim tra mt s c phi l s nguyn t hay khng. Phng thc IsPrime tr v true nu
gi tr u vo l s nguyn t v tr v false nu ngc li.
Visual Studio t phin bn 2003 tr i cung cp mt gii php vit ch thch (write
commnent) cho c mt phng thc. Vi gii php ny cc ghi ch ca mt phng thc
c ghi thnh tng dng v bt u bng ba du chia (triple slashes). Ngi lp trnh s vit
ghi ch v ghi ch ny c s dng nh mt hng dn cho nhng ngi lp trnh sau ny

46

Lp trnh .Net
khi s dng. Ch , ngi lp trnh c th son tho ghi ch bng Ting Vit c du theo
chun Unicode.

Hnh 51 Minh ha vic xy dng lp trong th vin

IV.2. Cch s dng th vin


Lp trnh vin Visual Studio .Net c th s dng mt s th vin c sn dng file .dll m
file ny cng c xy dng bng Visual Studio .Net. i vi Visual Studio .Net, cc th
vin bng nhng ngn ng khc nhau (trong h .Net) c th tham chiu ln nhau v cng c
th c s dng bi nhng chng trnh khc trong h .Net. Trong phn ny gio trnh s
trnh by mt v d thc hin vic s dng phng thc IsPrime(x) ca th vin trn. V d
ny thc hin vic hin th tt c cc s nguyn t nh hn 100. s dng th vin va
c xy dng, ta thc hin cc bc sau.

IV.2.1.

To thm tham chiu (add reference).

to tham chiu n th vin, ta thc hin vic kch chut phi (right click) vo mc
References trong ca s Solution Explorer ri chn Add Reference. Vic to thm tham chiu
bn cht l s khai bo ng dn n th vin cn tham chiu.Vi khai bo ny, trnh bin
dch s thc hin vic truy xut n cc file .dll v s dng cc lp, phng thc trong cc
file .

47

Lp trnh .Net

Hnh 52 To thm tham chiu cho ng dng

IV.2.2.

Khai bo tham chiu

Trong phn ny, Visual Studio s cung cp cho ngi lp trnh mt giao din ty chn
ngi lp trnh la chn mt th vin tng ng. Trong giao din ny c cc th (tab) tng
ng vi tng loi th vin bao gm: th .NET cha cc th vin c sn ca .NET Framework,
th COM cha cc th vin ca ng dng COM, th Project cha cc Project c dng th
vin trong cng Solution, th Browse cha ty chn n file .dll c lp.

Hnh 53 Khai bo tham chiu

48

Lp trnh .Net
Trong phn ny, gio trnh trnh by vic tham chiu n mt th vin c lp bng cch
la chn n file .dll trong th Browse. C th trong v d hnh trn l file MyLibrary.dll
trong th mc bin ca project MyLibrary vn c trnh by phn trc.

IV.2.3.

S dng th vin

Sau khi khai bo tham chiu, ngi lp trnh s phi khai bo vic s dng namespace
trong th vin. Namespace ny c khai bo bng lnh using. Lnh ny c c php v chc
nng tng t vi lnh import ca ngn ng Java (ca hc phn lp trnh Java trc ).
Khi s dng, ngi lp trnh thc hin vic khai bo i tng hoc vic triu gi phng
thc ging nh vic s dng cc lp c sn. Nu trong qu trnh xy dng th vin, ngi lp
trnh c thc hin vic vit ch thch cho cc phng thc th khi triu gi, cc ghi ch ny s
c hin th nh cc hng dn ca cc phng thc c sn ca .Net Framework.

Hnh 54 Minh ha vic s dng th vin


Hnh trn trnh by vic s dng hm IsPrime(x) ca th vin MyLibrary. Hm ny thuc
lp MyMath v c nhm vo namespace MyCompany.Csharp.MathLibrary.

V.

Cc namespace c sn ca .Net Framework 2.0

V.1. Namespace System.Windows.Forms


Namespace System.Windows.Forms cha cc lp dng to ng dng Windows vi giao
din ngi s dng mang cc c im u vit ca h iu hnh Windows.
y l namespace chnh cung cp cc lp dng xy dng ng dng Windows c
trnh by trong chng tip theo. Cc lp trong namespace ny c chia thnh cc nhm
sau:
Control, UserControl v Form: Hu ht cc lp trong namespace
System.Windows.Forms k tha t lp Control. Lp ny cung cp cc chc nng c

49

Lp trnh .Net
bn dng hin th trn Form vi nhiu dng: dng hp thoi (DialogBox), dng ca
s (Window), dng MDI (Multiple Document Interface).
Menus v Toolbars: Nhm ny cha cc lp dng to thanh cng c hoc menu.
Trong nhm ny c cc lp: ToolStrip, MenuStrip, ContextMenuStrip v StarusStrip.
Controls: Nhm ny cha cc lp dng thit k giao din ngi dng. Mt s lp
dng nhp liu gm: TextBox v ComboBox, mt s lp dng trnh by d liu:
Label v ListView, mt s lp dng lm vic vi Internet nh: WebBrowser,
HtmlDocument.
Layout: Nhm ny cha cc lp phc v vic nh dng v t chc cc i tng trn
Form. Trong nhm ny c lp FlowLayoutPanel cho php sp xp cc i tng theo
th t; lp TableLayoutPanel cho php sp xp i tng theo hng v ct nh v
li; lp SplitContainer cho php phn chia vng lm vic thnh nhiu phn khc
nhau.
Data v DataBinding: Nhm ny cha cc lp nh ngha cc kin trc phc v vic
lin kt d liu ngun hoc tp tin XML vi cc i tng hin th trn Form v d
nh lp DataGridView.

V.2. Namespace System.Data


Namespace ny cung cp cc lp truy xut d liu c cu trc. Namespace ny thng
c s dng khi thc hin tng tc c s d liu. Trong namespace ny c cc namespace
thnh vin nh sau:
System.Data.Common: Cung cp cc lp dng chung khi kt ni vi cc h qun tr
c s d liu khc nhau. V d: DataAdapter, DataTableMapping.
System.Data.SqlClient: Cung cp cc lp phc v vic kt ni vi Ms SQL Server. V
d: SqlCommand, SqlConnection, SqlDataAdapter, SqlDataReader.
System.Data.SqlTypes: Cung cp kiu d liu dng trong SQL Server. V d:
SqlBinary, SqlDecimal, SqlDateTime.

50

Chng 6

LP TRNH NG DNG WINDOWS


I.

Mc tiu

Trong chng ny, gio trnh s trnh by cch xy dng mt ng dng Windows da trn
.Net Framework. Nhng ch chnh c trnh by trong chng ny bao gm:
Form
Label
TextBox
ComboBox, ListBox
CheckBox, RadioButton
Button
Kt thc chng ny, ngi hc s c kin thc xy dng mt ng dng nh vi ni
dung n gin.

II. Cc bng iu khin


Khi to project vi nh dng Windows Application, Visual Studio s t ng to ra mt
form c tn l Form1 v y l form chnh ca ng dng. Mn hnh giao din s dng ca
Visual Studio lc ny c mt s thay i v thay i ny l cho giao din khc vi khi to
project Console Application (trnh by chng 2). Giao din lm vic ca Visual Studio
nh sau:

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

51

Lp trnh .Net

Hnh 55 Giao din lm vic ca Visual Studio vi Windows Application project


Visual Studio chia mn hnh lm vic thnh nhiu phn, trong quan trng nht c
gi l vng lp trnh nm gia. Trong phn ny ngi lp trnh c th chnh sa giao din
ca chng trnh, c th lp trnh v c th cu hnh d n. Vng lp trnh c th ni rng
hoc thu nh ty thuc vo cc bng iu khin ph xung quanh. Cc bn iu khin ny
thng thng gm c: Toolbox panel, Solution Explorer panel, Properties Panel.

II.1. Toolbox panel


Toolbox panel l bng iu khin trong c cha cc i tng trnh by giao din cho
ng dng. Trong Toolbox panel, cc i tng c chia thnh nhiu nhm gm: Common
Controls, Containers, Menus & Toolbars, Data, Component, Printing, Dialogs.
Toolbox panel thng nm bn tri mn hnh lm vic v Toolbox panel c chc nng t
n (Auto Hide). Khi chc nng ny c kch hot, Toolbox panel s n i v khi ngi lp
trnh di chuyn con tr chut (mouse cursor) n v tr Toolbox th Toolbox panel s c
bung ra. Vic thit lp ch nng t n cho Toolbox panel s lm cho vng lp trnh rng thm
v iu ny c ngha quan trng khi ngi lp trnh mun hiu chnh giao din ca ng
dng.
s dng cc cng c, ngi lp trnh ch cn thc hin ng tc ko th (drag & drop)
cng c vo form cn thit. Visual Studio cung cp mt b sinh m t ng (Auto
Generating Code), b sinh m ny s t to cc on m khi to i tng cho chng trnh,

52

Lp trnh .Net
cc on m cu hnh cho tng i tng v cc on m iu khin vic trnh by i tng
trn form mi khi ngi lp trnh di chuyn hoc chnh sa kch thc cc i tng.
Visual Studio cung cp cho ngi lp trnh hu ht tt c cc cng c phc v vic xy
dng giao din cho ng dng. Tuy nhin, do gii hn ca mn hnh lm vic nn Toolbox
panel ch cha mt s cng c hu ch cho cc mc ch thng thng. Trong trng hp
ngi lp trnh mun s dng cc cng c cha xut hin trn Toolbox panel, ngi lp trnh
c th click chut phi (right click) vo Toolbox ri chn Choose Item, ca s lit k
danh sch cc .Net Framework Component s xut hin nh hnh sau.

Hnh 56 Danh sch cc i tng cng c

II.2. Solution Explorer panel


Solution Explorer panel l bng iu khin hin th cu trc chung ca project. Cc thnh
phn ca project c hin th trong bng ny theo cu trc cy (ging nh cu trc cy th
mc). Cc thnh phn ca project ch yu l cc file v cc file ny c nhm thnh cc th
mc.
Thng thng, Solution Explorer panel thng bn phi ca mn hnh lm vic. Ngi
lp trnh c th thay i chc nng Auto Hide ging nh Toolbox panel cho ph hp vi mc
ch s dng. Trong trng hp Solution Explorer panel khng hin th, ngi lp trnh c
th kch hot bng cch chn View trn thanh menu, sau chn Solution Explorer.

53

Lp trnh .Net

II.3. Properties panel


Properties panel l bng iu khin cha cc thuc tnh ca i tng ang c kch
hot. Trong Properties panel, cc thuc tnh ca i tng c nhm thnh tng nhm hoc
c sp xp theo th t ch ci ty vo la chn ca ngi lp trnh. Nu ngi lp trnh
kch hot nt Categorized th tt cc cc thuc tnh c nhm thnh tng nhm. Nu
ngi lp trnh chn nt Alphabetical th tt c cc thuc tnh c sp xp theo th t ch
ci.
Properties panel cn cha cc s kin ca i tng v cc s kin ny cng c sp xp
theo th t ch ci hoc c gom theo nhm ging nh cc thuc tnh. Khi ngi lp trnh
nhn p chut tri (double click) vo s kin no, Visual Studio s t ng pht sinh m
lnh cho s kin v con tr son tho s c ch nh ngay ti v tr phng thc ca s
kin.
Trong trng hp Properties panel khng xut hin, ngi lp trnh c th kch hot bng
hai cch. Cch th nht ging nh vic kch hot Solution panel, ngi lp trnh ch cn chn
View trn thnh menu sau chn Properties Window th Properties panel s xut hin.
Cch th hai, ngi lp trnh ch cn kch chut phi (right click) vo i tng cn thit,
popup menu s xut hin v sau chn Properties. Thng thng, Properties panel xut
hin gi pha di bn phi ca mn hnh son tho.

III. Form v Label


III.1. Form
III.1.1.

Khi nim Form

Form l khi nim dng ch thnh phn c dng lm giao tip gia ngi s dng
vi my tnh thng qua ng dng Windows. Form l thnh phn chnh ca ng dng desktop,
thng qua form, ngi s dng c th lm vic vi mt giao din thn thin vi cc chc
nng nhp liu, trnh by d lu, trnh by cc bng biu
C hai loi form: Normal Form v MDI Form. MDI Form (Multiple Documents Interface
Form) l dng form trong cho php cha cc form khc. Thng thng, trn MDI Form,
ngi lp trnh thng xy dng menu khi gi tng chc nng, cc form tng ng s xut
hin. Normal Form l form bnh thng, trn Normal Form chng ta c th trnh by cc i
tng ha phc v vic giao tip gia ngi vi ng dng thng qua giao din; Normal
Form khng th cha Form. Ngi lp trnh c th thay i mt Form t Normal sang MDI
v ngc li bng cch thay i gi tr ca thuc tnh IsMdiContainer, IsMdiContainer c gi
tr false th Form s l Normal v IsMdiContainer c gi tr true khi form l MDI.

III.1.2.

Cc thuc tnh ca Form

Thuc tnh Name: Thuc tnh Name l thuc tnh nhn dng duy nht ca i tng
Form trong project. Mi Form phi c gi tr hp l trong thuc tnh Name. Visual
Studio khng cho php c nhiu hn mt Form c cng tn trong mt Project.

54

Lp trnh .Net
Thuc tnh Text: Thuc tnh Text dng trnh by chui k t trn thanh tiu ca
Form. Ngi lp trnh c th khai bo thuc tnh ny trong ch thit lp hoc gn
gi tr cho thuc tnh ny lc thc thi.
Thuc tnh ShowIcon: Thuc tnh ShowIcon ch nh rng Form c hin th Icon hay
khng. Icon ny ty thuc vo tp tin nh m ngi lp trnh khai bo cho thuc tnh
Icon, v s xut hin gc phi trn bn tri ca form khi chy chng trnh. Trong
trng hp khng c nhu cu trnh by Icon, bn c th khai bo thuc tnh ShowIcon
bng false.
Thuc tnh Opacity: Thuc tnh Opacity cho php ngi lp trnh lm trong sut b
mt ca form ty thuc vo gi tr phn trm khai bo trong thuc tnh ny.
Thuc tnh Icon: Thuc tnh ny cho php ngi lp trnh ch nh tp tin hnh nh
th hin biu tng ca Form. Biu tng ca form c hin th gc pha trn, bn
tri khi sa dng ng dng.
Thuc tnh WindowState: Khi np ln mn hnh, form thng c nh v theo mt
trong ba trng thi quy nh trong thuc tnh WindowState: Normal, Minimized hoc
Maximized. Nu WindowState l Normal th form c hin th trn mn hnh ng
bng kch thc m ngi lp trnh thit k. Nu WindowState l Minimized th
form s c thu nh li thnh biu tng v hin th TaskBar ca Windows. Nu
WindowState l Maximized th form s ph y mn hnh hoc s ph y MDI Form
cha form .
Thuc tnh AcceptButton: Khi lm vic vi form, i khi trn form c mt nt m khi
bm nt th chng trnh thc hin mt chc nng xc nh. Nu ngi lp trnh c
mong mun ch cn bm phm Enter m chc nng ca nt c thc hin th
AcceptButton s c gn gi tr l nt y.
Thuc tnh CancelButton: Thuc tnh ny c chc nng tng t thuc thnh
AcceptButton v khi ngi lp trnh bm phm Esc th nt c khai bo cho thuc
tnh ny s t ng c kch hot.
Thuc tnh MdiParent: Thuc tnh ny xc nh Form MDI cha Form hin ti. Chi
tit v cch s dng thuc tnh ny c trnh by trong phn tip theo.

III.1.3.

Cc s kin ca Form

S kin Load: s kin ny c t ng kch hot khi m form. Thng thng trong
s kin ny, ngi lp trnh thc hin cc lnh khai bo hoc cc lnh u tin ca
chng trnh.
S kin FormClosing: s kin ny c t ng kch hot khi form ang ng. Ngi
lp trnh c th s dng s kin ny xc nhn vi ngi s dng c thc s mun
ng form hay khng.
S kin FormClosed: s kin ny c t ng kch hot khi form ng. Trong s
kin ny, Visual Studio cung cp thuc tnh CloseReason cho php ngi lp trnh
hin th l do ng form i vi ngi s dng.

55

Lp trnh .Net

III.2. Label
III.2.1.

Khi nim Label

Label l khi nim dng ch i tng c s dng trnh by mt dng vn bn trn


form. Label cho php ngi lp trnh trnh by tiu v ch gii cho cc i tng nhp liu
khc trn form.

III.2.2.

Cc thuc tnh ca Label

Thuc tnh BorderStyle: thuc tnh BorderStyle c s dng thit lp kiu ng


vin ca i tng Label.
Thuc tnh Font: thuc tnh ny cho php ngi lp trnh thay i kch thc v kiu
ch trnh by trn Label.
Thuc tnh TextAlign: thuc tnh ny phc v vic canh l ca on vn bn trong
Label.

III.3. ng dng Form v Label


V d sau minh ha vic s dng Form v Label xy dng mt ng dng m trn
hin th dng ch Hello World. ng dng c trnh by theo cc bc sau:

III.3.1.

To mi project

Ngi lp trnh to mi project bng cch chn File trn thanh menu, sau chn New ri
chn Project. Trong ca s New Project, ngi lp trnh chn Windows trong mc Project
types, chn Windows Application trong mc Templates, t tn cho project trong mc
Name v cui cng l xc nh ng dn cho project trong mc Location.

56

Lp trnh .Net

Hnh 57 To mi Windows Application project


Khi khi to, Visual Studio s t ng to ra cu trc cho project trong c mt Form
chnh c tn l Form1 (Xem hnh 55). Form ny s l form chnh khi chy chng trnh.

III.3.2.

i tn Form chnh

Ngi lp trnh c th thay i tn ca Form chnh bng cch kch chut phi (right click)
vo Form trong Solution Explorer panel sau chn Rename.

57

Lp trnh .Net

Hnh 58 Thay i tn Form


Sau khi i tn, Visual Studio s yu cu ngi lp trnh xc nhn sau tn Form mi
s c p dng trn ton b project.

III.3.3.

t tiu cho Form

Khi ngi lp trnh kch chut vo Form th trong bng Properties panel s xut hin cc
thuc tnh ca Form. Trong bng ny, ta chnh sa thuc tnh Text Form c tiu nh
mun. Vi v d ny, thuc tnh Text c gn gi tr Hello World.

58

Lp trnh .Net

Hnh 59 Thay i thuc tnh Text ca Form

III.3.4.

Ci t s kin FormClosed

Bc ny khng bt buc phi c ci t cho form, tuy nhin minh ha cho qu trnh
.Net Framework, qu trnh x l s kin FormClosed c ci t cho Form.
Trong ca s Properties panel, chn nt Events chuyn sang bng danh sch cc s
kin. Sau chn s kin FormClosed v kch p chut vo TextBox bn cnh, Visual
Studio s chuyn con tr son tho n phng thc cu hnh cho s kin v ngi lp trnh
s son tho on m y.

59

Lp trnh .Net

Hnh 60 Khai bo s kin FormClosed


Trong vng lp trnh, ngi lp trnh c th s dng vit cc on m v cc on m ny
s c thc thi khi Form c ng li. Trong on m ny, ngi lp trnh c th s dng
lnh CloseReason thc hin vic truy xut l do ng Form.

Hnh 61 M lnh cho s kin FormClosed

III.3.5.

Thm Label vo Form

Trong bng Toolbox panel, thc hin ng tc ko th i tng Label vo Form. Trong
trng hp Toolbox panel cha hin th trn mn hnh, ngi lp trnh c th kch hot
xut hin Toolbox panel bng cch chn vo View trn thanh menu ri chn Toolbox.

60

Lp trnh .Net

Hnh 62 Thc hin vic thm Label vo Form


Sau khi Label c ko v th vo Form, ngi lp trnh c khai bo cc gi tr cho cc
thuc tnh ca Label trong Properties panel.

Hnh 63 Thay i cc thuc tnh ca Label


Trong v d hnh trn, Label c thay i cc thuc tnh nh Font: Microsoft Sans
Serif, ForeColor: Desktop, Text: Hello World.

61

Lp trnh .Net

III.3.6.

Bin dch v chy ng dng

Thc hin vic bin dch v chy ng dng ging nh Console Application. Sau khi chy
ng dng ta c kt qu nh sau.

Hnh 64 Kt qu chy ng dng HelloWorld


Khi ng ng dng, s kin FormClosed c gi v chng trnh s hin th thng bo l
do ng ng dng nh sau.

Hnh 65 Kt qu khi ng ng dng

IV. TextBox v Button


IV.1. TextBox
IV.1.1.

Khi nim TextBox

TextBox l khi nim dng ch i tng trnh by trn Form, i tng ny cho php
ngi s dng nhp d liu u vo t bn phm.

IV.1.2.

Cc thuc tnh ca TextBox

BorderStyle: Thuc tnh ny quy nh kiu ng vin ca TextBox.

62

Lp trnh .Net
Enable: Thuc tnh ny c gi tr true th ngi s dng c th thao tc vi TextBox,
ngc li th ngi s dng khng th thao tc vi TextBox. Trong qu trnh lp trnh,
ngi lp trnh c th thit lp thuc tnh ny trong trng hp mun phn quyn, vi
nhng ngi dng c ti khon hp l th Enable c gi tr true ngi dng c th
thao tc v ngc li, Enable c gi tr false i vi nhng ti khon khng hp l.
MaxLength: Thuc tnh ny quy nh s k t ti a nhp vo TextBox.
Multiline: Thuc tnh ny c gi tr true th TextBox s c nhiu dng v ngc li.
ScrollBars: Thuc tnh ny c s dng khi thuc tnh Multiline c gi tr true. Nu
ScrollBars c gi tr true th TextBox s xut hin thanh cun v ngc li.
ReadOnly: Thuc tnh ny c gi tr true th ngi s dng khng c php nhp d
liu vo TextBox. Thuc tnh ny cng rt hu ch trong trng hp phn quyn.
PasswordChar: Thuc tnh ny c s dng cho nhng TextBox dng nhp mt
khu. Vi mt k t c gn cho thuc tnh ny, khi ngi s dng nhp vo
TextBox, k t trong TextBox s c t ng thay bi gi tr ca thuc tnh ny.
TextAlign: Thuc tnh ny quy nh vic canh l cho on vn bn trong TextBox.

IV.1.3.

Cc s kin ca TextBox

MouseClick: S kin ny xy ra khi ngi s dng kch chut vo TextBox.


MouseDoubleClick: S kin ny xy ra khi ngi s dng kch p chut (double
click) vo TextBox.
TextChanged: S kin ny xy ra khi ngi s dng thay i ni dung trong TextBox.

IV.2. Button
IV.2.1.

Khi nim Button

Button l khi nim c dng ch i tng c trnh by trn Form, i tng ny


cho php ngi s dng kch chut vo thc hin mt tc v no .
Ngi lp trnh c th gn thuc tnh AcceptButton hoc CancelButton ca Form bng cc
i tng Button khi bm phm Enter hoc phm Esc th s kin ca Button tng ng
c triu gi.

IV.2.2.

Cc thuc tnh ca Button

FlatStyle: Thuc tnh ny quy nh kiu ng vin ca Button.


Image: Thuc tnh ny quy nh hnh nh hin th trn Button. ng dn ca hnh
nh c khai bo trong phn Resourse.
Text: Thuc tnh ny quy nh chui k t trn Button.
Enable: Thuc tnh ny quy nh Button c b v hiu ha hay khng. Cng ging nh
TextBox v mt s i tng khc, thuc tnh ny thng c s dng trong trng
hp phn quyn.

63

Lp trnh .Net

IV.2.3.

Cc s kin ca Button

MouseClick: S kin ny xy ra khi ngi s dng kch chut vo Button.


EnabledChanged: S kin ny xy ra khi thuc tnh Enable ca Button thay i.

IV.3. ng dng TextBox v Button


V d sau trnh by vic ng dng Form, Label, TextBox v Button trong vic xy dng
mt Form ng nhp. Form ny gm c hai TextBox ngi s dng nhp tn ti khon,
mt khu v nt Log In thc hin hnh ng ng nhp vo ng dng. Trong v d ny,
hnh ng ng nhp vo ng dng ch n thun l hin th ti khon v mt khu ra mn
hnh. ng dng c xy dng theo tng bc nh sau:

IV.3.1.

To project, to Form v cc Label

Thc hin vic to project Windows Application, sau ko th hai Label vo Form
(Xem v d phn III.3 ca chng ny). Trong v d ny, hai Label ln lc c thuc tnh
Text l Username v Password.

Hnh 66 To Form v Label cho ng dng

IV.3.2.

To cc TextBox

Thc hin vic ko th hai TextBox vo Form. Cc TextBox c t tn ln lt l


txtUsername, txtPassword v c t v tr tng ng vi hai Label c to
bc trc .

64

Lp trnh .Net

Hnh 67 To cc TextBox tng ng vi cc Label


i vi TextBox txtPassword, thc hin vic thay i thuc tnh PasswordChar bng cch
gn k t *. Vi k t ny, khi ngi s dng nhp vo txtPassword th trn i tng
ch hin th cc k t *, iu ny l cn thit khi nhp mt khu.

Hnh 68 Thay i thuc tnh PasswordChar

IV.3.3.

Thm cc Button

Ko th thm hai Button vo Form v t tn ln lt l btnLogIn v btnReset. ng vi


mi Button, thay i thuc tnh Text tng ng dng vn bn hin th trn mi Button ln
lt l Login v Reset.

65

Lp trnh .Net

Hnh 69 Thm cc Button vo Form

IV.3.4.

Ci t s kin cho tng Button

S kin c bn ca Button l Click, s kin ny c triu gi khi ngi s dng kch


chut vo Button.
lp trnh s kin cho nt Reset, thc hin kch p chut vo nt Reset. Visual Studio
s chuyn con tr son tho n phng thc ca s kin Click. Trong phng thc ny, lp
trnh thc hin vic gn gi tr ca cc TextBox thnh chui rng.

Hnh 70 X l s kin cho nt Reset


lp trnh s kin cho nt Login, thc hin kch p chut vo nt Login v lp trnh
thc hin vic hin th thng bo ra mn hnh.

66

Lp trnh .Net

Hnh 71 X l s kin nt Login

IV.3.5.

Bin dch v chy chng trnh

Sau khi bin dch v chy th chng trnh s trnh by nh sau.

Hnh 72 Kt qu chy chng trnh


Nu ngi s dng bm nt Reset th cc TextBox s t ng c xa. Nu ngi s
dng bm nt Login th chng trnh s hin th thng bo rng ngi s dng thc hin
vic Login.

Hnh 73 Kt qu hin th khi ngi s dng bm nt Login

V.

ComboBox, CheckBox, RadioButton

V.1. ComboBox
V.1.1.

Khi nim ComboBox

ComboBox l khi nim dng ch i tng hin th trn Form, i tng ny cho php
ngi dng la chn mt hoc nhiu phn t trong danh sch xung (dropdown list).

V.1.2.

Cc thuc tnh ca ComboBox

FlatStyle: Thuc tnh ny quy nh kiu ng vin ca ComboBox.

67

Lp trnh .Net
DataSource: Tp d liu a vo ComboBox. DataSource c th c gn gng mt
mng ca cc chui hoc mt ArrayList.
DisplayMember: Tn ca trng tng ng trong danh sch c hin th trn
ComboBox.
Items: Thuc tnh ny quy nh tp cc phn t ca ComboBox. Ngi lp trnh c
th thm phn t vo ComboBox bng phng thc Add hoc AddRange.
MaxDropDownItems: Thuc tnh ny quy nh s phn t ln nht c th lit k trong
ComboBox, mc nh l 8 phn t.
MaxLength: Thuc tnh ny quy nh di ln nht ca chui k t trong
ComboBox.
ValueMember: Thuc tnh ny tr v gi tr ng vi kha nu phn t c kha v gi
tr.
Text: Thuc tnh ny tr v chui k t ca nhn trn ComboBox ng vi phn t
c chn.
SelectedText: Thuc tnh ny c chc nng tng t thuc tnh Text.
SelectedItem: Thuc tnh ny gn hoc ly i tng ng vi phn t ang c chn.
SelectedValue: Ly hoc gn gi tr ng vi phn t kiu object ang chn.
SelectedIndex: Gn hoc ly gi tr ch mc ng vi phn t ang chn.

V.1.3.

Cc phng thc ca ComboBox

Add: Phng thc ny thc hin thm mt i tng vo ComboBox.


AddRange: Phng thc ny thc hin thm tp hp i tng vo ComboBox.

V.1.4.

Cc s kin ca ComboBox

MouseClick: S kin ny xy ra khi ngi s dng kch chut vo ComboBox.


SelectedIndexChanged: S kin ny xy ra khi ch mc ca phn t c thay i.
SelectedValueChanged: S kin ny xy ra khi gi tr ca phn t c thay i.
SelectionchangeCommited: S kin ny xy ra khi ngi s dng kt thc vic chn
phn t.

V.2. CheckBox
V.2.1.

Khi nim CheckBox

CheckBox l khi nim dng ch i tng trnh by trn Form, i tng ny cho php
ngi s dng la chn hoc khng la chn bng cch nh du vo i tng.
CheckBox cho php hin th c hnh nh v chui vn bn trong trng hp cn thit.

68

Lp trnh .Net

V.2.2.

Cc thuc tnh ca CheckBox

FlatStyle: Thuc tnh ny quy nh ng vin cho CheckBox.


Appearance: Thuc tnh ny quy nh hnh dng ca CheckBox.
Checked: Thuc tnh ny c gi tr true nu CheckBox c chn v ngc li.
Text: Thuc tnh ny trnh by chui vn bn trn CheckBox.
TextAlign: Thuc tnh ny quy nh vic canh l cho dng vn bn trn CheckBox.

V.2.3.

Cc s kin ca CheckBox

MouseClick: S kin ny xy ra khi ngi s dng kch chut vo CheckBox.


CheckedChanged: S kin ny xy ra khi ngi s dng thc hin vic chn hoc b
chn trn CheckBox.
CheckedStateChanged: S kin ny xy ra khi trng thi Checked ca CheckBox thay
i. Trong mt vi ng cnh th s kin ny ging vi s kin CheckedChanged.

V.3. RadioButton
V.3.1.

Khi nim RadioButton

RadioButton l khi nim dng ch i tng c trnh by trn Form, i tng ny


cho php ngi s dng la chn mt trong s cc RadioButton khc trong danh sch ty
chn.

V.3.2.

Cc thuc tnh ca RadioButton

FlatStyle: Thuc tnh ny quy nh kiu ng vin ca RadioButton.


Appearance: Thuc tnh ny quy nh hnh dng ca RadioButton.
Checked: Thuc tnh ny quy nh trng thi ca RadioButton l c chn hay cha
c chn. Nu Checked c gi tr true ngha l RadioButton c chn.
Text: Thuc tnh ny trnh by chui vn bn hin th ra mn hnh.
TextAlign: Thuc tnh ny gip cho vic canh l ca dng vn bn trong RadioButton.

V.3.3.

Cc s kin ca RadioButton

MouseClick: S kin ny xy ra khi ngi s dng kch chut vo CheckBox.


CheckedChanged: S kin ny xy ra khi ngi s dng thc hin vic chn hoc b
chn trn CheckBox.

V.4. ng dng ComboBox, CheckBox, RadioButton


V d sau y trnh by vic ng dng Form, Lable, TextBox, Button, ComboBox,
CheckBox v RadioButton trong vic xy dng mt Form ng k. Form ny yu cu ngi
s dng nhp thng tin c nhn v sau bm nt ng k, chng trnh lc ny s hin th

69

Lp trnh .Net
thng bo l ngi dng thc hin vic ng k. ng dng c xy dng theo tng bc
nh sau:

V.4.1.

To project, to Form, to cc Label v TextBox

To cc Form, to Label v TextBox da theo hng dn ca v d phn III.3 v IV.3


ca chng ny. Cc Label ln lt c tn l AccountName, Password, Gender, Marital
Status v Hobby. Cc TextBox cng ln lt c tn l txtAccountName v txtPassword, trong
thuc tnh PasswordChar ca txtPassword c thit lp vi k t *.

Hnh 74 To Form, Label v TextBox lin quan

V.4.2.

To cc RadioButton

ng vi Label Gender, thc hin vic ko th hai RadioButon t Toolbox panel, hai i
tng ny ln lt c t tn l rdiMale v rdiFemale tng ng vi gii tnh nam v gii
tnh n ngi s dng la chn. ng vi tng RadioButton, thay i thuc tnh Text
cc i tng ny hin th cc dng vn bn ln lt l Male v Female. Ch , mt
trong hai i tng ny c gn thuc tnh Checked l true.

70

Lp trnh .Net

Hnh 75 To cc RadioButton

V.4.3.

To ComboBox

ng vi Label Marital Status, to thm ComboBox v t tn l cbbMaritalStatus.

Hnh 76 To thm ComboBox

71

Lp trnh .Net
i vi ComboBox, thc hin vic khai bo thm Item c tn l Single v Maried. Trong
Properties panel, bm vo thuc tnh Item. Visual Studion s hin th mt Form ngi
dng nhp cc Item vo ComboBox, mi Item ng vi mt dng.

Hnh 77 Thm Item cho ComboBox

V.4.4.

To cc CheckBox

ng vi Label Hobby, to cc CheckBox bng cch ko th t Toolbox Panel vo Form.


Cc CheckBox ln lt l chkMovie, chkShopping, chkPicnic, chkFishing tng ng vi cc
s thch nh xem film, mua sm, i du lch, cu c ngi dng la chn.

Hnh 78 To thm cc CheckBox

72

Lp trnh .Net

V.4.5.

To Button

Thc hin to Button c tn l btnRegister. Button ny c s kin thc hin lnh thng bo
l ngi s dng thc hin vic ng nhp. Thc hin vic vit m lnh x l s kin
khi ngi s dng kch vo btnRegister nh sau.

Hnh 79 X l s kin khi ngi s dng kch chut vo nt btnRegister


on m ca s kin ca Button thc hin vic ly cc thng tin t Form ni vo chui
messege ri hin th ra mn hnh. ly thng tin t ComboBox, ta thc hin truy xut thuc
tnh SelectedItem. ly thng tin t CheckBox, ta thc hin vic truy xut tt c cc i
tng ca Form, ng vi i tng l CheckBox, ta kim tra xem thuc tnh Checked c gi
tr true hay false, nu c gi tr true ngha l ngi s dng chn v ngc li.

V.4.6.

Bin dch v chy chng trnh

Thc hin vic bin dch v chy ng dng (Xem cc v d mc III.3, IV.3 chng
ny) ta c kt qu nh sau.

73

Lp trnh .Net

Hnh 80 Kt qu chy ng dng


Khi ngi s dng in y thng tin v bm nt Register th chng trnh s hin th
thng bo nh sau.

Hnh 81 Thng bo khi ngi s dng nhn nt Register

VI. MDI Form v MenuStrip


VI.1. MDI Form
VI.1.1.

Khi nim MDI Form

MDI Form (Multiple Document Interface Form) l khi nim dng ch mt loi Form
m trong c cha cc Form khc. Cc Form cha trong MDI Form c gi l Normal
Form. Vi phin bn Visual Studio 2005 tr v trc th MDI Form khng th cha c
MDI Form khc.
Ngi lp trnh c th chuyn mt Normal Form thnh mt MDI Form bng cch thay i
thuc tnh IsMdiContainer t False thnh True.

74

Lp trnh .Net

VI.1.2.

Cc thuc tnh ca MDI Form

Thuc tnh IsMdiContainer: Thuc tnh ny c gi tr false nu form l Normal v c


gi tr true nu form l MDI. Ngi lp trnh c th thit lp gi tr ny trong khi thit
k hoc thit lp trong lc chy chng trnh.
Thuc tnh MdiChildren: Thuc tnh ny tr v danh sch cc Form con (Normal
Form) ang cha trong MDI Form hin ti.

VI.2. MenuStrip
VI.2.1.

Khi nim MenuStrip

MenuStrip l khi nim dng ch i tng c trnh by trn Form, i tng ny t


chc cc phn t (ToolStripMenuItem) theo cu trc cy v trnh by trn mn hnh thnh
thanh menu ngi s dng c th la chn.

VI.2.2.

Cc thuc tnh ca MenuStrip

AllowItemReorder: Thuc tnh ny cho php ngi s dng ty chn c phn t bng
bn phm khi bm phm Alt.
TextDirection: Thuc tnh ny cho php ngi s dng thay i hnh thc trnh by
trn menu l ngang (Horizontal) hoc dc (Vertical90 hoc Vertical270).
Items: Thuc tnh ny tr v danh sch cc phn t ca MenuStrip.

VI.3. ToolStripMenuItem
VI.3.1.

Khi nim ToolStripMenuItem

ToolStripMenuItem l khi nim dng ch mt phn t ca MenuStrip, phn t ny c


chc nng tng t nh Button, ngha l cho php ngi s dng kch chut hoc dng phm
la chn t ng dng s thc hin nhng chc nng tng ng.

VI.3.2.

Cc thuc tnh ca ToolStripMenuItem

Enable: Thuc tnh ny ch nh i tng c b v hiu ha hay khng. Thuc tnh


Enable thng c s dng khi ngi lp trnh mun phn quyn ngi s dng.
Image: Hnh nh xut hin bn cnh chui vn bn ca i tng.
ImageScaling: Thuc tnh ny thng c dng vi thuc tnh Image, thuc tnh ny
quy nh hnh nh i km hin th vi kch thc tht hay kch thc thu nh.
ShortcutKeyDisplayString: Thuc tnh ny trnh by dng k t ng vi phm tt.
ShortcutKeys: Thuc tnh ny quy nh phm tt kch hot ToolStripMenuItem.
ShowShortcutKeys: Thuc tnh ny cho php hin th t hp phm tt.
Text: Thuc tnh ny trnh by dng vn bn.

75

Lp trnh .Net
TooltipText: Thuc tnh ny quy nh dng vn bn s xut hin khi ngi lp trnh
a chut vo ToolStripMenuItem.

VI.3.3.

Cc s kin ca ToolStripMenuItem

Click: S kin ny xy ra khi ngi s dng kch chut vo i tng.


DoubleClick: S kin ny xy ra khi ngi s dng kch p chut vo i tng.

VI.4. ng dng MDI Form, MenuStrip


V d sau y trnh by vic xy dng mt ng dng trong cc chc nng ca ng dng
c th hin bng menu. Khi ngi s dng chn chc nng trn menu, Form tng ng s
c triu gi. Trong v d, ng dng c xy dng bng cch s dng hai Form l LogIn
v Register ca mc IV.3 v V.4 trong chng ny. ng dng c thc hin theo cc bc
sau.

VI.4.1.

To project v cu hnh MDI Form

Khi to mi mt project, Visual Studio s to ra mt Form mc nh c tn l Form1. i


tn Form ny thnh MainForm sau chnh thuc tnh IsMdiContainer thnh gi tr true.

Hnh 82 Thay i thuc tnh c MDI Form

VI.4.2.

To Form LogIn v Form Register

To Form LogIn v Register theo hng dn muc IV.3 v V.4 ca chng ny. Ngi
lp trnh c th copy cc Form ny ri dn vo project, sau thay i namespace trung vi
tn project thi c th s dng li c cc Form c.

76

Lp trnh .Net

VI.4.3.

To MenuStrip

Thc hin ko th MenuStrip t Toolbox panel vo Form ta c mt thanh Menu. Trn


thanh Menu, to Item c tn l Account ri sau to tip trong mc Account hai
ToolStripMenuItem khc c tn l LogIn v Register. to cc Item cho menu, ch cn nhp
tn vo cc TextBox c sn (c tn l Type Here), Visual Studio s t ng to ra cc on
m to Menu.

Hnh 83 To thanh Menu v ToolStripMenuItem

VI.4.4.

Vit s kin cho tng ToolStripMenuItem

Thc hin kch p chut vo ToolStripMenuItem, Visual Studio s chuyn con tr son
tho n phng thc ca s kin Click ca i tng. Trong phng thc ny, lp trnh thc
hin vic to Form v gn vo Form chnh.

Hnh 84 Vit s kin cho ToolStripMenuItem


Trong s kin ny, thng thng chng trnh thc hin cc bc sau. u tin l ng tt
c cc Form con hin c trong Form chnh, lnh foreach c minh ha trong hnh trc
th hin cng vic ny. Bc th hai l to mi Form cn triu gi, ton t new c s dng
trong trng hp ny khi to i tng. Bc th ba l gn Form con vo Form chnh,
trong bc ny ta gn thuc tnh MdiParent ca Form con thnh gi tr this (this trong trng
hp ny l con tr ch n Form chnh). Bc cui cng l gi lnh hin th Form con, trong
trng hp ny, phng thc Show() c s dng.

77

Chng 7

TNG TC C S D LIU
I.

Mc tiu

Trong chng ny, gio trnh s trnh by phng php tng tc vi c s d liu bng
C# da trn m hnh ADO.NET vi h qun tr c s d liu Ms SQL Server 2000 hoc
2005. Ngi hc c th da vo m hnh ADO.NET t nghin cu vic tng tc vi cc
h qun tr c s d liu khc thng qua cc ti liu c cp trong phn ti liu tham
kho cui gio trnh. Nhng ni dung c cp trong chng ny gm
ADO.NET
Ms SQL Server 2000 hoc 2005
Stored Procedure
SqlConnection
SqlCommand
SqlDataReader
SqlDataAdapter
DataSet, DataTable
DataGridView
Kt thc chng ny, ngi hc c th xy dng c ng dng tc nghip vi cc x l
lin quan n c s d liu.

II. ADO.NET
II.1. Khi nim
ADO.NET (ActiveX Data Objects .Net) l mt phn ca .NET Framework, n c xem
l b th vin lp chu trch nhim x l d liu trong ngn ng MS.NET. ADO.NET
c thit k vi dng d liu ngt kt ni, ngha l chng ta c th ly c mt cu trc
phc tp ca d liu t c s d liu, sau ngt kt ni vi c s d liu ri mi thc hin
cc thao tc cn thit. y l mt s tin b v mt thit k bi v thit k ADO trc y
lun cn duy tr mt kt ni trong qu trnh thao tc d liu.

II.2. Kin trc


Kin trc ca ADO.NET gm hai tng c bn: tng kt ni (Connected Layer) v tng
khng kt ni (Disconnected Layer).

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

78

Lp trnh .Net

Hnh 85 Kin trc ca ADO.NET


Tng kt ni: phn ny c s dng khi ta kt ni vi c s d liu v thao tc d liu,
yu cu phi thc hin kt ni vi c s d liu khi ang thao tc. Cc i tng ca phn
ny bao gm:
Connection: i tng ny thc hin vic qun l ng /m kt ni ti C s d liu.
V c nhiu ngun d liu (DataSource) khc nhau do .NET Framework cng cung
cp nhiu dng Connection khc nhau: SqlConnect tng ng vi Ms SQL Server,
OleDbConnection tng ng vi Access, OracleConnection tng ng vi c s d
liu Oracle.
Command : i tng ny thc hin cc cu lnh tng tc truy vn, rt trch d liu
t c s d liu khi thit lp kt ni ti d liu v tr v kt qu. Tng t nh
Connection, Command cng c nhiu dng ngi lp trnh s dng tng ng vi
cc h qun tr c s d liu lin quan.
DataReader : i tng phc v vic x l c d liu. i tng ny thng c
dng cho cc ng dng website v i tng ny ch cho php x l mt lung d liu
trong mt thi im. DataReader cng c nhiu dng tng ng vi nhiu loi c s
d liu khc nhau. D liu ca i tng c to ra khi i tng Command thc
hin phng thc ExecuteReader().
DataAdapter : y l i tng rt quan trng ca ADO.NET, i tng ny l cu
ni gia c s d liu v DataSet. DataSet l i tng ngt kt ni nn khng th
tng tc trc tip vi c s d liu, v th n cn mt i tng trung gian ly d
liu t c s d liu cho n. V DataAdapter khi thao tc vi c s d liu vn phi
duy tr kt ni nn DataAdapter thng c s dng trong cc ng dng trn my
n.
Tng khng kt ni: ch c mt i tng chu trch nhim ngt kt ni chnh l
DataSet. Trong kin trc ca ADO.NET, DataSet c thit k tch bit vi c s d liu v
c nhim v nhn d liu v t DataAdapter v x l.

79

Lp trnh .Net

II.3. Cc namespace phc v cho ADO.NET


Visual Studio cung cp nhiu namespace phc v cho vic tng tc vi hu ht cc h
qun tr c s d liu. Gio trnh ny ch trnh by vic tng tc vi h qun tr c s d liu
Ms SQL Server 2000 hoc 2005, nn ch cp n cc namespace c bn sau:
System.Data: Cung cp cc lp truy xut d liu chung.
System.Data.Common: Cung cp cc lp dng chung khi kt ni vi cc h qun tr
c s d liu khc nhau.
System.Data.SqlClient: Cung cp cc lp phc v vic kt ni vi Ms SQL Server.
System.Data.SqlTypes: Cung cp kiu d liu dng trong SQL Server.

III. SqlConnection, SqlCommand


III.1. SqlConnection
III.1.1.

Khi nim SqlConnection

SqlConnection l i tng chu trch nhim qun l kt ni ti ngun d liu (Data


Source). i tng SqlConnection ca ADO.NET ch nhn mt tham s u vo l chui kt
ni (connection string). Trong chui kt ni, cc thng s c cch nhau bng du ;, chui
kt ni ny c cc thng s sau:
Provider: tn h qun tr c s d liu, i vi c s d liu Access cn khai bo l
SQLOLEDB. i vi SQL Server th chui kt ni khng cn thuc tnh ny.
DataSource (hoc Server): tn / a ch Database Server cn kt ni ti.
Initial catalog (hoc Database): tn ca c s d liu cn tng tc.
Uid: ti khon ng nhp vo Database Server.
Pwd: mt khu ng nhp vo Database Server.
i vi vic kt ni vi c s d liu SQL Server th tham s Provider c th c b i
v chui kt ni nh sau:
Server=(local);Database=CSharpEx;uid=csharp;pwd=cpass;

III.1.2.

Cc thuc tnh ca SqlConnection

ConnectionString: thuc tnh thit lp hoc ly chui kt ni.


ConnectionTimeout: thuc tnh thit lp hoc ly thi gian ch trong khi truy xut vo
c s d liu. Khi truy xut, chng trnh s ch ng khong thi gian ny nu ch
qua khong thi gian ny m vn khng kt ni c vo c s d liu th chng
trnh s bo li.
Database: thuc tnh thit lp hoc ly tn ca c s d liu ca i tng
SqlConnection hin thi.

80

Lp trnh .Net
DataSource: thuc tnh thit lp hoc ly tn ca Database Server ca i tng
SqlConnection hin thi.
State: thuc tnh ny ly trng thi hin thi ca SqlConnection bao gm: Connecting,
Broken, Open, Closed, Executing, Fetching.

III.1.3.

Cc phng thc ca SqlConnection

BeginTransaction: phng thc ny c s dng cho trng hp x l giao tc ca


ng dng. Vic x l giao tc rt c li trong khi x l d liu t database v c lc
vic x l d liu gp li v lc y cn thc hin cu lnh nh Rollback khi phc
li trng thi ca d liu trc khi x l.
Open: phng thc ny thc hin vic m mt kt ni. Phng thc ny cn c
thc hin trong khi try/catch x l cc bit l.
Close: phng thc ny thc hin vic ng kt ni v gii phng ti nguyn. Phng
thc ny thng c t trong khi finally thc hin gii phng ti nguyn khi kt
thc s l vi c s d liu.
V d sau trnh by vic m v ng mt kt ni ti c s d liu.

Hnh 86 Minh ha vic m kt ni v ng kt ni n c s d liu

III.2. SqlCommand
III.2.1.

Khi nim SqlCommand

SqlCommand l i tng thc hin cc lnh tng tc vi c s d liu. i tng ny


c xy dng va c th x l cc stored procedure ca SQL Server va c th thc hin
cc cu lnh truy vn trc tip n c s d liu.

III.2.2.

Cc thuc tnh ca SqlCommand

CommandType: Thit lp hoc ly kiu lnh tng tc, lnh tng tc ny c th l


stored procedure hoc l cu lnh truy vn.

81

Lp trnh .Net
CommandText: Thit lp hoc ly lnh thao tc vi d liu. Lnh ny c th l tn ca
stored procedure c sn trong c s d liu hoc l cu lnh truy vn ty thuc vo
thuc tnh CommandType.
CommandTimeout: Thit lp hoc ly thi gian ch thc hin lnh. Sau khong thi
gian ny nu tng tc c s d liu vn cha xong th chng trnh s bo li.
Parameters: Cc tham s truyn vo cho i tng command. Thuc tnh ny c s
dng hiu qu khi CommandType l stored procedure.
Connection: Thit lp hoc ly kt ni ang c i tng SqlCommand s dng.

III.2.3.

Cc phng thc ca SqlCommand

ExecuteReader: Thc thi cu lnh CommandText ca i tng SqlCommand v tr


v kiu SqlDataReader. Phng thc ny thng c s dng khi ni dung cu lnh
tng tc c s d liu l lnh select.
ExecuteNonQuery: Thc thi cu lnh CommandText ca i tng SqlCommand, y
l dng cu lnh cp nht c s d liu (thm hoc xo hoc sa) nn ch tr v s
dng b nh hng m khng tr v dng d liu no.
ExecuteScalar: Thc thi cu truy vn ca i tng Command v ch tr v ct u
tin ca dng u tin ca kt qu. Cc kt qu cn li b b qua.

III.3. ng dng SqlConnection, SqlCommand, ExcuteNonQuery


V d sau trnh by vic ng dng SqlConnection v SqlCommand trong vic thm mt
ngi dng vo c s d liu khi ngi s dng lm vic vi Form Register c trnh
by mc V.4 ca chng 6. Vic nng cp ng dng ny c thc hin tng bc nh sau:

III.3.1.

To c s d liu

Khi ng Enterprise Manager ca SQL Server 2000 v to c s d liu. Trong trng


hp ca v d ny, c s d liu c to ra v c t tn l CSharpEx.

82

Lp trnh .Net

Hnh 87 To c s d liu bng SQL Server 2000

III.3.2.

To bng tblUser

Ngi lp trnh c th to bng bng cch s dng chc nng Design Table ca Enterprise
Manager hoc c th to bng cu lnh create table thng qua Query Analyzer. (Cc thao tc
ny ngi hc c th xem li cc hc phn lin quan n c s d liu hc trc hc phn
ny). V d ny trnh by vic to c s d liu bng chc nng Design Table ca Enterprise
Manager.

83

Lp trnh .Net

Hnh 88 To bng tblUser bng chc nng Design Table

III.3.3.

To stored procedure

Stored procedure l khi nim c dng ch tp hp lnh lin quan n mt chc nng
no m cc lnh ny c lu tr v thc thi ngay bn trong h qun tr c s d liu.
Vic s dng stored procedure to nn s tch bit v mt cng vic, iu ny lm cho vic
pht trin phn mm tr nn ti u v h qun tr c s d liu v cng ngh lp trnh tng
ng dng thng c lp vi nhau v c th c xy dng bi nhng nh cung cp khc
nhau.
V d ny trnh by vic xy dng stored procedure spInsertUser thc hin vic thm mi
mt ti khon ngi dng vo c s d liu. Stored procedure ny c to ra bng cu lnh
thng qua Query Analyzer.

Hnh 89 To stored procedure

84

Lp trnh .Net
Stored procedure thng thng gm hai phn: phn tham s v phn cu lnh truy vn.
Trong phn tham s, cc tham s bt u bng k t @. Phn cu lnh truy vn cha cu lnh
truy vn c s d liu v trong cu lnh ny c th s dng cc tham s phn tham s. Mt
stored procedure c th cha nhiu hn mt c lnh truy vn.

III.3.4.

Lp trnh tng tc c s d liu

Quay li ng dng Register mc V.4 ca chng 5, khi ngi s dng bm nt Register


th chng trnh ch thng bo rng ngi s dng ng k m khng h thm thng tin
ngi dng vo c s d liu. thng tin ngi dng c thm vo c s d liu ( c
to 3 bc trn), ngi lp trnh thc hin vic thay i s kin bn di ca nt Register
nh sau:
Ban u, khai bo v khi to i tng SqlConnection, trong trng hp ny i tng
c tn l myConnection. Xem v d hnh 86.
Bc th hai l xy dng i tng SqlCommand, trong trng hp ny i tng c tn
l myCommand. Qu trnh xy dng i tng SqlCommand bao gm cc vic: khi to i
tng, gn thuc tnh Connection, gn thuc tnh CommandType l StoredProcedure, khai
bo tn stored procedure cn s dng v thm cc tham s vi cc gi tr ly t cc i tng
trn Form.

Hnh 90 Xy dng i tng SqlCommand

85

Lp trnh .Net
Bc cui cng l m kt ni v gi phng thc thc hin truy vn. Trong bc ny,
phng thc Open() ca SqlConnection v phng thc ExecuteNonQuery() ca
SqlCommand c s dng.

Hnh 91 Triu gi cc phng thc thc hin tng tc c s d liu

III.3.5.

Bin dch v chy ng dng

Thc hin bin dch v chy ng dng ta c giao din ging nh khi chy ng dng
Register. Tuy nhin, khi bm vo nt Register th ng dng s lu thng tin ngi dng vo
c s d liu.

Hnh 92 Kt qu sau khi bin dch v chy ng dng


Sau khi bm nt Register, d liu ngi dng s c lu vo c s d liu v chng
trnh s hin th thng bo l to ngi dng thnh cng.

Hnh 93 Thng bo sau khi tng cc c s d liu thng cng

86

Lp trnh .Net
C s d liu lc ny s c thm mt ti khon ngi dng mi trong bng tblUser, ti
khon ny c to vi cc thng tin t Form va mi nhp.

Hnh 94 Thng tin ngi dng trong c s d liu

IV. SqlDataReader v phng thc ExcuteReader


IV.1. SqlDataReader
IV.1.1.

Khi nim SqlDataReader

SqlDataReader l i tng c .Net Framework cung cp nhm phc v vic truy cp


vo c s d liu. D liu sau khi c truy vn t c s d liu s c lu tr trong
SqlDataReader di dng bng gm nhiu dng v nhiu ct ging nh trong c s d liu.
D liu trong SqlDataReader c truy xut mt cch tun t v mt chiu. iu ny
ngha l ngi lp trnh ch c c t SqlDataReader mt cch tun t, mun c c
dng th i th phi c i-1 dng trc (ging nh vic c file trn a). SqlDataReader
khng cung cp c ch sp xp cng nh c ch truy xut ngu nhin, do ngi lp trnh
thng s dng vng lp khi thc hin c d liu t SqlDataReader hin th ln giao
din.

IV.1.2.

Cc thuc tnh ca SqlDataReader

FieldCount: thuc tnh ny tr v s trng trong record hin hnh.


IsClosed: thuc tnh ny tr v trng thi ca SqlDataReader l ng hay m.
HasRows: thuc tnh ny ch nh SqlDataReader c record d liu no hay khng.

IV.1.3.

Cc phng thc ca SqlDataReader

Close: phng thc ny thc hin vic ng SqlDataReader v gii phng ti nguyn.
GetBoolean, GetByte, GetChar, GetDateTime, GetDecimal: ly cc gi tr ti ct ang
xt ty vo kiu d liu.
GetValue, GetValues: ly v gi tr hoc tp gi tr dng nguyn thy ( kiu d
liu gc ca Database).
Read: c record tip theo ca DataReader.

87

Lp trnh .Net

IV.2. Phng thc ExcuteReader


ExcuteReader l phng thc ca i tng SqlCommand, phng thc ny thc hin
vic truy vn c s d liu trong trng hp ni dung cu truy vn (CommandText) l cu
lnh select. Kt qu tr v ca phng thc ExcuteReader l SqlDataReader, i tng ny t
chc d liu thnh bng ging nh kt qu tr v ca cu lnh truy vn trong h qun tr c s
d liu.

IV.3. ng dng SqlDataReader v phng thc ExcuteReader


V d sau trnh by vic ng dng DataReader v phng thc ExcuteReader x l s
kin LogIn trong ng dng trnh by mc IV.3 ca chng 6. Trong s kin LogIn ny,
chng trnh s x l vic truy vn c s d liu kim tra xem ti khon c AccountName
v Password m ngi s dng nhp vo t cc TextBox c sn trong c s d liu hay
khng. on m ca s kin LogIn nh sau.

Hnh 95 ng dng DataReader v ExcuteQuery


Trong on m trn thc hin vic kim tra ng nhp bng cch thc hin lnh truy vn
select. Lnh ny thc hin vic tm trong bng tblUser cc record c AccoutName v
AccountPassword trng vi d liu nhp vo t cc TextBox. Kt qu thu c t cu lnh
truy vn ny c lu tr trong i tng SqlDataReader. Nu i tng ny c record

88

Lp trnh .Net
(HasRows = true) th ti khon ngi dng nhp vo l hp l v chng trnh s thng bo
ng nhp thnh cng, ngc li th chng trnh s bo li.

V.

SqlDataAdapter, DataSet v DataGridView

V.1. SqlDataAdapter
SqlDataAdapter l mt khi nim .Net Framework, khi nim ny c dng ch i
tng lm cu ni gia c s d liu v DataSet. SqlDataAdapter cha mt phn d liu ca
c s d liu v hot ng theo c ch kt ni. Vi c ch kt ni, SqlDataAdapter c
trang b mt s phng thc ly gi liu t c s d liu hoc in ngc d liu vo c
s d liu khi cn thit.
Cc thuc tnh thng dng ca SqlDataAdapter bao gm:
SelectCommand: Thuc tnh ny quy nh cu lnh select ca SqlDataAdapter. Cu
lnh select ca thuc tnh ny thng c triu gi khi SqlDataAdapter thc hin
phng thc Fill().
InsertCommand, UpdateCommand, DeleteCommand: Cc thuc tnh ny ln lt quy
nh cu lnh insert, update, delete ca SqlDataAdapter. Cc cu lnh ny c triu
gi khi SqlDataAdapter thc hin phng thc Update() cp nht d liu t
SqlDataAdapter vo c s d liu.
Cc phng thc thng dng ca SqlDataAdapter bao gm:
Fill: i s ca phng thc ny l DataSet hot DataTable. Phng thc ny thc
hin vic in d liu tng ng vi cu lnh select t c s d liu vo mt DataSet
hoc DataTable.
Update: Thc hin vic cp nht d liu t SqlDataAdaper vo c s d liu.

V.2. DataSet
DataSet l khi mt nim ca .Net Framework, khi nim ny c dng ch i tng
tng khng kt ni trong m hnh ADO.NET. DataSet c thit k tch bit vi c s
d liu v khi vn hnh khng cn bit n vic c s d liu thuc kiu g, kt ni ra sao.
Nhim v ca DataSet l nhn d liu v t DataAdapter v x l n.
DataSet c th c xem nh mt c s d liu trong b nh gm tt c cc bng, d liu,
quan h v rng buc d liu. DataSet c nhiu i tng cp thp hn i km vi n nh :
DataTable (tng ng vi mt bng), cp thp hn ca DataTable c cc i tng
DataRow (tng ng vi mt dng), DataColumn (tng ng vi mt ct),
DataRelation (tng ng vi cc quan h).
DataSet nhn d liu t DataAdapter thng qua phng thc Fill() v d liu ny c
hin th ln giao din thng qua thuc tnh DataSource ca tng trnh by. Vic s dng
DataSet l mt tin b ln ca kin trc ADO.NET tuy nhin vi cc ng dng Website, vic

89

Lp trnh .Net
s dng DataSet khng c khuyn khch v i tng DataSet c xem l qu ln, nng
n kh thch hp cho ng truyn vn rt hn ch.

V.3. DataGridView
V.3.1.

Khi nim DataGridView

DataGridView l khi nim dng ch i tng trnh by giao din trn Form, i tng
ny b tr d liu thnh nhiu ct v nhiu hng. i tng ny cn c gi l li d liu.

V.3.2.

Cc thuc tnh ca DataGridView

DataSource: Thuc tnh ny quy nh bng d liu c hin th ln giao din. i


tng c gn vo thuc tnh ny thng thng l DataTable.
CurrentRow: Thuc tnh ny tr v dng ang c chn, thng tin trong dng ny
c cha ng trong i tng DataGridViewRow.
CurrentCell: Thuc tnh ny tr v ang c chn, thng tin trong ny c cha
ng trong i tng DataGridViewCell.

V.3.3.

Cc s kin ca DataGridView

SelectionChanged: S kin ny xy ra khi ngi s dng di chuyn con tr son tho


trn cc dng ca DataGridView.
DoubleClick: S kin ny xy ra khi ngi s dng kch p chut vo
DataGridView.

V.4. ng dng SqlDataAdapter, DataSet, DataGridView


V d sau trnh by vic ng dng SqlDataAdapter, DataSet v DataGridView trong vic
hin th d liu t c s d liu ln giao din. ng dng c thc hin tng bc nh sau:

V.4.1.

To project

Thc hin to project Windows Application nh trnh by mc IV.3 chng 6. Sau


khi project c to th mt Form chnh c tn l Form1 c to ra.

V.4.2.

Thm i tng DataGridView

Thc hin vic ko th i tng DataGridView t Toolbox panel vo Form chnh. Sau
t tn cho DataGridView. Trong trng hp ny, DataGridView c t tn l myGrid1.

90

Lp trnh .Net

Hnh 96 Cu hnh DataGridView

V.4.3.

Ci t s kin Load ca Form

Nh trnh by chng trc, s kin Load ca Form xy ra khi Form c khi to.
Trong ng dng ny, s kin Load thc hin vic kt ni c s d liu v ly thng tin, sau
in vo DataGridView hin th trn Form. on m ca s kin ny c ci t nh
sau:

Hnh 97 S dng DataAdapter, DataSet v DataGridView

91

Lp trnh .Net
Trong on m mnh ha trn, i tng SqlDataAdapter c khi to bng cch cung
cp hai tham s: cu lnh truy vn v i tng SqlConnection. Sau khi khi to, i tng
SqlDataAdapter thc hin phng thc Fill() in d liu t c s d liu vo mt bng c
tn l tblUser trong DataSet. Bng ny c hin th ln giao din bng cch gn n cho
thuc tnh DataSource ca i tng DataGridView.

V.4.4.

Bin dch v chy chng trnh

Thc hin bin dch v chy chng trnh c kt qu nh sau:

Hnh 98 Kt qu chy chng trnh


Kt qu chy chng trnh ny hon ton ging vi kt qu khi thc hin hin th d liu
ca Sql Server bng Enterprise Manager hnh 94.

92

KT LUN
Gio trnh ny trnh by phng php lp trnh .NET vi ngn ng C# ca phin bn
Visual Studio 2005. Tuy gio trnh ch trnh by nhng ni dung c bn nht ca cng ngh
.NET, nhng vi nhng kin thc ny, ngi lp trnh c th t nghin cu cc chuyn cao
hn. T nhng ni dung trong gio trnh v nhng kin thc t cc hc phn tin quyt ca
hc phn ny, ngi hc c kin thc xy dng mt ng dng Windows.
Tuy nhin, gio trnh c vit cho sinh vin cao ng nn v ni dung cn c nhiu hn
ch, cch tip cn vn cha tht s chnh xc v cch gii quyt vn cha hon ton ti
u v tng qut. Gio trnh ch i su vo k nng thc hnh, cc v d minh ha c trnh
by theo phng php hng dn tng bc (step by step) nn gio trnh cha th
hng ngi hc n t duy tru tng ca lp trnh bc cao. Do thi lng ging dy khng
nhiu nn gio trnh cng cha th trnh by mt ng dng hon chnh ca mt d n phn
mm thc t.
Cui cng, tc gi mong ngi hc c nhng gp kp thi ci tin v hon thin.

L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng

93

TI LIU THAM KHO


[1] Phng Lan. Lp trnh Windows vi C#.Net. Nh xut bn lao ng x hi
[2] Phm Hu Khang, on Thin Ngn. C# 2005. Tp 1, 2, 3, 4, 5. Nh xut bn Lao
ng v X hi.
[3] Jesse Liberty. Programming C# for Visual Studio .NET. OReilly.
[4] Jason Price. Mastering C Sharp Database Programming. Sybex.
[5] Jesse Liberty. Programming C#. OReilly.
[6] Rebecca M. Riordan. Microsoft ADO.NET Step by Step. MS Press.

Lp trnh .Net

TM TT LUN VN TT NGHIP
Phn ny vit tn ti (ch nh 13pt) v :
tm tt ni dung LUN VN TT NGHIP, vit ngn gn v r rng
(15 n 20 dng) cho bit :
ti c t ra nh th no (bi cnh), mc ch (gii thch r hn tn ti) v
nhim v phi thc hin (cc mc tiu c th v kt qu cn c)
SV gii quyt vn g ( nghin cu l thuyt, thc tin nh th no, xut
c nhng gii php (bin php) hay sng kin g ?).
SV gii quyt n u (nu mt s kt qu tiu biu).

Tn tac gia y, LP XXX

You might also like