Professional Documents
Culture Documents
Slide Bai Giang C#
Slide Bai Giang C#
Ni dung mn hc
PHN PHN PHN PHN PHN I: Gii thiu VC# II: Ngn ng C# III: To Component IV: Cc ng dng Window V: To ng dng web
Chng 1: M u
Ni dung chng 1
Khi ng Microsoft Visual Studio .NET S dng mi trng lp trnh Visual Studio.NET Vit ng dng dng lnh vi C# Vit ng dng Windows vi C#
Khi ng Microsoft Visual Studio .NET VS.NET l mi trng lp trnh cung cp rt nhiu cng c cn thit cho vic xy dng cc d n ln v nh Ci t:
Ci IIS B VS.NET 2003 (3 a CD)1312 B VS.NET 2005 (4 a CD) Ci b MSDN
3
10
11
12
20
22
nh danh
L tn nhn ra cc phn t trong cc chng trnh Tun theo nguyn tc c php:
Dng k t ch v s Phi bt u bng k t ch K t gch di _ c xem l k t ch
V d:
Hp l: result_score, _number, a1 Khng hp l: result%, 4b,
3
T kha
C# c sn 76 t kha ca chnh n. V d: abtract, class, using, namespace, break, continue, as, do, event, is, in, new, true, if, else, float, char, finally, protected, return, string, default, for, while,. Trong ca s m ngun, mc nh t kha c mu xanh da tri.
4
S dng bin
Bin l ni lu tr gi tr tm thi. Tn bin phi l duy nht. t tn bin:
Khng dng du gch di (_) Khng nn to tn bin ch khc nhau bi ch hoa v ch thng Tn nn bt u bng k t ch thng Nn t tn theo cc chun khuyn co
Khai bo bin: ch ra kiu gi tr m n s gi v khai bo tng minh. Pht biu lnh khai bo: int age; Bin phi cha gi tr trc khi dng
5
Cc kiu d liu c s
Kiu M t Kch thc (bit) 32 64 32 64 V d
int count; count = 42; long w; w = 42L; float a; a = 0.42F; double b; b = 0.42
6
Cc kiu d liu c s
Kiu M t Kch thc (bit) 128 16bit/k t 16 8 V d
decimal coin; coin = 0.42M; string st; st = abc; char c; c = 4; bool b; b = false
7
Ton t s hc
Cc php ton: +, -, *, /, % S dng cc php ton ny trn cc gi tr char, int, long, float, double, decimal. Khng dng cho kiu bool v string. Ngoi l: du + dng ni cc chui.
8
u tin ca ton t
L th t m ton t ca biu thc c nh gi. V d: 6+5*3 C th s dng du ngoc n quyt nh u tin.
Cc ton t logic
Trong lp trnh, ta thng gp tnh hung kim tra mt vn c 2 trng thi. V d: x>4 hay khng ? Biu thc ng hay sai?... Mt ton t logic l mt ton t c kt qu ng (true) hoc sai (false). Kiu d liu bool Ch : cc ton t lm vic trn mt ton hng c gi l ton t mt ngi, lm vic trn 2 ton hng c gi l 2 ngi.
10
Cc ton t logic
Ton t AND, k hiu && Ton t OR, k hiu || Ton t NOT, k hiu ! Mc ch cc ton t ny l kt hp cc biu thc logic li thnh biu thc ln hn.
12
Kt hp v u tin
Hng u tin Mt ngi Nhn Cng Ton t () u tin nht ! Ph nh *, /, % +, Kt hp Tri Tri Tri Tri
13
Kt hp v u tin
Hng Quan h Bng Logic Gn Ton t <, <=, >, >= ==, != &&, || = Kt hp Tri Tri Tri Phi
14
Ton t gn kp
var= var + num var= var - num var= var * num var= var / num var *=num var -=num var *=num var /=num
Cc tan t ny c u tin v tnh kt hp phi ging ton t gn n gin
Gim 1 n v:
Count--;
Tng tin t v hu t:
Count++ v --Count
16
<Kiu tr v>: int, string, void,. <tn phng thc>:dng gi phng thc <ds tham s>: kiu v tn tham s, ngn cch nhau bi du phy (nu c nhiu) <thn phng thc>: cc dng m v tr v kt qu (c th c hoc khng)
3
Gi phng thc
S dng tn ca phng thc gi Truyn tham s cho n (nu phng thc c tham s). Nu khng c tham s th vn phi cp ng m ngoc () C php gi:
<tn phng thc>(ds tham s)
Phm vi (Scope)
Phm vi ca mt nh danh l mt vng ca chng trnh trong nh danh c s dng. Thn phng thc, thn lp to nn phm vi. Bin c to ti cu lnh nh ngha n. C th to bin bn trong phng thc.
5
Phm vi (Scope)
Bin khai bo bn trong phng thc th c phm vi trong phng thc . Chng c gi l bin cc b, khng th dng chia s thng tin gia cc phng thc. Bin khai bo bn trong thn ca 1 lp th c phm vi l lp Nhng bin khai bo bn trong lp th c gi l trng hay thuc tnh.
6
Phm vi (Scope)
C th s dng cc thuc tnh trong cc phng thc. Ch : Trong phng thc, ta phi khai bo bin trc khi s dng cn trong lp, ta c th khai bo bin sau cc phng thc.
nh danh chng(Overload Identifier) Hai nh danh m c cng tn th ta bo rng chng b np chng. Nu khai bo >=2 bin cng tn trong mt phm vi th s b bo li Nhng phng thc th c th np chng. Ti sao? V trnh bin dch c th da vo s lng v kiu ca cc tham s nhn din phng thc no c gi.
8
nh danh chng(Overload Identifier) C th np chng cc tham s ca phng thc nhng khng th chng kiu tr v. C# khng h tr cc i s mc nh s dng cc phng thc np chng. V d: vit v gi phng thc
9
Cu lnh if
C php
if(<biu thc logic>) //<cu lnh 1> else //<cu lnh 2>
Cu lnh if lng
if(<biu thc logic 1>) { //<nhm lnh 1> } else if(<biu thc logic 2>) { //<nhm lnh 2> } .. else { //<nhm lnh n> }
Cu lnh switch
C php:
switch(<biu thc iu kin>) { case <biu thc hng 1>: //<cc cu lnh> break; case <biu thc hng 2>: //<cc cu lnh> break; default: //<cc cu lnh> break; }
Cu lnh switch
Ch s dng lnh ny trn cc kiu c bn int v string. Cc nhn sau t kha case l biu thc hng. Cc nhn ny phi l duy nht. Phi lp li cng c php cho cc gi tr ring l thc thi cng cc cu lnh. Cu lnh break l bt buc, k c trong phn default
Biu thc iu kin c nh gi. Nu ng, cu lnh s c thc thi. C tip tc nh vy n khi biu thc iu kin khng cn ng th dng vng lp. Lu : khng c s chuyn i t dng s nguyn sang ng/sai nh trong C/C++
2
C th b qua bt k phn no trong 3 phn pht biu ca for Nu bin khai bo trong phn khi to ca for th n s mt sau khi vng for kt thc.
3
Pht biu do
C php:
do statement while(<biu thc iu kin>)
break v continue
Dng break nhy khi thn vng lp Continue buc chng trnh ngay tc thi nh gi li biu thc ng/sai
Vn ny sinh
Cc on m chng trnh c th pht sinh cc li. Lm th no? Dng bin ton cc nhn cc gi tr li khc nhau t cc phng thc khc nhau khng hiu qu. s dng cc ngoi l
n bt ngoi l
tng: Phn cch m thc thi v m x l li khng nhp nhng vi nhau na. Hai bc:
Vit m chng trnh bn trong khi try Vit mt hoc nhiu b x l catch ngay sau khi try.
try{ statement; } catch(ObjectException obj){ process Exception }
3
V d :
try{ int lhs=System.Int32.Parse(lhsOperand.Text); int rhs=System.Int32.Parse(rhsOperand.Text); int answer=doCalculate(lhs,rhs); result.Text=answer.ToString(); } catch(System.FormatException ex){ // X l ngoi l y }
4
Nu khng c b x l catch
Method 1
Method 2
Method n
5
a b x l catch
Cc li khc nhau s a ra cc ngoi l khc nhau.
try{ // statement; } catch(Exception1 ex1){ // process exception 1 } catch(Exception2 ex2){ // process exception 2 } ..
V d:
try{ int lhs=System.Int32.Parse(lhsOperand.Text); int rhs=System.Int32.Parse(rhsOperand.Text); int answer=doCalculate(lhs,rhs); result.Text=answer.ToString(); } catch(System.FormatException ex1){ // X l ngoi l th nht y } catch(System.DivideByZeroException ex2){ }
// X l ngoi l th hai y
Cc li trn s hc
Gi tr cc i v cc tiu ca s nguyn: System.Int32.MaxValue v System.Int32.MinValue Gi tr cc i + 1 ? C th nm bt ngoi l OverflowException Hoc dng t kha checked v unchecked
9
Checked v unchecked
10
Checked v unchecked
11
Checked v unchecked
12
Checked v unchecked
13
Cc biu thc checked v unchecked C th dng checked v unchecked kim tra trn s trn biu thc s nguyn. V d:
int a=unchecked(System.Int32.MaxValue+1);
Nm ra ngoi l
V d:
throw new System.ArgumentOutOfRangeException( Bed month)
15
Khi finally
try{ // statement } catch(){ // statement } finally{ // statement }
16
i tng v lp
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 7
Lp (class)
class Circle { double radius; double Area() { return 3.1415*radius*radius; } }
3
Nu khng ni g th mc nh l private
5
i tng
int i; Circle c; i tng l th hin ca lp
X l vi trng hp th nht
int i=57; Console.WriteLine(i); Hoc l: int i; i=57; Console.WriteLine(i);
Cn trng hp th hai ?
X l trng hp th hai
R rng ch c cc kiu c bn l c th c cc gi tr thc s, cn kiu ca c l mt lp. Ta dng t kha new v gi phng thc khi to:
Circle c=new Circle(); Console.WriteLine(c); Hoc: Circle c; C = new Circle(); Console.WriteLine(c);
9
11
Cc trng m ta khng khi to trong phng thc khi to vn c khi u gi tr l 0, false hay null. Gi phng thc ca lp: c.Area() Mt s khuyn co khi t tn:
Cc nh danh ton cc nn bt u bng mt k t hoa. Cc nh danh khng phi ton cc nn bt u bng mt k t thng.
12
13
V d: File Point.cs
using System; namespace Classes { class Point { public Point() { x=0; y=0; } public Point(int initialX, int initialY) { x=initialX; y=initialY; } public double distanceTo(Point other) { int xDiff=x-other.x ; int yDiff=y-other.y ; return Math.Sqrt (xDiff*xDiff+yDiff*yDiff); } private int x,y; }
14
V d: File Point.cs
class Application{ static void Entrance(){ Point origin=new Point(); Point bottomRight =new Point (600,800); double distance=origin.distanceTo (bottomRight); Console.WriteLine ("Distance is :{0}",distance); } static void Main(string[] args){ try{ Entrance(); } catch (Exception caught){ Console.WriteLine(caught.Message); } } }
15
Lp Math cha cc hm ton hc: Sin, Cos, Sqrt, N khng c thc hin nh l phng thc th hin.
16
Ta c th dng t kha static to trng chia s gia cc i tng khai bo mt trng l tnh m gi tr ca n khng thay i, ta dng t kha const. V d:
class Math{ public static double Sqrt(double d){} public const double PI = 3.141593; }
18
Chng 8
42
V d chng 8
Tp Pass.cs:
using System; namespace Parameters{ class Pass{ public static void Value(int param){ param = 42; } public static void Reference(WrappedInt param){ param.Number = 42; } } }
4
Tp WrappedInt.cs:
namespace Parameters{ class WrappedInt { public int Number; } }
Tp Main.cs:
using System; namespace Parameters{ class Application{ static void Entrance(){ int i = 0; Console.WriteLine(i); Pass.Value(ref i); Console.WriteLine(i); WrappedInt wi = new WrappedInt(); Console.WriteLine(wi.Number); Pass.Reference(wi); Console.WriteLine(wi.Number); }
Tp Main.cs (tip)
static void Main(string[] args){ try{ Entrance(); } catch (Exception caught){ Console.WriteLine(caught.Message); } } } }
7
Kt qu in ra l 42
8
Tham s ref
t trc mt tham s t kha ref th tham s tr thnh b danh cho i s thc s. Thao tc c thc hin trn tham s cng s c thc hin trn i s. Khi truyn mt i s cho mt tham s th trc i s ny ta cng phi t t kha ref.
9
Tham s ref - v d:
static void Value(ref int param){ param++; } static void Main(){ int arg = 42; Value(ref arg); Console.WriteLine(arg); // Kt qu 43 }
10
Ch :
Phi gn gi tr cho mt bin trc hi dng n lm i s ref truyn vo cho tham s ref. V d sau bo li:
static void Value(ref int param){ param++; } static void Main(){ int arg; // khng khi gn gi tr Value(ref arg); Console.WriteLine(arg); }
11
Tham s out
T kha out cng ging t kha ref Nu ta t t kha out trc mt tham s th tham s ny s tr thnh b danh cho i s. Khi truyn i s cng phi t t kha out trc i s. S khc nhau l, mt phng thc khng phi gn gi tr cho tham s ref nhng phi gn mt gi tr cho tham s out.
12
Stack v Heap
B nh my tnh c chia thnh mt s on. Hai on quan trng:
Stack: khi gi phng thc, b nh c yu cu cho cc tham s v cc bin cc b. Khi phng thc kt thc, vng nh c gii phng. Heap: Khi to mt i tng s dng t kha new v li gi phng thc khi dng. N s c gii phng mt cch t ng khi kt thc.
15
Stack v Heap
STACK HEAP
int param 42
Circle c @
42
16
Lp System.Object
Lp Object trong khng gian tn System l kiu tham chiu quan trng.
namespace System { class Object { } }
17
Lp System.Object
Tt c cc lp hon ton k tha t lp System.Object Ta vit:
class Circle{ }
C ngha l:
class Circle:System.Object{ }
18
Lp System.Object
Khi nim k tha, chng ta s hc trong chng 12. Mt bin kiu Object c th tham chiu ti mt th hin ca bt k lp no. STACK HEAP
object o Circle c; c = new Circle(param); object o; o = c; Circle c @
19
@ 42
C ch bao (boxing)
Bin kiu object c th tham chiu ti bt k i tng ca kiu tham chiu hoc tham chiu ti bn sao ca kiu gi tr
STACK HEAP int i int i = 42; object o = i; object o @
20
42 42
21
Chng 9
Kiu lit k
Dng t kha enum to kiu lit k. Ton b gi tr ca n c gii hn trong tp tn k hiu. V d: khai bo kiu enum c tn l Season, gi tr ch gii hn trong cc tn k hiu Spring , Summer, Fall, Winter:
enum Season {Spring, Summer, Fall, Winter}
2
Kiu lit k
Cc tn k hiu phi nm trong cp ngoc nhn, phn cch nhau bng du phy.
enum Season {Spring, Summer, Fall, Winter}
0 1 2 3
4
3
Kiu lit k
c php cho nhiu hn mt lit k ch c cng gi tr. V d:
enum Season {Spring, Summer, Autumn = Fall, Winter}
Cc kiu c s l 1 trong 8 kiu sau:byte, sbyte, short, ushort, int, uint, long, ulong.
Kiu lit k l kiu gi tr (cc bin c kiu lit k gi gi tr ca n trc tip trong ngn xp).
5
Lu :
Ta phi vit Season.Fall ch khng c vit Fall C th chuyn i mt bin kiu lit k thnh mt chui cha gi tr ch. Khi xut ra mt bin kiu lit k, trnh bin dch t ng xut ra tn ca ch ph hp vi gi tr ca bin.
Kiu cu trc
Ta quen thuc vi khi nim record trong Pascal hay struct trong C. Trong C#, ta cng dng t kha struct to ra kiu gi tr ca ring ta. Mt cu trc c th c cc trng, cc phng thc v thm ch cc phng thc khi dng ging nh lp
9
14
Cu trc
Kiu gi tr!
Lp
Kiu tham chiu! Cc i tng tn ti trn Heap C Sai
Cc th hin tn ti trn ngn xp Cc gi tr hay vng nh heap? tn ti trn ngn xp C th khai bo mt phng thc khi to mc nh? Nu khai bo phng thc khi to, trnh bin dch s vn vit phng thc khi to khc Nu k khi to 1 trng trong phng thc khi to, trnh bin dch s t ng khi to? c php khi to th hin ca cc trng ti im khai bo chng? Khng ng
Sai
ng
Khng
c
15
Bin cu trc
Mt kiu cu trc l mt kiu gi tr. Cc bin cu trc gi gi tr v tn ti trn ngn xp. V d: ta khai bo 1 bin cc b now kiu Time:
STACK ? ? ?
17
Gi phng thc khi to ca cu trc Phng thc khi dng cho cu trc lun tn ti v lun gn 0, False hoc null cho cc trng. Dng t kha new
STACK 0 0 0
19
Nu bn vit phng thc khi dng ca chnh mnh, bn c th dng khi to mt bin cu trc. V d:
20
23
25
Mng v tp hp
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 10
Mng
Mng l mt chui cc phn t cng kiu, tn ti trong mt khi lin tc ca b nh v c truy xut bi ch mc s nguyn. Mng rt hu dng khi chng trnh phi x l mt nhm c trt t cc hng mc tng t nhau. Khai bo bin mng: type[] name;
V d: int[] arrint;
2
To cc th hin ca mng
Cc mng l cc kiu tham chiu, khng phi l kiu gi tr. Mt bin mng tham chiu ti mt th hin ca mng trn vng nh heap. Do , khi khai bo mt bin mng, ta khng ch ra kch thc ca n. Ta ch cn kch thc ca mt mng khi to th hin ca mng. Ch : khai bo mt bin mng khng to ra mt th hin ca mng.
3
To cc th hin ca mng
to ra mt th hin ca mng, bn dng t kha new km theo tn kiu v kch thc mong mun trong cp ngoc vung: new int[3]; V d: int [] arrint = new int[3];
STACK int[] arrint; int[] arrint ? int[] arrint arrint = new int[3]; @ 0 0 0
4
HEAP
To cc th hin ca mng
Kch thc ca mt mng c th c tnh ton thi gian thc thi, n khng nht thit phi l hng s thi im bin dch. V d:
int size = int.Parse(Console.ReadLine()); int[] arrint = new int[size];
a mt gi tr vo phn t mng:
arrint[1] = 5;
Ly ra gi tr t mt phn t mng:
Console.WriteLine(arrint[1]);
Vic truy xut u c kim tra ch s. Nu ch s <0 hoc kch thc th trnh bin dch s a ra ngoi l
IndexOutOfRangeException
10
V d
try{ int[] arrint = { 3, 4, 5}; Console.WriteLine(arrint[4]);// li } catch(IndexOutOfRangeException ex){ }
11
Duyt mng
Dng lnh for duyt qua tt c cc phn t ca mng:
int[] arr = { 4, 5, 6, 7}; for(int i = 0;i < arr.Length;i++){ Cosole.WriteLine(arr[i]); }
Ch cn u v cn cui.
12
Duyt mng
Dng pht biu foreach:
int[] arr = { 4, 5, 6, 7}; foreach(int i in arr){ Cosole.WriteLine(i); }
Dng foreach lun duyt qua tt c cc phn t ca mng. Nu mun duyt mt phn mng, ta dng for. Bin lp ca foreach ch c th c, nu mun thay i phn t ca mng, ta dng for.
13
Nu mun sao chp mt th hin mng do mt bin mng ang tham chiu n, ta lm nh sau:
14
tgl
@ null null null null
16
tgl
@ @ @ @ @
17
tgl
@ @ @ @ @
copy
@ @ @ @ @
18
S dng lp System.Array
Tt c cc kiu mng nh: int[], double[], object[], u k tha t lp System.Array. Tt c cc kiu mng l kiu tham chiu.
int[] arr = new int[3]{ 3, 4, 5}; Array arr = new int[3]{ 3, 4, 5}; int[] arr = { 3, 4, 5};//lm vic Array arr = { 3, 4, 5}; // li
Ging nhau
C vn !!
19
S dng lp System.Array
Thay v dng vng for sao chp cc phn t trong 1 mng vo mng khc, bn c th dng phng thc CopyTo ca th hin lp System.Array. N s sao chp ni dung ca 1 mng vo 1 mng khc vi ch mc khi u xc nh. V d:
int[] arr = { 4, 5, 6}; int[] arrcopy = new int[arr.Length]; arr.CopyTo(arrcopy,0);
20
S dng lp System.Array
Cch khc sao chp gi tr l s dng phng thc tnh Copy ca lp System.Array. V d:
int[] arr = { 4, 5, 6}; int[] arrcopy = new int[arr.Length]; arr.Copy(arr, arrcopy, arr.Length);
Lp tp hp
B khung Microsoft .NET c mt khng gian tn System.Collection cha mt s lp cung cp cc gii php sn sng thc thi trong cc trng hp c bit. Tt c cc lp collection u chp nhn, gi v tr v cc phn t ca n dng cc i tng (kiu phn t ca lp tp hp lun l i tng).
22
Lp tp hp
Lp tp hp
i chiu mng s nguyn v mng i tng Mng i tng: c th thm cc gi tr ca bt k kiu no vo mng ny.
STACK 2 arr @ @ @ @ @ HEAP 5
8
24
4 lp tp hp thng dng
Lp Lp Lp Lp ArrayList Queue Stack SortedList
25
4 lp tp hp thng dng
Lp ArrayList
Hn ch ca mng:
Mun thay i kch thc: to mng mi, sao chp v cp nht tham chiu. Nu mun b bt phn t: xa phn t , dn toa cc phn t pha sau. Nu mun chn 1 phn t vo mng: di cc phn t sau i 1 v tr ri mi chn.
4 lp tp hp thng dng
Lp ArrayList
4 lp tp hp thng dng
Lp ArrayList
// b phn t u tin c gi tr l 4 countdown.Remove(4); // duyt qua 5 phn t cn li dng pht biu for for(int i=0; i != countdown.Count; i++){ int number = (int)countdown[i]; Console.WriteLine(number); } // duyt qua 5 phn t cn li dng foreach foreach(int number in countdown){ Console.WriteLine(number); }
28
4 lp tp hp thng dng
Lp Queue
29
4 lp tp hp thng dng
Lp Stack
30
4 lp tp hp thng dng
Lp SortedList
SortedList duy tr trong n 2 mng i tng: kha v gi tr. Mng kha lun c sp th t. V d:
using System; using System.Collections; SortedList map = new SortedList(); // in gi tr vo SortedList string[] keys = {these, are, the, keys}; for(int i=0; i !=keys.Length;i++){ string key = keys[i]; int value = i; map[key] = value; }
31
Lp SortedList
foreach(DictionaryEntry element in map){ string key = (string)element.Key; int value = (int)element.Value; Console.WriteLine(Key:{0}, Value:{1}, key, value); }
Kt qu:
32
So snh mng v tp hp
Mng khai bo kiu phn t m n lu gi, tp hp th khng. Mt th hin mng c kch thc c nh, mt tp hp c th thay i kch thc khi cn. Mng l mt cu trc d liu c/ghi, tp hp c th ReadOnly.
33
Mng tham s
Nguyn Hng Phng Khoa CNTT, HBKHN
Chng 11
S dng i s mng
Phng thc Min tm s nguyn nh nht trong mng s:
class Util{ public static int Min(int[] array){ if(array==null || array.Length ==0){ throw new ArgumentException(Util.Min); } int currentMin = array[0]; foreach(int i in array){ currentMin = i; } } }
3
S dng i s mng
Lu :
Lu :
Mt mng tham s phi l tham s cui cng. Cc quy tc chuyn i kiu p dng cho cc i s. Trnh bin dch s d tm v t chi bt k s np chng m h no.V d:
// bin dch c li public static int Min(params int[] array) . public static int Min(int, params int[] array)
8
// trnh bin dch bo li public static void Min(params int[] array, int i)
Lu :
Mt phng thc khng c mng tham s params lun c u tin hn phng thc c mng tham s. V d:
public static int Min(int lhs, int rhs) . public static int Min(params int[] array)
Thm phng thc khng c mng tham s l 1 k thut hu ch v trnh bin dch s khng phi to v xc nh qu nhiu mng
9
Chuyn i kiu
C# cho php bn chuyn i kiu d liu t kiu ny sang kiu khc nu thc hin iu ny mang ngha. Chuyn i r rng, t ng:
float f = 99;
Hng 99 thc s l s nguyn. Trnh bin dch s chuyn n sang s thc trc khi gn cho f. Vic chuyn i ny c v l m rng ra, do khng lm mt mt thng tin.
10
p kiu
Chuyn i kiu
Ngc li, ta cng c chuyn i p kiu. D liu b thu hp li, thng tin c th b mt. V d:
float f = 99.9F; int i = (int) f;
Cu lnh u tin gn 1 i tng chui(kiu tham chiu) cho 1 tham chiu i tng. Cu lnh sau gn 1 gi tr nguyn( kiu gi tr) cho 1 tham chiu i tng. C 2 cu lnh u c bin dch v:
Cu lnh 1: object l lp c s ca lp chui Cu lnh 2: C# s bao mt cch t ng (tham chiu i tng tham chiu n bn sao ca gi tr 42 trn vng Heap).
12
Bn c th dng mng i tng tham s khai bo phng thc nhn bt k i s thuc bt k kiu no. V d:
class Black{ public static void Hole(params object[] array){ } }
13
14
17
K tha
Nguyn Hng Phng Khoa CNTT, HBKHN
Chng 12
K tha l g?
Nu ai li cho bn mt th g theo nguyn vng ca ngi y th bn c coi l k tha n. Con ci k tha mt na gen di truyn ca m, mt na ca cha. K tha trong lp trnh, mun ni n mi quan h gia cc lp.
Lp c s v lp nhn
Lp c s cn gi l lp cha, lp t tin. Lp nhn cn gi l lp dn xut, lp con chu. C php khai bo mt lp k tha t lp khc:
class <lp nhn>:<lp c s>{ }
3
Lp c s v lp nhn
Lp nhn k tha t lp c s. Mt lp khng c php nhn t hai lp tr ln. Khc vi C++, tnh cht k tha trong C# lun l ton cc. Lp System.Object l lp gc ca tt c cc lp.
class Token{ public Token(string name){ } } } }
4
Gi phng thc khi to ca lp c s Mt phng thc khi to lp nhn s phi gi phng thc khi to lp c s. Dng t kha base gi phng thc khi to ca lp c s.
class IdentifierToken:Token{ public IdentifierToken(string name):base(name){ } }
gi n Token(name)
Nu bn khng gi phng thc khi to ca lp c s mt cch r rng trong mt phng thc khi to ca lp nhn th trnh bin dch s t ng chn mt li gi phng thc khi to mc nh ca lp c s
class Token: System.Object{ public Token(string name):base(){ } }
6
on m trn hot ng bnh thng v lp System.Object c phng thc khi to mc nh ton cc. Trng hp sau, trnh bin dch s bo li:
class IdentifierToken:Token{ public IdentifierToken(string name){ // bo li } }
Thng ip xut hin bo rng vic nh ngha Name trong IdentifierToken n phng thc Name trong Token
Khuyn ngh: trnh t tn ng . Nu mun 2 phng thc c cng ch k, bn dng t kha new:
class Token{ public string Name(){} } } class IdentifierToken:Token{ new public string Name(){}
Xem v d sau:
static void Method(Token t){ Console.WriteLine(t.Name()); } static void Main(){ IdentifierToken variable = new IdentifierToken(variable); Method(variable); }
Hm Main khi bo 1 i tng IdentifierToken v truyn n nh i s cho phng thc Method. N thc hin IdentifierToken.Name() ? Thc cht n thc hin Token.Name().
10
T kha virtual ch ra rng, y l s ci t th nht ca 1 phng thc tn l Name(). Lp nhn s dng t kha override khai bo s ci t khc ca 12 phng thc .
Quy tc khi khai bo phng thc a hnh dng t kha virtual v override:
Khng c php khai bo phng thc cc b vi 2 t kha ny. Hai phng thc ny phi y ht nhau.
13
Ch c th ghi 1 phng thc o. Nu phng thc ca lp c s khng phi l o m bn vn c ghi n th s nhn c li bin dch. Nu lp nhn khng khai bo phng thc ny bng cch dng t override th n s khng ghi phng thc ca lp c s (gy ra cnh bo bin dch dng t kha new). Phng thc ghi hon ton l o v n c th b ghi bi con chu xa hn.
14
Kt qu ca virtual/override
15
Truy cp c bo v
Cc t kha public v private to ra 2 kh nng truy cp:
Cc thnh phn ton cc ca 1 lp c th truy cp ti mi th. Cc thnh phn cc b khng th truy cp ti mi th (tr bn thn lp ).
K tha l 1 trong nhng cch kt ni cc lp li vi nhau, c bit gia lp nhn v lp c s ca n. T kha protected l 1 s phn nh mi quan h gia lp nhn-lp c s
16
Truy cp c bo v
Lp nhn c th truy cp mt thnh phn ca lp c s c bo v (bn trong lp nhn, 1 thnh phn lp c s c bo v c hiu lc l ton cc). Nu lp ny khng phi l mt lp nhn th n khng th truy cp ti thnh phn lp c bo v (bn trong lp khng phi l lp nhn, mt thnh phn lp c bo v c hiu lc l cc b).
17
Giao tip(Interface)
Sc mnh thc s ca k tha xut pht t mt giao tip. Giao tip cho php tch ri hon ton tn ca 1 phng thc vi ci t phng thc y. C php:
interface Itoken{ string Name(); }
Nhng hn ch
Giao tip khng bao gi cha ng s ci t. Khng th to cc th hin ca 1 giao tip. Khng c php c bt c trng (thuc tnh) no trong 1 giao din (ngay c khi n l tnh). Khng c phng thc khi to trong giao tip. Khng c phng thc hy trong giao tip.
19
Nhng hn ch
Khng th tng hp bt k kiu no (lit k, cu trc, lp, giao tip) bn trong 1 giao tip. Khng c php k tha mt giao tip t 1 cu trc hay 1 lp. Cu trc v lp cha s ci t, nu giao tip k tha t chng th n s k tha s ci t.
20
21
Lu
Khi ci t 1 giao tip, phi m bo rng cc phng thc ph hp vi phng thc giao tip tng ng:
Phng thc phi c khai bo l ton cc v phng thc ca giao tip l ton cc. Kiu tr v phi ph hp Tn phi chnh xc. Tham s cng phi chnh xc (bao gm t kha ref v out, khng c params)
22
Lu :
Nu bn mun ghi s ci t 1 phng thc lp trong 1 lp nhn xa hn:
class Token:IToken{ public virtual string Name(){ } } class IdentifierToken:Token{ public override string Name(){ } }
23
Lp tru tng(abstract)
Mt giao tip c th c ci t bi nhiu lp hay cu trc. Quan st v d sau:
class IdentifierToken:IToken{ public IdentifierToken(string name){ this.name = name; } public virtual string Name(){ return name;} private string name; } class StringLiteralToken:IToken{ public StringLiteralToken(string name){this.name = name; } public virtual string Name(){return name;} private string name; }
25
Lp tru tng(abstract)
Lp tru tng(abstract)
Vn : lp DefaultTokenImpl c th to ra i tng ca n. iu ny khng thc s c ngha lm v ta ch mun lp ny l 1 s ci t mc nh tng qut. Mc ch duy nht ca n l c cho k tha bin n thnh lp tru tng bng cch dng t kha abstract. V d:
abstract class DefaultTokenImpl{ public DefaultTokenImpl(string name){ this.name = name; } public virtual string Name(){ return name; } private string name; }
27
28
Phng thc tru tng abstract class DefaultTokenImpl:IToken{ public abstract int Line(); public string Name(){return name;} protected DefaultTokenImpl(string name){ this.name = name; } private string name; } class LiteralToken: DefaultTokenImpl{ public override int Line(){} }
30
Lp c nim phong
Dng t kha sealed ngn chn 1 lp tr thnh lp c s. V d:
sealed class LiteralToken:DefaultToken, IToken{ }
Nu c bt k lp no khai bo LiteralToken l lp c s th trnh bin dch s bo li. Mt lp b nim phong th khng th khai bo phng thc o.
31
32
T m l i ,
Mt giao din gii thiu tn ca 1 phng thc. Mt phng thc o l s ci t u tin ca 1 phng thc. Mt phng thc ghi l 1 s ci t khc ca 1 phng thc. Mt phng thc c nim phong l s ci t cui cng ca 1 phng thc.
33
Nu mt giao tip, cu trc, lp k tha t hn 2 giao tip th cc giao tip ny c vit cch nhau bi du phy. Nu 1 lp cng c 1 lp c s th cc giao tip ny c lit k sau lp c s . V d:
class IdentifierToken:DefaultTokenImpl, IToken, IVisitable { }
35
Phng thc EII c th gii quyt xung t khi c 2 phng thc t hai giao tip. V d: gi s 2 giao tip IToken v IVisitable u c phng thc ToString:
37
Lm vic vi a giao tip: Ci t interface IToken{ ...... string ToString(); } interface IVisitable{ ...... string ToString(); } class IdentifierToken:IToken, IVisitable{ ...... public string ToString(){......} }
38
39
Chng 13
S thu gom rc
Garbage Collection Ngn ng C# phn bit gi tr v i tng. So snh gi tr v i tng:
Mt gi tr l mt th hin ca kiu gi tr, mt i tng l 1 th hin ca kiu tham chiu. V d:
int i = 42; // I l mt gi tr TextBox box = ne TextBox();// box tham chiu ti 1 i tng
2
Tham chiu n cc thuc tnh ca i tng ny bng cch dng ton t du chm(.):
message.Text = Bonjour Vietnam;
Ch :
Trnh bin dch s t ng chuyn mt phng thc hy thnh phng thc ghi ca phng thc Object.Finalize
class Tally{ ~Tally(){......} // li bin dch } class Tally{ protected override void Finalize(){ try{......} finally{ base.Finalize();} } }
10
Hn ch
Bn khng bit trt t i tng s b hy. Cc i tng khng nht thit phi b hy theo th t ngc li nh khi chng c to. Bn khng bit khi no th b thu gom rc quyt nh hy i tng. Mt i tng cha chc b hy ngay khi n v ngha. Vic hy tiu tn thi gian, b thu gom rc ch hy i tng khi n thy cn thit (khi vng Heap b cn kit) hay khi bn gi phng thc System.GC.Collector
11
Li khuyn:
Vit phng thc hy cho lp lm cho m lnh phc tp v chng trnh chy chm hn (do b thu gom rc phi thc hin bc 3 v bc 5 slide trc) trnh dng phng thc hy tr khi bn thc s cn n n. Nu vit phng thc hy, phi vit cn thn.
13
X l ngun ti nguyn
Ti nguyn khan him cn c gii phng v gii phng cng sm cng tt. Nu mt lp c mt phng thc disposal th bn c th gi n v c th iu khin ngun ti nguyn b gii phng.
14
Cu lnh using
C php:
using(<kiu><bin>=<khi to>)cc cu lnh c nhng { <kiu><bin>=<khi to>; try{ //cc cu lnh c nhng } finally{ if(<bin>!= null){ ((IDisposable)<bin>).Disposal(); } } }
16
Cu lnh using
S tng ng trn y c ngha l, bin khai bo trong cu lnh using phi l mt kiu thc thi giao din IDisposal (trong khng gian tn System, cha duy nht phng thc Dispose).
namespace System{ interface IDisposable{ void Dispose(); } }
17
V d s dng using
18
V d s dng using
S dng using:
private void openFileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e) { string fullPathname = openFileDialog.FileName; FileInfo src = new FileInfo(fullPathname); filename.Text = src.Name; source.Text = ""; using (TextReader reader = new StreamReader(fullPathname)) { string line; while ((line = reader.ReadLine()) != null) { source.Text += line + "\n"; } } } // reader.Close();
19
Chng 14
Gii quyt vn
Tn ti Nu dng cc phng thc th phi vit m lnh di hn l s dng cc trng. V d: tng gi tr ta X ln 10:
int x = topLeft.GetX(); topLeft.SetX(x+10);
Tuy nhin, nu s dng trng th s ph v tnh ng ca n. Liu c cch no kt hp: gi li tnh ng trong khi vn cho php c php ging nh trng ? 4
B ly gi tr get
S dng thuc tnh trong ng cnh c, trnh bin dch t ng chuyn i m ging nh trng ca bn thnh li gi ti b ly gi tr ca thuc tnh:
int x = topLeft.X;
B thit lp gi tr set
S dng thuc tnh trong ng cnh ghi, trnh bin dch t ng chuyn i m ging nh trng ca bn thnh li gi ti b t gi tr ca thuc tnh:
topLeft.X = 40;
Cc thuc tnh ch c
Bn c php khai bo mt thuc tnh ch cha mt b ly gi tr get. Khi , bn ch c th dng n trong ng cnh c.
struct ScreenPosition{ ...... public int X{ get{ return x; } } ...... private int x,y; }
10
Khng th dng thuc tnh nh mt i s ref hay out (nhng trng th c th)
Method(ref topLeft.X); // li
Khng th khai bo mt thuc tnh c kiu public void X{ get{...} set{...} } // li void Khng th khai bo mt thuc tnh khng c tham s
public X{ get{...} set{...} } // li
T kha virtual khng hp l trong cu trc v khng th nhn cu trc dn xut t cu trc.
16
Ci t thuc tnh giao tip C th chn ci t thuc tnh giao tip mt cch tng minh
struct ScreenPosition: IScreenPosition{ ...... int IScreenPosition.X{ get{ return x; } set{ x = rangeCheckedX(value); } } int IScreenPosition.Y{ get{ return y; } set{ y = rangeCheckedY(value); } } ...... private int x,y; }
17
B ch mc
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 15
Khi nim b nh ch mc
B nh ch mc l 1 mng thng minh ging nh thuc tnh l 1 trng thng minh. C php dng cho b ch mc ging c php dng cho mng. Chng ta s xem xt vn khi khng s dng v c s dng b ch mc.
2
xc lp bit ch mc th 6 thnh true: bits[6] = true; Chng ta khng th dng du ngoc vung trn kiu int. To ra 1 kiu mi ging nh mng bool, gi l IntBits.
5
Lu :
Mt b ch mc khng phi l mt phng thc. Kiu ca b ch mc l bool i s gia du ng/m vung l int Tt c cc b ch mc dng t kha this v tr tn phng thc. Tt c b ch mc cha b ly v b t gi tr ging nh cc thuc tnh.
7
B ly gi tr
bool peek = bits[6]; bool lowBit = bits.this[6]{get{....}}// m gi
B t gi tr
bits[6] = true; bits.this[6]{set{....}}// m gi
c / ghi b ch mc
bits[6] ^= true; bits[6] = bits[6] ^ true;
8
B ch mc ch c
c php khai bo mt b ch mc ch c cha b ly gi tr:
struct IntBits{ ...... public bool this[int index] { get { return (bits & (1<<index))!=0; } } }
9
B ch mc ch ghi
c php khai bo mt b ch mc ch ghi cha b t gi tr:
struct IntBits{ ...... public bool this[int index] { set { if(value) bits != (1<<index); else bits &= ~(1<<index); } } }
10
11
So snh b ch mc v mng
C php b ch mc ging mng. C vi s khc nhau:
B ch mc c th dng subscripts khng l s nguyn, cn mng th phi l s nguyn. Cc b ch mc c th np chng, mng th khng. B ch mc khng th c dng nh cc tham s kiu ref hay out, cc phn t ca mng th c th.
12
B ch mc giao tip
C th khai bo cc b ch mc trong mt giao tip: khai bo t kha get, set khng c phn thn. Bt k lp/cu trc ci t giao tip phi ci t truy xut b ch mc khai bo trong giao tip. V d:
13
B ch mc giao tip
V d:
interface IRawInt{ bool this[int index]{get;set;} } struct RawInt: IRawInt{ ...... public bool this[int index] { get{......} set{......} } }
14
15
16
y nhim hm v s kin
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 16
Nng cp
interface Tickable{ void Tick(); } class Ticker{ public void Attach(Subscriber newSub){subscribers.Add(newSub);} public void Detach(Subscriber newSub){subscribers.Remove(newSub);} private void Notify(){ foreach(Tickable t in subscribers){ t.Tick(); } } ...... private ArrayList subscribers = new ArrayList(); }
Nng cp
class Clock: Tickable{ ...... public void Tick(){......} } class ExampleUse{ static void Main(){ Ticker pulsed = new Ticker(); Clock wall = new Clock(); pulsed.Attach(wall); ....... } }
V d dng y nhim hm
Khai bo 1 y nhim hm
C th khai bo 1 y nhim hm ph hp vi ch k ca phng thc Tick() trn:
delegate void Tick();
V d ny khai bo 1 kiu mi: Tick l tn kiu. C th dng tn kiu khai bo trong 1 trng hay 1 tham s:
void Example(Tick param){......}
Kiu y nhim hm hon ton c nhn t lp System.Delegate. Kiu y nhim hm c th cha phng thc, ton t, thuc tnh nn bn c th truyn chng nh l tham s ti cc phng thc khc.
7
Gi mt y nhim hm
V d trc: void Example(Tick param){......}
Nu param l s int th ta c th s dng gi tr ca n v p dng cc php ton +,-,+=,... Tuy nhin y, param l 1 y nhim hm. Ta dng y nhim hm nh l 1 phng thc, gi y nhim hm bng cc du ngoc:
void Example(Tick param){ param(); }
8
Gi mt y nhim hm
Mt y nhim hm l 1 kiu tham chiu nn n c th l null. Nu param l null trong v d trn th trnh bin dch s a ra thng bo NullReferenceException Phi gi y nhim hm 1 cch chnh xc. Trong v d ny, param c kiu l Tick, v Tick c khai bo nh sau:
delegate void Tick();
9
Gi mt y nhim hm
Vic khai bo ny cho bit khi gi 1 y nhim hm Tick (vd: param), ta khng c php truyn bt k i s no v li gi khng tr v iu g:
void Example(Tick param){ param(42); // li bin dch int result = param(); // li bin dch Console.WriteLine(param()); // li bin dch }
Gi mt y nhim hm
Dng y nhim hm c tham s:
void Example(Tick method){ method(12, 29, 50); }
11
To 1 th hin ca 1 y nhim hm
Dng c php nh vi lp hay cu trc: vit t kha new, theo sau l tn kiu(tn y nhim hm), v theo sau l tn i s trong du ngoc. i s phi l phng thc c ch k ph hp chnh xc vi ch k ca y nhim hm. V d:
class Example{ private void Method(){......} ...... private void Create(){ Tick m = new Tick(this.Method); } }
12
Khai bo 1 s kin
Vit t kha event, theo sau l tn ca kiu (kiu ny phi l 1 kiu y nhim hm) v sau na l tn ca s kin. V d:
delegate void TickHandler(); class Ticker{ public event TickHandler Tick; }
13
Gn 1 y nhim hm vi 1 s kin To 1 th hin y nhim hm (cng kiu nh s kin) v nh km th hin y nhim hm ny ti s kin dng ton t +=. V d:
class Clock{ ...... public void Start(){ ticker.Tick += new TickHandler(this.RefreshTime); } private void RefreshTime(){......} private Ticker ticker = new Ticker(); }
14
Ci t 1 s kin
Dng du ngoc chnh xc nh s kin l 1 phng thc, cung cp i s ph hp kiu. Nh kim tra s kin c l null hay khng. V d:
class Ticker{ public event TickHandler Tick; ...... private void Raise(){ if(Tick != null){ Tick(); } } }
16
Ton t np chng
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 17
Lm vic vi cc ton t
Bn dng cc k hiu ton t chun (vd: +, -) thc thi cc thao tc chun (vd: cng, tr) trn cc kiu (vd: int, double) Cc kiu s c xy dng sn i cng vi cc hnh v c nh ngha trc ca chng cho mi ton t nhng cc kiu nh ngha ngi dng th khng. C# cho php cc kiu nh ngha ngi dng thc thi hnh vi quen thuc.
2
Ton t
Mi k hiu ton t c 1 quyn u tin. Vd: * c quyn cao hn + S kt hp t tri qua phi hay t phi qua tri. Ton t 1 ngi l ton t ch c 1 ton hng,vd: ++ Ton t 2 ngi l ton t c 2 ton hng, vd: *
3
Cc ton t np chng
nh ngha hnh vi ton t ca chnh bn, bn phi np chng 1 ton t c chn. Bn dng c php nh phng thc vi kiu tr v cc tham s nhng tn ca phng thc l t kha operator cng k hiu ton t bn ang khai bo. V d: cu trc Hour nh ngha ton t 2 ngi cng 2 th hin ca Hour li:
Cc ton t np chng
struct Hour{ public Hour(int initialValue){ value = initialValue; } public static Hour operator+(Hour lhs, Hour rhs){ return new Hour(lhs.value + rhs.value); } private int value; } Tt c cc ton t l ton cc Ton t l tnh. Cc ton t khng bao gi l a hnh, v vy chng khng th dng o, tru tng, ghi , nim phong. Ton t khng bao gi c 1 tham s n this nh trong C++
6
To cc ton t i xng
void Indirect(Hour a, int b){ Hour sum = a+new Hour(b); } struct Hour{ public Hour(int initialValue){ value = initialValue; } public static Hour operator+(Hour lhs, Hour rhs){ return new Hour(lhs.value + rhs.value); } public static Hour operator+(Hour lhs, int rhs){ return lhs + new Hour(rhs); } public static Hour operator+(int lhs, Hour rhs){ return new Hour(lhs + rhs.value); } private int value; }
7
Tm hiu php gn kt hp
C# khng cho php khai bo bt k ton t gn nh ngha ngi dng. Tuy nhin, mt ton t gn kt hp (vd: +=) lun c thc thi: a+=b lun c thc thi a=a+b.
void Example(Hour a, int b){ a+=a; // tng t a=a+a a+=b; // tng t a=a+b b+=a; //khng hp l }
8
10
S dng ton t i
Nu khai bo phi khai bo != v == theo cp. Quy tc ny khng p dng cho <,>, <=,>=.
struct Hour{ public Hour(int initialValue){......} public static bool operator==(Hour lhs, Hour rhs){ return lhs.value==rhs.value; } public static bool operator!=(Hour lhs, Hour rhs){ return lhs.value!=rhs.value; } private int value; }
11
Cu trc v lp
Vic thc thi ton t tng trong cu trc Hour l chnh xc, nhng nu i Hour thnh lp th khng cn chnh xc na.
12
Ton t chuyn i khng tng minh (implicit) hay tng minh (explicit). Nu ton t chuyn i l tng minh th n yu cu s p kiu tng minh.
14
Windows Forms
Nguyn Hng Phng Khoa CNTT, HBKHN
Chng 18
Gii thiu Mt form n gin l lp k tha t System.Windows.Forms.Form. M ngun cha cc phng thc: Main, Dispose, phng thc khi to,... Phng thc Main l im vo ca ng dng. Phng thc Dispose gii phng cc ti nguyn m form gi.
2
ForeColor
M t Din mo v kiu ng vin form. Mc nh l Sizable Icon xut hin trn thanh tc v Lnh maximize trn trnh n hay thanh tiu c tc dng? Kch thc ln nht ca form. Mc nh (0,0) ch ra rng khng c kch thc ln nht v user c th thay i kch thc ca form i ngu MaximizeBox i ngu vi MaximumBox
4
MinimizeBox MinimumSize
M t Kch thc ca form khi ln u hin th Vn bn xut hin trn thanh tiu Trng thi khi u ca form khi n xut hin ln u G b trnh n h thng khi thanh tiu khi n = False
Opacity
Thay i thuc tnh thi gian chy C th vit m chng trnh thay i ng cc thuc tnh thi gian chy. V d: thay i kch thc form. Thc hin v d BellRingers chng 18.
Chn thuc tnh BackColor, nhn mi tn xung, chn th System, bm chn Windows thit lp mu nn cho tt c thnh phn iu khin th trn form. Chn thuc tnh a hp Font, thit lp Size ca font l 12, thuc tnh Bold l True. Thay i thuc tnh a hp Size: thuc tnh Width l 600, Height l 450
9
11
Thuc tnh
Text Location (Name) Location Size Text Text Location (Name) Location Size Text
Gi tr
First Name 10, 20 firstName 120, 20 170, 26 trng Last Name 300, 20 lastName 400, 20 170, 26 trng
12
label2 textBox2
iu khin
label3 comboBox1
Thuc tnh
Text Location (Name) DropDownStyle Location Size (Name) Location Size Text CheckAlign Text Location Size
Gi tr
Tower 10, 72 tower DropDownList 120, 72 260, 28 captain 400, 72 100, 26 Captain MiddleLeft Member Since 10, 128 120, 23
checkBox1
label4
13
iu khin
DateTimePicker
Thuc tnh
(Name) Location Size (Name) Location Size Text (Name) Location Size Text (Name) Location Size Text
Gi tr
memberSince 140, 128 200, 26 experience 10, 184 260, 160 Experience novice 16, 32 220, 24 Up to 1 year intermediate 16, 64 220, 24 1 to 4 years
groupBox1
radioButton1
radioButton2
14
iu khin
radioButton3
Thuc tnh
(Name) Location Size Text (Name) Location Size Text (Name) Location Size Sorted
Gi tr
experienced 16, 96 220, 24 5 to 9 years accomplished 16, 128 220, 24 10 or more years methods 300, 192 270, 160 True
15
radioButton4
checkedListBox1
iu khin
button1
Thuc tnh
(Name) Location Size Text (Name) Location Size Text
Gi tr
add 190, 368 75, 40 Add clear 335, 368 75, 40 Clear
button2
16
Tr chut n Add, chn Add Method Nhp Reset vo hp Method name, bm Finish Trong ca s son tho, thm dng m:
firstName.Text = ; lastName.Text = ;
a d liu vo ComboBox:
thm cc pht biu sau:
tower.Items.Clear(); tower.Items.Add(Great Shevington); tower.Items.Add(Little Mudford); tower.Items.Add(Upper Gumtree); tower.Items.Add(Downley Hatch);
18
Thit lp ngy hin thi: khi to thnh phn DateTimePicker memberSince ti ngy hin thi
memberSince.Value = DateTime.Today;
Khi to nhm nt radio: sc mnh ca radio tng ln khi bn t chng vo trong GroupBox. Thm dng sau:
novice.Checked = true;
19
t Reset() ti y
21
private void addClick(object sender, System.EventArgs e) { string details; details = "Member name " + firstName.Text + " " + lastName.Text + " from the tower at " + tower.Text; MessageBox.Show(details, "Member Information"); 23 }
Trnh n
Nguyn Hng Phng Khoa CNTT, HBKHN
Chng 19
To v x l cc s kin trnh n
C 2 cch to trnh n:
Hng ha: dng mi trng IDE Vit m lnh: to i tng MainMenu, sau thm i tng MenuItem
Thc hnh to trnh n theo hng tip cn ha cho ng dng Middleshire Bell Ringers Association trong chng 18.
3
To trnh n File M d n BellRingers Hin th MemberForm trong ca s Design View. Ko th thnh phn MainMenu t Toolbox ln form. Bm chn nhn Type Here, nhp vo &File ri nhn Enter. Tip tc thm &New, &Open, &Save Member, du gch ngang, &Print, du gch ngang, E&xit
4
To trnh n File
Bm chn thnh phn iu khin mainMenu1 bn di form. trong ca s Properties, thay i tn thnh mainMenu. Bm chut phi ln mc trnh n File trn thanh trnh n ca form, chn Edit Names.
Thit lp cc thuc tnh ca mc trnh n Bm chn mc menuItem1, nhp fileItem, nhn Enter. i tn cc mc trnh n cn li: Mc [menuItem2] [menuItem3] [menuItem4] [menuItem6] [menuItem8] Tn mi newItem openItem saveItem printItem exitItem
Khi hon tt, bm phi chut ln trnh n filemenu, b chn dng lnh Edit Names 7
Nu mun mc no khng th chn, thit lp thuc tnh Enabled trong ca s Properties l False. V d menuPrint khng th chn nu cha c d liu.
M t
Tn ca mc trnh n Cc mc hnh ng nh hp kim v hin ra du kim khi c chn. Gi tr True/False Mc trnh n l mc nh hay khng Mc trnh n r hay m i Lin kt vi thuc tnh Checked Phm tt Hin th phm tt nu l True Dng vn bn hin th Mt mc c hin th hay khng
9
Cc s kin trnh n
C 5 s kin trnh n khc nhau khi user truy xut ti mt mc trnh n: S kin
Click DrawItem
M t
Xy ra khi user bm ln mc trnh n Xy ra khi mc trnh n c v li
MeasureItem Xy ra khi trnh thc thi ang quyt nh cao ca mc trnh n. Popup Select Xy ra khi trnh n c hin th Xy ra khi user chn mc trnh n
10
X l cc s kin mc trnh n
S kin bm chn mc New trn File:
Bm chn File v chn New Trong ca s Properties, nhn Events, chn s kin Click, nhp newClick, n Enter Mt phng thc s kin mi ra i, nhp vo on m dng lnh: Reset();
12
Trnh n Popup
To trnh n Popup:
To 1 trnh n Popup gn vo 2 textbox firstName v lastName cho php user xa cc thnh phn ny. To 1 trnh n Popup gn vo form v cha cc lnh lu thng tin ca thnh vin hin thi v xa form.
13
To trnh n Popup
Trong ca s Design View ang hin th MemberForm, ko th iu khin ContextMenu vo form Chn thnh phn iu khin contextMenu1, i tn (Name) thnh textBoxMenu Bm chn vn bn Context Menu, nhn Type Here xut hin. Bm chn Type Here, nhp vo Clear Text, n Enter. Chn thnh phn iu khin Clear Text, nhp textBoxClearItem trong hp Name ca ca s Properties ri nhn Enter.
14
To trnh n Popup
Bm chn hp vn bn firstName, i thuc tnh ContextMenu thnh textBoxMenu. Tng t vi hp vn bn lastName. Nhp phi chut ln thnh phn textBoxMenu cui form, chn Edit Menu. Mt trnh n xut hin bn di nhn Context Menu T trnh n, chn Clear Text Trong ca s Properties, chn Events, nhp textBoxClearClick vo hp vn bn s kin Click ri nhn Enter
15
To trnh n Popup
Thm pht biu sau vo phng thc s kin:
private void textBoxClearClick(object sender, System.EventArgs e) { if (textBoxMenu.SourceControl.Equals(firstName)) { firstName.Clear(); } else { lastName.Clear(); } Nu thuc tnh SourceControl ca }
trnh n Popup tham chiu ti hp vn bn firstName th firstName.Clear() s lm rng n
16
17
18
Chng 20
Hiu lc d liu
Thuc tnh Cause Validation: u c cc iu khin v form. Mc nh l True. Nu l true, th khi iu khin nhn focus v iu khin trc mt focus s c hiu lc. Nu hiu lc ny tht bi th focus s tr li iu khin trc. Nhn xt: thuc tnh Cause Validation khng p dng i vi bn thn iu khin nhng c tc dng vi tt c cc iu khin khc trn form
2
Cc s kin hiu lc
hiu lc d liu trong mt iu khin, bn phi s dng 2 s kin: Validating v Validated. S kin Validating xut hin khi focus ra khi 1 iu khin v c nhy qua 1 iu khin c thuc tnh CauseValidation l true. Dng s kin ny kim tra gi tr ca 1 iu khin ang mt focus. S kin Validated xut hin sau s kin Validating(nu n khng b hy b) nhng trc khi iu khin mt focus. Bn khng th hy b s kin ny.
3
Thc hnh
Cc bc
M d n CustomerDetails trong chng 20. Nhp p vo CustomerForm.cs hin th form trong vng thit k. Nhp cc gi tr tc v vo mc ITems ca hp comboBox Title. Quy tc: Tc v l Mr th gii tnh l Male, ngc li l Female.
5
Chy ng dng
Chy ng dng
Chn Title l Mrs, Gender vn l Male, ta s nhn c thng bo li:
10
Chy ng dng
Nhp OK trn hp thng bo, sau c nhp vo nt radio Female, bn s tht bi v thuc tnh CauseValidation ca nhm Gender lm cho s kin Validating thc thi.
11
12
Chy ng dng
16
S dng c s d liu
Nguyn Hng Phng Khoa CNTT, HBKHN
1
Chng 24
S dng ADO.NET ADO (ActiveX Data Object) pht trin ln thnh ADO.NET Trong ADO.NET, khi nim RecordSet khng cn tn ti, thay vo c cc lp DataAdapter v DataSet Trong phn u ny, chng ta s s dng CSDL Northwind c sn trong SQL Server 2000 minh ha.
2
CSDL Northwind
Bng Orders
Security - Login
10
Trong ca s Server Explorer, m rng DataConnections, m rng Tables, mt danh sch cc bng trong CSDL xut hin. M rng bng Products, xut hin cc ct ca n.
11
Nhp chut phi ln bng Products v chn Retrieve Data From Table
12
Trong ca s Solution Explorer, nhp phi chut ln Solution ListProduct->Add New Project
13
14
15
16
bn di ca s Properties, c ba nhn:
17
18
Th DataGrid vo form, thit lp thuc tnh Dock l Fill Thit lp Data Source l dataSet11.Products G cu lnh sau di ch thch TODO trong phng thc khi dng:
sqlDataAdapter1.Fill(dataSet11);
Chy th ng dng
19
20
using System; using System.Data.SqlClient; namespace ReportOrders { /// <summary> /// Summary description for Class1. /// </summary> class Report { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here //
21
M lnh
try { SqlConnection();
dataConnection.ConnectionString = "User ID=phuongnh;Password=123456;Initial Catalog=Northwind;Data Source=IT-6B9EEA88D491"; dataConnection.Open(); Console.WriteLine("ID 6 ki tu"); string c=Console.ReadLine(); int cid = Int32.Parse(c); SqlCommand dataCommand = new SqlCommand();
22
M lnh
dataConnection; dataCommand.Connection = dataCommand.CommandText =
"Select OrderID,OrderDate,ShippedDate,ShipName,ShipAddress,ShipCi ty,ShipCountry "; dataCommand.CommandText += "From Orders Where OrderID='"+ cid +"'"; Console.WriteLine(dataCommand.CommandText); SqlDataReader dataReader = dataCommand.ExecuteReader(); while(dataReader.Read()) {
23
int orderid = dataReader.GetInt32(0); DateTime orderDate = dataReader.GetDateTime(1); DateTime shipDate = dataReader.GetDateTime(2); string shipName = dataReader.GetString(3); string shipAddress = dataReader.GetString(4); string shipCity = dataReader.GetString(5); string shipCountry = dataReader.GetString(6); Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}",orderid,orderDate,shipDate,shipName,shipAddress,shipCit y,shipCountry); } // ket thuc while dataReader.Close(); dataConnection.Close(); } catch(Exception e) { Console.WriteLine("Loi "+e.Message+e.ToString()); } } } }
24
Chy th ng dng
25
Kt ni vi Access
To 1 file access db1.mdb c 1 bng tn l tb1 nm trn C
26
Bng tb1:
27
on m chng trnh:
using System; using System.Data.OleDb; namespace OleDbTest { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here //
28
try
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\db1.mdb"); OleDbCommand aCommand = new OleDbCommand("select * from tb1", aConnection); aConnection.Open(); OleDbDataReader aReader = aCommand.ExecuteReader(); Console.WriteLine("This is the returned data from emp_test table"); while(aReader.Read()) { Console.WriteLine("{0} {1}",aReader.GetInt32(0).ToString(),aReader.GetString(1)); }
29
aReader.Close();
} catch(Exception e) { Console.WriteLine(e.ToString()); }
aConnection.Close();
30
Kt qu
31
32