Professional Documents
Culture Documents
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
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
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
Mc lc
vii
KT LUN .................................................................................................... 93
PH LC ........................................ ERROR! BOOKMARK NOT DEFINED.
Mc lc
viii
Chng 1
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#
Lp trnh .Net
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
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.
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.1. To Project
Ngay sau khi khi ng Visual Studio, chn Menu File New Project.
Lp trnh .Net
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.
II.3.1.
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.
II.3.2.
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.
Lp trnh .Net
II.4.1.
Ch debug
thc hin debug, ngi lp trnh c th bm F5 hoc chn vo Menu Debug Start
Debug.
II.4.2.
Ch non-debug
10
Lp trnh .Net
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
12
Lp trnh .Net
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
V.1.2.
S ch s c ngha
7
16
V.1.3.
Ghi ch
28 ch s c ngha
[true, false]
kiu k t unicode
Lp trnh .Net
Danh sch cc Escape Sequence thng dng.
Escape Sequence
\'
\"
\0
\n
\\
Din gii
Single quote
Double quote
Null
Return
Backslash
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.1.
C php
switch (expression)
{
case (condition): statement(s);
[break;]
VI.2.2.
Cch s dng
15
Lp trnh .Net
VII. Cu trc lp
VII.1. Cu trc lp for
VII.1.1. C php
for (initializer; condition; iterator)
statement(s)
16
Lp trnh .Net
17
Lp trnh .Net
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.
VIII.
Mng (Array)
VIII.1.
Mng mt chiu
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.
VIII.2.
20
Lp trnh .Net
Hnh 24 Minh ha vic s dng hai vng lp lng nhau khi dng ma trn
IX.2.1.
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 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.1.
22
Lp trnh .Net
23
Lp trnh .Net
IX.3.2.
24
Chng 3
Mc tiu
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.
25
Lp trnh .Net
M t
public
internal
protected
private
26
Lp trnh .Net
V.
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.
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.
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.
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.
31
Lp trnh .Net
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
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,
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
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.
38
Lp trnh .Net
39
Lp trnh .Net
40
Lp trnh .Net
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.
42
Lp trnh .Net
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
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.1.1.
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
IV.1.2.
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.
IV.1.3.
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.
IV.2.1.
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
IV.2.2.
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.
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.
V.
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.
50
Chng 6
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.
51
Lp trnh .Net
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.
53
Lp trnh .Net
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.
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.
III.2.2.
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
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
III.3.3.
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
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
III.3.5.
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
61
Lp trnh .Net
III.3.6.
Thc hin vic bin dch v chy ng dng ging nh Console Application. Sau khi chy
ng dng ta c kt qu nh sau.
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.
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
IV.2. Button
IV.2.1.
IV.2.2.
63
Lp trnh .Net
IV.2.3.
Cc s kin ca Button
IV.3.1.
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.
IV.3.2.
To cc TextBox
64
Lp trnh .Net
IV.3.3.
Thm cc Button
65
Lp trnh .Net
IV.3.4.
66
Lp trnh .Net
IV.3.5.
V.
V.1. ComboBox
V.1.1.
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.
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.
V.1.4.
Cc s kin ca ComboBox
V.2. CheckBox
V.2.1.
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.
V.2.3.
Cc s kin ca CheckBox
V.3. RadioButton
V.3.1.
V.3.2.
V.3.3.
Cc s kin ca RadioButton
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.
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
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.
V.4.4.
To 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.
V.4.6.
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
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.
VI.2. MenuStrip
VI.2.1.
VI.2.2.
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.
VI.3.2.
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
VI.4.1.
VI.4.2.
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
VI.4.4.
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.
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.
78
Lp trnh .Net
79
Lp trnh .Net
III.1.2.
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.
III.2. SqlCommand
III.2.1.
III.2.2.
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.
III.3.1.
To c s d liu
82
Lp trnh .Net
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
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.
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.
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.
III.3.5.
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.
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.
IV.1.2.
IV.1.3.
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
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.
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.
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.
V.3.3.
Cc s kin ca DataGridView
V.4.1.
To project
V.4.2.
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
V.4.3.
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:
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.
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.
93
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).