You are on page 1of 125

Project 2

MC LC
MC LC ......................................................................................................... 1 CHNG 1: KIN TRC CA .NET.............................................................. 3 1.1. Mi trng thc thi ngn ng chung CLR .......................................... 3 1.2. Ngn ng trung gian - IL ....................................................................... 4 1.3. Gii thiu v .Net Framework................................................................ 5 CHNG 2: LP TRNH WINDOWS FORMS............................................... 7 2.1. To mt ng dng Windows form ......................................................... 7 2.2. Lp Control ........................................................................................... 8 2.3. Form ...................................................................................................... 8 2.3.1. Chc nng........................................................................................ 8 2.3.2. Mt s thuc tnh thng dng ........................................................ 8 2.3.3. Mt s s kin thng dng........................................................... 10 2.4. Mt s control...................................................................................... 16 2.4.1. Textbox.......................................................................................... 16 2.4.2. RichTextBox.................................................................................. 25 2.4.3. DataGridView................................................................................ 32 2.4.4. ListView ........................................................................................ 56 2.5. User Control ........................................................................................ 78 2.6. Thao tc vi file XML ......................................................................... 78 2.7. Thao tc vi Registry........................................................................... 83 CHNG 3: LP TRNH C S D LIU .................................................. 86 3.1. Gii thiu ADO.NET ........................................................................... 86 3.2. Cc m hnh thao tc vi CSDL........................................................... 87
-1-

Project 2

3.3. Kt ni n ngun d liu bng i tng Connection ........................ 88 3.4. Thc thi cu lnh SQL bng i tng Command ............................... 93 3.5. Truy vn v nhn v d liu vi DataReader ..................................... 101 3.6. Cp nht v truy vn d liu vi i tng DataAdapter ................... 104 3.7. M hnh DataSet ................................................................................ 107 3.8. i tng Parameter .......................................................................... 109 3.9. Rng buc d liu vi cc iu khin................................................. 113 3.10. S dng DataView trong sp xp v tm kim d liu..................... 113 3.11. LINQ .............................................................................................. 113 CHNG 4: CRYSTAL REPORT ............................................................... 114 4.1. Thit k bo co vi Crystal Report ................................................... 114 4.2. Np v hin th Report trong chng trnh ......................................... 122 4.3. Thit k Report ng ......................................................................... 123

-2-

Project 2

CHNG 1: KIN TRC CA .NET


1.1. Mi trng thc thi ngn ng chung CLR Nh cp th CLR thc hin qun l b nh, qun l thc thi tiu trnh, thc thi m ngun, xc nhn m ngun an ton, bin bch v cc dch v h thng khc. Nhng c tnh trn l nn tng c bn cho nhng m ngun c qun l chy trn CLR. Do ch trng n bo mt, nhng thnh phn c qun l c cp nhng mc quyn hn khc nhau, ph thuc vo nhiu yu t nguyn thy ca chng nh: lin quan n Internet, h thng mng trong nh my, hay mt my tnh cc b. iu ny c ngha rng, mt thnh phn c qun l c th c hay khng c quyn thc hin mt thao tc truy cp tp tin, thao tc truy cp registry, hay cc chc nng nhy cm khc. CLR thc y vic m ngun thc hin vic truy cp c bo mt. V d, ngi s dng gii hn rng vic thc thi nhng vo trong mt trang web c th chy c hot hnh trn mn hnh hay ht mt bn nhc, nhng khng th truy cp c d liu ring t, tp tin h thng, hay truy cp mng. Do , c tnh bo mt ca CLR cho php nhng phn mm ng gi trn Inernet c nhiu c tnh m khng nh hng n vic bo mt h thng. CLR cn thc y cho m ngun c thc thi mnh m hn bng vic thc thi m ngun chnh xc v s xc nhn m ngun. Nn tng ca vic thc hin ny l Common Type System (CTS). CTS m bo rng nhng m ngun c qun l th c t m t (self- describing). S khc nhau gia Microsoft v cc trnh bin dch ngn ng ca hng th ba l vic to ra cc m ngun c qun l c th thch hp vi CTS. iu ny th m ngun c qun l c th s dng nhng kiu c qun l khc v nhng th hin, trong khi thc y nghim ngt vic s dng kiu d liu chnh xc v an ton. Thm vo , mi trng c qun l ca runtime s thc hin vic t ng x l layout ca i tng v qun l nhng tham chiu n i tng, gii phng chng khi chng khng cn c s dng na. Vic qun l b nh
-3-

Project 2

t ng ny cn gii quyt hai li chung ca ng dng: thiu b nh v tham chiu b nh khng hp l. Trong khi runtime c thit k cho nhng phn mm ca tng lai, n cng h tr cho phn mm ngy nay v trc y. Kh nng hot ng qua li gia m ngun c qun l v m ngun khng c qun l cho php ngi pht trin tip tc s dng nhng thnh phn cn thit ca COM v DLL. Rutime c thit k ci tin hiu sut thc hin. Mc d CLR cung cp nhiu cc tiu chun dch v runtime, nhng m ngun c qun l khng bao gi c dch. C mt c tnh gi l Just-in-Time (JIT) bin dch tt c nhng m ngun c qun l vo trong ngn ng my ca h thng vo lc m n c thc thi. Khi , trnh qun l b nh xa b nhng phn mnh b nh nu c th c v gia tng tham chiu b nh cc b, v kt qu gia tng hiu qu thc thi. 1.2. Ngn ng trung gian - IL Nh chng ta bit, Intermediate Language hot ng nh l bn cht ca .NET Framework. L lp trnh vin C#, chng ta nn bit rng m C# s lun c dch sang Intermediate Language trc khi n c thc thi (tht vy, trnh bin dch C# ch dch sang m c qun). Chng ta hy cng khm ph cc tnh nng chnh ca IL, bt k ngn ng no hng .NET cng s h tr cc c tnh chnh ca IL. Sau y l nhng c tnh chnh ca Intermediate Language: Hng i tng v dng interfaces S tch bit gia kiu gi tr v kiu tham chiu nh kiu mnh Qun li thng qua cc ngoi l S dng cc thuc tnh

-4-

Project 2

1.3.

Gii thiu v .Net Framework

.NET Framework l mt platform mi lm n gin vic pht trin ng dng trong mi trng phn tn ca Internet. .NET Framework c thit k y p ng theo quan im sau: cung cp mt mi trng lp trnh hng i tng vng chc, trong m ngun i tng c lu tr v thc thi mt cch cc b. Thc thi cc b nhng c phn tn trn Internet, hoc thc thi t xa. cung cp mt mi trng thc thi m ngun m ti thiu c vic ng gi phn mm v s tranh chp v phin bn. cung cp mt mi trng thc thi m ngun m m bo vic thc thi an ton m ngun, bao gm c vic m ngun c to bi hng th ba hay bt c hng no m tun th theo kin trc .NET. cung cp mt mi trng thc thi m ngun m loi b c nhng li thc hin cc script hay mi trng thng dch. lm cho nhng ngi pht trin c kinh nghim vng chc c th nm vng nhiu kiu ng dng khc nhau. Nh l t nhng ng dng trn nn Windows n nhng ng dng da trn web.

-5-

Project 2

xy dng tt c cc thng tin da trin tiu chun cng nghip m bo rng m ngun trn .NET c th tch hp vi bt c m ngun khc.

-6-

Project 2

CHNG 2: LP TRNH WINDOWS FORMS


2.1. To mt ng dng Windows form Bc 1: Khi ng VS2008 v chn Fille New Project

Bc 2: Chn ng dng dng Windows Forms Application, chn ni lu tr Project (xem hnh) nhn OK.

-7-

Project 2

2.2. 2.3.

Lp Control Form

2.3.1. Chc nng Form (hay cn gi iu khin Form) dng cha cc iu khin khc (Buttons, Label) 2.3.2. Mt s thuc tnh thng dng
Tn Name ngha Tn ca Form. Trong mt Project tn ca cc Form phi khc nhau. AcceptButton Gi tr m thuc tnh ny nhn l tn ca mt Button trn Form (Nu Form c cha button). Khi nu bn nhn phm Enter th s kin Click ca Button m bn chn c thc thi m khng cn nhn chut vo Button . Autosize Nhn mt trong hai gi tr True hay False - True: Khng cho php thay i kch thc Form m che i cc iu khin khc cha trn Form - False: Ngc li AutoSizeMode Cho php thay i kch thc ca Form hay khng? (Khi di chuyn chut vo cc mp ca Form m hin nn biu tng l cho php). V nhn mt trong hai gi tr BackColor BackGroundImage GrowOnly: Cho php v GrowAndShrink: Khng cho php

Chn mu nn cho Form Chn nh lm nn cho Form


-8-

Project 2

CancelButton

Gi tr m thuc tnh ny nhn l tn ca mt Button trn Form (Nu Form c cha button). Khi nu bn nhn phm ESC th s kin Click ca Button m bn chn c thc thi m khng cn nhn chut vo Button (tng t nh thuc tnh AcceptButton ).

ControlBox

Nhn mt trong hai gi tr True hay False True: Cho php cc cc nt: MaximizeBox, MinimizeBox, Close trn Titlebar xut hin False: Khng Cho php cc cc nt: MaximizeBox, MinimizeBox, Close trn Titlebar xut hin (Khi cc thuc tnh MaximizeBox, MinimizeBox ca Form cng mt i)

Font

Chn kiu Font ch cho Form (Khi tt c cc iu khin c thm vo Form s c thuc tnh Font ging nh thuc tnh Font ca Form)

ForeColor

Tng t nh thuc tnh Font nhng p dng i vi mu ch

FormBorderStyle HelpButton

Chn Style cho Form (C 7 la chn khc nhau). Nhn mt trong hai gi tr True hay False. True: Cho php xut hin Buton c du ? trn Titlebar (Vi iu kin: hai thuc tnh

MaximizeBox, MaximizeBox False) False: Ngc li

phi t gi tr l

Thuc tnh ny s hay i km vi iu khin HelpProvider v sau Icon Chn mt Icon (c ui m rng l .ico) trn my tnh ca bn thay cho Icon mc nh ca Form m VS to ra
-9-

Project 2

KeyPreview

Nhn mt trong hai gi tr True hay False True: Cho php cc s kin v bn phm ca Form (KeyUp, KeyDown, KeyPress ca Form) c hiu lc. False: Ngc li

MaximizeBox

Nhn mt trong hai gi tr True hay False True: Cho php nt MaximizeBox trn Titlebar c hiu lc False: Ngc li

MaximizeBox Opacity ShowIcon

Tng t nh thuc tnh MaximizeBox trong sut ca Form Nhn mt trong hai gi tr True hay False True: Cho php xut hin Icon ca Form False: Khng cho php xut hin Icon ca Form

ShowInTaskbar

Nhn mt trong hai gi tr True hay False True: Cho php hin Form di khay Taskbar False: Ngc li

StartPosition

V tr hin th ca Form so vi mn hnh h thng hay Form cha (5 la chn khc nhau)

Text WindowState

Gi tr Text ca Form Trng thi hin th ca Form khi chy (Khi bn nhn vo nt Run ca VS) (C 3 la chn khc nhau: n di khay Taskbar, m rng ht mn hnh).

2.3.3. Mt s s kin thng dng


Tn ngha

- 10 -

Project 2

AutoSizeChanged

Xy ra khi thuc tnh Autosize ca Form chuyn t True False hay ngc li l False True.

BackColorChanged Click

Xy ra khi thuc tnh BackColor ca Form thay i Xy ra khi ngi dng Click chut vo vng lm vic thuc Form

ControlAdded ControlRemoved CursorChanged DoubleClick

Xy ra khi mt iu khin c Add vo Form Xy ra khi mt iu khin b xa khi Form Xy ra khi thuc tnh Cursor ca Form thay i Xy ra khi ngi dng DoubleClick vo vng lm vic ca Form

FontChanged ForeColorChanged

Xy ra khi thuc tnh Font ca Form c s thay i Xy ra khi thuc tnh ForeColor ca Form c s thay i

FormClosed

Xy ra khi Form ng (Nhn vo nt X mu trn Titlebar)

FormClosing

Xy ra khi Form ang ng (2 s kin FormClosed v FormClosing thng dng trong lp trnh CSDL: khi xy ra s kin ny th ng kt ni CSDL)

KeyDown

Xy ra khi ngi dng nhn mt phm hay mt t hp phm (ty thuc vo x l ca chng ta)

KeyPress KeyUp MouseClick

Xy ra khi ngi dng nhn mt phm Xy ra khi ngi dng nh mt phm. Xy ra khi ngi dng nhn chut (mt trong 3 la chn: Tri, gia, phi)

- 11 -

Project 2

MouseDoubleClick

Xy ra khi ngi dng DoubleClick chut vo mt vng lm vic ca Form(mt trong 3 la chn: Tri, gia, phi)

MouseDown MouseHover

Xy ra khi ngi dng nhn chut Xy ra khi ngi dng di chuyn vo cc vng lm vic Form

MouseLeave

Xy ra khi di chuyn chut ra khi vng lm vic ca Form

MouseMove

Xy ra khi di chuyn chut trn mt vng lm vic thuc Form (nu Form c cha mt iu khin no , khi di chuyn chut trn iu khin ny th khng xy ra s kin MouseMove ca Form).

MouseUp

Xy ra khi ngi dng nh nhn chut (c th l chut tri, chut phi, chut gia - chut cun)

Move

Xy ra khi di chuyn Form (c s thay i v tr ca Form)

StyleChanged

Xy ra khi thuc tnh FormBorderStyle ca Form thay i

TextChanged

Xy ra khi thuc tnh Text ca Form thay i.

2.3.4. Minh ha

- 12 -

Project 2

2.3.4.1. S kin FormClosed //S kin FormClosed - S kin ny c gi khi Form ng private void frmForm_FormClosed(object sender, FormClosedEventArgs e) { MessageBox.Show("S kin FormClosed c gi", "FormClosed",MessageBoxButtons.OK,MessageBoxIcon.Information); }

2.3.4.2. S kin FormClosing //S kin FormClosing xy ra khi Form ang ng private void frmForm_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("Bn c mun ng Form li hay khng?", "FormClosing", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) e.Cancel = false;// ng Form li else e.Cancel = true;//Khng ng Form na }

- 13 -

Project 2

2.3.4.3.

S kin KeyPress

//S kin KeyPress private void frmForm_KeyPress(object sender, KeyPressEventArgs e) { //Nu khng ch r phm no c nhn th khi nhn bt c phm no s kin KeyPress ca Form u xy ra //Ch r phm no c nhn th pht sinh s kin KeyPress lm nh sau if (e.KeyChar = 'a') MessageBox.Show("S kin KeyPress xy ra khi bn nhn phm a"); } //S kin KeyUp tng t nh s kin KeyPress //S kin KeyDown xy ra khi nhn mt phm hay t hp phm

2.3.4.4.

S kin KeyDown private void frmForm_KeyDown(object sender, KeyEventArgs e) { //khi nhn mt phm bt k trn bn phm th s kin KeyPress c gi //ng thi s kin KeyDown cng c gi KeyPress l trng hp ring ca KeyDown //p dng: Nhn mt t hp phm th s kin KeyDown mi c gi //Nh Windows Media: Nhn Ctrl+F di chuyn bi tip theo - 14 -

Project 2

if (e.KeyCode == Keys.F && e.Modifiers == Keys.Control) MessageBox.Show("S kin KeyDown c gi khi bn nhn Ctrl + F"); }

2.3.4.5. S kin MouseClick //S kin MouseClick private void frmForm_MouseClick(object sender, MouseEventArgs e) { //Nu bn khng mun bit ngi dng nhn chut TRI hay PHI hay GIA th khi nhn bt k //Chut no cng xy ra s kin MouseClick ca Form //Cn nu bn mun bt c s kin ngi dng nhn chut TRI, PHI, hay GIA lm th ny if (e.Button == MouseButtons.Left) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut TRI"); else if (e.Button==MouseButtons.Middle) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut GIA"); else if (e.Button==MouseButtons.Right) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut PHI"); } //Cc s kin MouseDoubleClick, MouseDown, MouseUp... X l tng t - 15 -

Project 2

2.4.

Mt s control

2.4.1. Textbox 2.4.1.1. Chc nng iu khin Textbox cho php bn nhp v hin th d liu. 2.4.1.2. Mt s thuc tnh thng dng
Tn AcceptsTab ngha Nhn mt trong hai gi tr True hay False True: Khi nhn phm Tab th con tr (Focus) ch di chuyn bn trong Textbox (Vi iu kin thuc tnh Multiline=True). False: Khi nhn Tab th Focus di chuyn qua li gia cc iu khin trn Form

Thuc tnh ny hay t bng True trong cc ng dng son tho vn bn Anchor AutoCompleteCustomSource AutoCompleteMode AutoComplete Source BackColor BorderStyle ContextMenuStrip t mu nn cho Textbox Chn kiu ng vin cho Textbox Chn Menu ng cnh khi nhn chut phi vo Textbox Dock V tr bm dnh v in y ca Textbox vi Form Font Chn kiu Font ch cho Textbox V tr neo u ca Textbox trn Form Ba thuc tnh ny ngha tng t nh ca thuc tnh ca iu khin Combobox

- 16 -

Project 2

HideSelection

Nhn mt trong hai gi tr True hay False True: Khng cho php cc thuc tnh: SelectionStartc hiu lc. False: Ngc li

MaxLenght

S lng k t ln nht cho php nhp vo Textbox

Multiline

Nhn mt trong hai gi tr True hay False True: Cho php nhp v hin th gi tr ca Textbox trn nhiu dng (ngi dng c th nhn thy ton b gi tr Text ca n) False: Cho php nhp/hin th gi tr ca Textbox trn mt dng

PasswordChar

Hin th gi tr ca Textbox di dng cc k t m bn thay th (k t do ngi dng nhp vo: *, #...)

ReadOnly ScrollBars Cho php hin th thanh trt hay khng? (Vi iu kin thuc tnh Multiline=True mi nhn thy thanh cun) TabIndex Visible CanUndo Cho php Textbox hin th hay khng? Tr li hai gi tr True/False. True: c th Undo li c (nh Word) False: Ngc li SelectedText SelectionStart SelectionLength
- 17 -

Cc thuc tnh SelectionText

Project 2

Ch : Cc iu khin c rt nhiu thuc tnh ging nhau: Anchor, Dock, Font, ForeColor, Enabled, Visible, TabIndexV ngha cc thuc tnh ny l ging nhau vi tt c cc iu khin 2.4.1.3. Mt s phng thc thng dng
Tn AppendText ngha Ni mt chui (string) vo gi tr Text hin c ca Textbox Copy Cut Paste Focus Clear Select SelectAll Undo Chuyn Focus (con tr) vo TextBox Xa ton b Textbox Ly ra mt chui trong Textbox (xem Code) Ly tt c gi tr ca Textbox X l Undo nh Word X l phn ni dung bi en (nh Word)

2.4.1.4. Mt s s kin thng dng


Tn KeyPress ngha Xy ra khi ngi dng nhn phm trn bn phm (tt nhin Textbox phi ang Focus p dng s kin ny x l khng cho php nhp ch vo Textbox) MouseClick Xy ra khi ngi dng Click chut trn iu khin

- 18 -

Project 2

Textbox TextChanged Xy ra khi gi tr Text ca Texbox (hay gi gi tr Textbox) thay i

2.4.1.5. Minh ha

- 19 -

Project 2

2.4.1.5.1. Minh ha thuc tnh Text ca Textbox private void btTextbox_Click(object sender, EventArgs e) { //Trc khi gn thuc tnh text MessageBox.Show("Gi tr textbox trc khi gn: "+ textBox1.Text); //Gn gi tr Text textBox1.Text = "Cho cc bn"; //Sau khi gn MessageBox.Show("Gi tr textbox sau khi gn: " + textBox1.Text); }

2.4.1.5.2. Minh ha thuc tnh SelectedText private void btTextbox_Click(object sender, EventArgs e) { //Thuc tnh SelectedText ly ra mt chui m bn bi en (Chn) //Bn hy bi en mt vi t trong Textbox sau Click vo Button ny s hin th //Message thng bo t bn chn string str = textBox1.SelectedText; MessageBox.Show("T bn va chn (bi en) l: "+str); - 20 -

Project 2

2.4.1.5.3. Minh ha thuc tnh SelectionStart v SelectionLength private void btTextbox_Click(object sender, EventArgs e) { //Thuc tnh ny dng trong tm kim rt nhiu //Thuc tnh SelectionStart: V tr bt u Select //Thuc tnh SelectionLength: Chiu di ca vng la chn //Ch : t thuc tnh HideSelection=False //V d: Tm kim xem gi tr ca Textbox c t no l cho hay khng. Nu c th n t Bi en t string str = "cho"; int i; i = textBox1.Text.LastIndexOf(str); if (i >= 0) { textBox1.SelectionStart = i; textBox1.SelectionLength = str.Length; } } - 21 -

Project 2

2.4.1.5.4. Minh ha thuc tnh CanUndo v phng thc Undo private void btTextbox_Click(object sender, EventArgs e) { //Nu c th Undo (c ngha: Bn phi g vn bn vo Textbox ri sa, xa...) //Mi c th Undo li c if (textBox1.CanUndo) textBox1.Undo(); }

2.4.1.5.5. Minh ha phng thc Select private void btTextbox_Click(object sender, EventArgs e) { //C php chung: txtNoiDung.Select(Start, Length); //Mc ch ly v mt chui t t v tr no v chiu di ca chui dc chn (tt nhin: bi en vng ny). //-> Phng thc ny tng ng vi s dng 2 thuc tnh SelectionStart v SelectionLength //V d: txtNoiDung.Select(10, 5); //<-> 2 cu lnh ny //textBox1.SelectionStart = 10; - 22 -

Project 2

//textBox1.SelectionStart = 5; }

2.4.1.5.6. Minh ha phng thc AppendText private void btTextbox_Click(object sender, EventArgs e) { //Gi tr Textbox trc khi gi phng thc MessageBox.Show("Trc: "+textBox1.Text); //Gi phng thc textBox1.AppendText("Khoa CNTT - UTEHY"); //Gi tr Textbox trc khi gi phng thc MessageBox.Show("Sau: " + textBox1.Text); }

2.4.1.5.7. X l ch cho php Textbox nhp s (s kin KeyPress ca Textbox) Cch 1 private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar >= '0' && e.KeyChar <= '9') e.Handled = false;//Handled: c x l - 23 -

Project 2

else e.Handled = true; }

2.4.1.5.8. X l ch cho php Textbox nhp s (s kin KeyPress ca Textbox) Cch 2 private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) e.Handled = true; //Char.IsDigit(e.KeyChar) --> //kim tra xem phm va nhp vo textbox c phi l k t s hay khng, hm ny tr v kiu bool //Char.IsContro(e.KeyChar) --> //kim tra xem phm va nhp vo textbox c phi l cc k t iu khin //(cc phm mi tn,Delete,Insert,backspace,space bar) hay khng, mc ch dng hm ny l cho php ngi dng xa s trong trng hp nhp sai. } S dng Textbox vit chng trnh son tho vn bn n gin (tham kho Notepad)

- 24 -

Project 2

2.4.2. RichTextBox 2.4.2.1. Chc nng

iu khin RitchTextBox dng lu tr v hin th vn bn theo nhiu nh dng khc nhau (nh dng chun l rtf) 2.4.2.2. Mt s thuc tnh thng dng iu khin RitchTextBox c rt nhiu cc thuc tnh ging Textbox ni ring v cc iu khin khc ni chung. ngha ca cc thuc tnh ny l ging nhau vi cc iu khin. y chng ta xt mt s thuc tnh khc ca RitchTextBox
Tn SelectedText ngha Ly v chui c la chn (chui m chng ta bi en) SelectionStart, SelectionLength Ly v mt chui vi v tr bt u v chiu di, hai thuc tnh ny thng i vi nhau SelectionFont Ly thng tin v Font ca mt chui c la chn (bi en) SelectionColor Ly thng tin v Color ca chui c bi en c la chn CanUndo Tr li hai gi tr True/False. True: c th Undo li c (nh Word) False: Ngc li

CanRedo

Tng t nh thuc tnh CanUndo

- 25 -

Project 2

2.4.2.3. Mt s phng thc thng dng


Tn AppendText Copy Cut Paste Find Focus LoadFile SaveFile Select Tm kim mt xu trong RitchTextBox Chuyn Focus vo RitchTextBox c ni dung mt file vo RitchTextBox Ghi ni dung ca RitchTextBox ra file Ly ra mt chui trong RitchTextBox (tng t TextBox) SelectAll Redo Undo Ly tt c ni dung ca RitchTextBox X l Undo, Redo nh Word ngha Ni mt chui vo RitchTextBox X l phn ni dung bi en (nh Word)

2.4.2.4. Minh ha Gi s c mt Textbox c tn l richTextBox1. Chng ta s minh ha RitchTextbox qua s kin click ca mt Button c tn l btrichTextBox.

- 26 -

Project 2

Vic s dng cc thuc tnh SelectedText, SelectionStart, SelectionLength, CanUndo, CanRedo tng t nh TextBox (Xem li Code phn iu khin TextBox) 2.4.2.4.1. Minh ha thuc tnh SelectionFont private void btRichTextBox_Click(object sender, EventArgs e) { //S dng thuc tnh Font c th ly thng tin v Font ca vng Bi en (khng phi tt c) //Hoc: Thay i Font ca vng bi en //Trc ht ly thng tin v Font //InfoFont bao gm tt c cc thng tin: Style, Tn Font... string InfoFont = richTextBox1.SelectionFont.ToString(); MessageBox.Show(InfoFont); //Ch ly tn Font ca vng Bi en string FontName = richTextBox1.SelectionFont.Name.ToString(); MessageBox.Show("Vng bi en c Font l: " + FontName); //Ch ly Size ca vng Bi en string FontSize = richTextBox1.SelectionFont.Size.ToString(); MessageBox.Show("Vng bi en c Size l: " + FontSize); //................................................... } - 27 -

Project 2

2.4.2.4.2. Chn Font cho vng bi en thng qua thuc tnh SelectionFont (Ch vng bi en) private void btRichTextBox_Click(object sender, EventArgs e) { FontDialog fo = new FontDialog(); //Hin th hp thoi if (fo.ShowDialog() == DialogResult.OK) { //Nu mun i Font mt on la chn th dng cu lnh ny richTextBox1.SelectionFont = fo.Font; //Cn nu mun i Font cho ton b RichTextBox th dng cu lnh ny //richTextBox1.Font = fo.Font; } }

2.4.2.4.3. Minh ha thuc tnh SelectionColor private void btRichTextBox_Click(object sender, EventArgs e) { //Thuc tnh ny ly v mu ca vng c la chn //Tng t nh thuc tnh SelectionFont - 28 -

Project 2

string Color = richTextBox1.SelectionColor.Name.ToString(); MessageBox.Show(Color); }

2.4.2.4.4. t mu cho vng bi en thng qua thuc tnh SelectionColor private void btRichTextBox_Click(object sender, EventArgs e) { ColorDialog cl = new ColorDialog(); //Hin th hp thoi if (cl.ShowDialog() == DialogResult.OK) { //Nu mun i Font mt on la chn th dng cu lnh ny richTextBox1.SelectionColor = cl.Color; } } 2.4.2.4.5. Vic s dng cc phng thc: AppendText, Select, SelectAll, Undo, Redo, Undo tng t nh Textbox 2.4.2.4.6. Minh ha s dng phng thc LoadFile private void btRichTextBox_Click(object sender, EventArgs e) { - 29 -

Project 2

//Load ni dung File C:\NET.rtf vo RitchTextBox //Tt nhin C ca bn phi tn ti file C:\NET.rtf richTextBox1.LoadFile(@"C:\NET.rtf"); //-> Thng s dng cng vi iu khin OpenFileDialog m mt file trn my }

2.4.2.4.7. Minh ha s dng phng thc SavaFile private void btRichTextBox_Click(object sender, EventArgs e) { //Lu ni dung RitchTextBox ra file richTextBox1.SaveFile(@"C:\File.rtf") //-> Thng s dng cng vi iu khin SaveFileDialog lu file vo mt ni bt k trn my } 2.4.2.4.8. Minh ha Phng thc Find private void btRichTextBox_Click(object sender, EventArgs e) { //Tm kim mt chui trong RichTextBox -> nu c th bi en kt qu tm thy //Ch : t thuc tnh HideSelection=False //rtfNoiDung.Find("Cho", 0, 100, RichTextBoxFinds.Reverse); - 30 -

Project 2

//-> ng dng trong tm kim vn bn richTextBox1.Find("cho", 0, 100, RichTextBoxFinds.MatchCase); } S dng RitchTextBox vit chng trnh son tho vn bn n gin(tham kho WordPad)

- 31 -

Project 2

2.4.3. DataGridView 2.4.3.1. Chc nng iu khin DataGridView dng hin th d liu. 2.4.3.2. Mt s khi nim lin quan n DataGridView

Hnh 1: V d v DataGirdView

Hnh 2: Khi nim Columns trong DataGridView

- 32 -

Project 2

Hnh 3: Khi nim v Rows trong DataGridView

Hnh 4: Khi nim v Cells trong DataGridView

DataGridView Mng 2 chiu C 2 cch truy xut n mt ( ly gi tr) trong DataGridView (cc bn ch hai cu lnh ny) Cch 1: Tn_DataGridView[Ch_s_ct, Ch_s_hng].Value
- 33 -

Project 2

Cch 2: Tn_DataGridView.Rows[Ch_s_hng].Cells[Ch_s_Ct].Value

V d: C mt DataGridView nh sau:

Chng ta mun ly gi tr ca mt bi en chng ta c th s dng cu lnh sau (tn ca DataGridView l: dgSinhVienTK4): string str = dgSinhVienTK4[0, 2].Value.ToString(); Hoc string str = dgSinhVienTK4.Rows[2].Cells[0].Value.ToString();

2.4.3.3. Mt s thuc tnh thng dng


Tn AutoSizeColumnsMode ngha Cc kiu la chn vi Ct (t cc ch khc nhau) AutoSizeRowsMode Cc kiu la chn vi Hng (t cc ch khc nhau) BackGroundColor BorderStyle Chn mu nn cho DataGridView t kiu ng vin ngoi bao quanh cho DataGridView

- 34 -

Project 2

CellBorderStyle ColumnHeadersBorderStyle ColumnHeadersHeight ColumnHeadersVisible

t ng vin cho cc

Nhn mt trong hai gi tr True hay False True: Cho php hin th tiu cc ct False: Khng cho php hin th tiu cc ct

Columns

Lm vic vi ct (t tiu cho Headers, la chn kiu ct (Checkbox, Button, Image). Trong DataGridView mt ct c th l: Ct cc Button, Ct cc Checkbox

DataMember DataSource

Chn c s d liu hin th nn DataGridView Chn ngun d liu cho DataGridView (hai thuc tnh DataSource v DataMember hay i vi nhau)

GridColor

Chn mu cho li (cc hng, cc ct c ngn cch nhau bi li)

MultiSelect ReadOnly

Cho php/Khng cho php chn nhiu dng? Nhn mt trong hai gi tr True hay False True: Cho php thay i gi tr cc cc phn t (cc hay cc Cell). False: khng cho php thay i gi tr cc phn t.

RowHeadersBorderStyle RowHeaderVisible

Chn kiu vin cho cc Hng (Rows). Nhn mt trong hai gi tr True hay False True: Cho php hin th Headers ca hng(Ct u tin mp ngoi bn tri) False: Ngc li
- 35 -

Project 2

2.4.3.4. Mt s s kin thng dng


Tn CellClick ngha Xy ra khi ngi dng nhn chn mt bt k no trn DataGridView (tt nhin DataGridView phi c d liu) Ch : Trong DataGridView th khi nim Cell

2.4.3.5. Minh ha

- 36 -

Project 2 Gi s chng ta c mt form c tn: frmDataGridView. Trn c cha mt s iu khin sau:

Giao din ca chng trnh nh sau:

iu khin DataGridView c tn dataGridView1(Chng ta tt c cc thuc tnh ca dataGridView1vi gi tr mc nh). Button btCreate: minh ha vic to DataGridView vi s hng v s ct xc nh Button btRemove: Minh ha xa mt ct, mt hng trong DataGridView Button btGet: Minh ha vic ly s hng v s ct trong DataGridView Button btAddCombobox: Minh ha vic Add mt ct l Combobox vo DataGridView Button btAddCheck: Minh ha vic Add mt ct l Checkbox vo DataGridView

Chng ta s minh ha s dng DataGridView qua s kin Click ca cc button trn.

- 37 -

Project 2 2.4.3.5.1. To cc ct trong DataGridView (bng Code) //S kin Load ca Form private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny // thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh"); //Thm mt hng mi vo (hng mi ny cha c d liu g) dataGridView1.Rows.Add(); //a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; - 38 -

Project 2 } //Ht sau khi chy chng trnh: form frmDataGridView s c kt qu nh sau:

2.4.3.5.2. t s hng v s ct cho DataGridView //S kin Load ca Form private void btCreate_Click(object sender, EventArgs e) { //t s hng v s ct cho DataGridView (V d: thit k trong chi c Caro) //V d: To mt DataGridView vi 50 hng v 50 Ct dataGridView1.ColumnCount = 50; //Ch thuc tnh ny - 39 -

Project 2 dataGridView1.RowCount = 50; //Ch thuc tnh ny //Thit lp rng cho cc for (int i = 0; i < 50; i++) { dataGridView1.Columns[i].Width = 15; dataGridView1.Rows[i].Height = 15; } } // xong ri. Gi th bn chy xem no

2.4.3.5.3. Xa mt hng (hay 1 ct, hay tt c cc hng cc ct) ca DataGridView private void brRemove_Click(object sender, EventArgs e) { //Tp cc hng, cc ct trong DataGridView l mt Collection //Nn n c y cc thuc tnh v phng thc ca mt Collection

//Xa hng th 1 (c ch s l 0) dataGridView1.Rows.RemoveAt(0); //Xa tt c cc hng: dataGridView1.Rows.Clear(); //Tt nhin nu chng ta c 2 hng th chng ta khng th thc hin cu lnh: dataGridView1.Rows.RemoveAt(2);

- 40 -

Project 2 //Xa ct th 2 (c ch s l 1) dataGridView1.Columns.RemoveAt(1); //Xa tt c cc Ct: dataGridView1.Columns.Clear(); }

Rows Collection

- 41 -

Project 2

Columns Collection 2.4.3.5.4. Ly v s hng v s ct hin c ca DataGridView private void btGet_Click(object sender, EventArgs e) { //Ly v s hng v s ct int i = dataGridView1.Rows.Count; //Ly v s hng int j = dataGridView1.Columns.Count;//Ly v s ct

//Thng bo string HC = "S hng: " + i.ToString() +'\n' + "S ct: " + j.ToString(); - 42 -

Project 2 MessageBox.Show(HC); }

2.4.3.5.5. Add thm mt ct l Combobox vo DataGridView private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny

// thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");

//Thm mt hng mi vo (hng mi ny cha c d liu g) dataGridView1.Rows.Add();

- 43 -

Project 2 //a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; } //Phng thc a d liu vo Combobox private static void AddData(ref DataGridViewComboBoxColumn comboboxColumn) { { comboboxColumn.Items.AddRange( new string[] { "SV1", "SV2", "SV3"}); } } // Add thm mt ct l Combobox vo DataGridView!!! private void btAddCombobox_Click(object sender, EventArgs e) { //Khai bo mng lm DataSource cho Combobox string[] Mang = { "SV1", "SV2", "SV3" }; - 44 -

Project 2

//Khai bo mt ct thuc kiu Combobox DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();

//t thng s v a d liu vo Combobox comboboxColumn.HeaderText = "Ct Combobox"; AddData(ref comboboxColumn);// Cu lnh ny<->comboboxColumn.DataSource = Mang;

//Cu lnh Insert ny a ct vo v tr u ca DataGridView dataGridView1.Columns.Insert(0, comboboxColumn);

// Add mt ct vo v tr cui cng ca DataGridView (Cha c d liu). comboboxColumn = new DataGridViewComboBoxColumn(); comboboxColumn.HeaderText = "Ct Combobox "; dataGridView1.Columns.Add(comboboxColumn);

//S dng phng thc Add m cha c thng s comboboxColumn.DisplayIndex = 3; //Th mc nh a vo cui DataGridView cn nu c //comboboxColumn.DisplayIndex = 3; th a vo ct 3 - 45 -

Project 2 }

Sau khi chy c kt qu nh sau:

2.4.3.5.6.

Add thm mt ct l Checkbox vo DataGridView

//S kin Load ca Form private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny

- 46 -

Project 2 // thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");

//Thm mt hng mi vo (hng mi ny cha c d liu g) dataGridView1.Rows.Add();

//a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; } //Add private void btAddCheckbox_Click(object sender, EventArgs e) { - 47 -

Project 2 DataGridViewCheckBoxColumn ch = new DataGridViewCheckBoxColumn(); { ch.HeaderText = "Check"; //Chn v tr hin th ca ct: Ct th 0, 1 hay 2... ch.DisplayIndex = 3;

//C cho php Chn nhiu hay khng? (Ch Check c vo mt Checkbox) ch.FalseValue = true; //Nu cho php chn nhiu th dng lnh ny: ch.TrueValue = true; } //Chn vo DataGridView dataGridView1.Columns.Add(ch); // <-> dgSinhVienTK5.Columns.Insert(3,ch); } Sau khi chy c kt qu nh sau:

- 48 -

Project 2

2.4.3.5.7.

Ly gi tr ca mt bt k bn chn trn DataGridView

Gi s chng ta c mt DataGridView c cc gi tr nh sau:

- 49 -

Project 2 Yu cu: Chng ta mun ly ra gi tr ca mt (Cells) bt k m bn chn Gii quyt: S dng s kin CellClick ca iu khin DataGridView nh sau: //CC BN HC CNG NGH NET HY NH ON M NY private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { //Ly v v tr ca Hng v ct ang c chn //Hai cu lnh ny QUAN TRNG cc bn ch int Hang = e.RowIndex; //<-> int HangHienTai = dataGridView1.CurrentRow.Index; int Cot = e.ColumnIndex;

//Ly ra v tr (Hng v ct) m bn chn string ViTriBanChon = '\n' + "Hng: " + Hang.ToString() + '\n' + "Ct: " + Cot.ToString(); MessageBox.Show("V tr ang chn: " + ViTriBanChon);

//Ly ra gi tr ca (Cells) m bn chn string GiaTri = dataGridView1[Cot, Hang].Value.ToString(); //Hoc: string GiaTri = dataGridView1.Rows[Hang].Cells[Cot].Value.ToString(); MessageBox.Show(" bn chn c gi tr: "+GiaTri); //Gi cc bn chy th xem no? ^.^ - 50 -

Project 2 }

2.4.3.5.8.

Bt s kin SelectedIndexChanged ca ct l combobox //Khai bo kiu ct DataGridViewComboBoxColumn cbcl; private void frmDataGridView_Load(object sender, EventArgs e) { //t mt s thuc tnh thng qua Code (sau khi Add cc ct vo) dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

///t s ct //dataGridView1.ColumnCount = 10; //dataGridView1.RowCount = 10;

///Add thm cc ct vo dataGridView1.Columns.Add("clMaSV", "M SV"); dataGridView1.Columns.Add("clTen", "Tn"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngy sinh"); - 51 -

Project 2 dataGridView1.Columns.Add("clQuequan", "Qu qun");

///Add thm mt ct vo DataGridView (Cha c gi tr) dataGridView1.Rows.Add(); dataGridView1[0, 0].Value = "M01"; dataGridView1[1, 0].Value = "Nguyn Tun Anh"; dataGridView1[2, 0].Value = "Tk4N1"; dataGridView1[3, 0].Value = "13-02-1986"; dataGridView1[4, 0].Value = "Hng Yn";

//Thm mt hng mi - Cch 2 string[] str = new string[5] { "M02", "Nguyn Th Bch", "TK4N2", "14-02-1985", "Hng Yn"}; dataGridView1.Rows.Add(str);

///Phnng thc Add, remove...Mt ct hay hng ///Ly gi tr ca mt bt k: S kin CellClick ///Ly ra gi tr ca mt v hin th nn cc textbox ///Ly s kin ca ct l Combobox ///----------------------------------------------------------------------------------- 52 -

Project 2 //Add thm mt ct l combobox vo string[] Mang = new string[5] { "M01", "M02", "M03", "M04", "M05" }; // cbcl= new DataGridViewComboBoxColumn(); cbcl.HeaderText = "Ct Combobox"; cbcl.Items.AddRange(Mang); dataGridView1.Columns.Add(cbcl);//Add vo v tr cui cng (Ct cui cng) cbcl.DisplayIndex = 2; //Add+DisplayIndex th a vo v tr ch nh <->Insert (nhng # Insert ch: ch s vn l cui cng) //Cn hin th so ta ch nh

//Add thm mt ct vi v tr ch nh: Insert cbcl = new DataGridViewComboBoxColumn(); cbcl.HeaderText = "Ct Combobox2"; cbcl.Items.AddRange(Mang); dataGridView1.Columns.Insert(0, cbcl); } //-----------------------------------------------------------------------------------------------------------------//Ly v s kin ca Combobox (Ct trong DataGridView) - 53 -

Project 2 ComboBox Combo; int i = 1; void SuKien(object sender, EventArgs e) { string str = Combo.Text; if(i==1) { MessageBox.Show(str); i = 0; } }

//Quan trng private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is ComboBox) { Combo = (ComboBox)e.Control; Combo.SelectedIndexChanged += new EventHandler(SuKien); - 54 -

Project 2 i = 1; } } //S kin CellClick ly v gi tr ca mt private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { int Cot = e.ColumnIndex; int Hang = e.RowIndex; if (dataGridView1[Cot, Hang].Value != null) {

MessageBox.Show(dataGridView1[Cot, Hang].Value.ToString()); } } //End

- 55 -

Project 2

2.4.4. ListView 2.4.4.1. Chc nng iu khin ListView dng trnh by cc phn t dng danh sch vi nhiu hnh dng khc nhau. 2.4.4.2. Mt s khi nim lin quan n ListView

Hnh 1: Minh ha v ListView

Hnh 2: Ct trong ListView


- 56 -

Project 2

Hnh 3: Khi nim ColumnHeader

Hnh 4: Khi nim ListViewItem

- 57 -

Project 2

Hnh 5: Khi nim SubItems

Hnh 6: Minh ha v Group

- 58 -

Project 2

2.4.4.3. Mt s thuc tnh thng dng


Tn CheckBoxes ngha Nhn mt trong hai gi tr True hay False (mc nh l False) True: Hin th mt checkbox bn cnh phn t u tin ca mi hng (1 hng = 1 ListviewItem) trong Listview False: Ngc li

Columns

Tp cc ct trong ListView l mt Collection. Thng qua thuc tnh ny c th thm cc ct vo Listview (C th thm cc ct vo Listview thng qua giao din ha hay c th vit Code. Ch : Phi t thuc tnh View l Detail th bn mi c th nhn thy cc ct ny)

ContextMenuStrip

Gn mt menu ng cnh vi iu khin ListView (khi nhn chut phi vo Listview th s hin th menu ny)

FullRowSelect

Nhn mt trong hai gi tr True hay False True: Cho php chn (bi en) c hng (ca phn t ang c chn. Ch : Thuc tnh View = Detail) False: Ngc li

GridLines

Nhn mt trong hai gi tr True hay False True: Hin th li bao quanh v ngn cch cc hng (Ch c hiu lc nu thuc tnh View = Detail) False: Ngc li

Group

Khai bo nhm phn loi cc phn t sau khi trnh by trn iu khin Listview

HeaderStyle

y l thuc tnh cho php chn Style cho Listview trong ch View l Report

- 59 -

Project 2

Items

L mt Collection. Cho php to ra cc gi tr cho cc hng, ct trong Listview (tt nhin c th dng giao din ha hay vit Code)

LabelEdit

Nhn mt trong hai gi tr True hay False True: Cho php thay i (sa) Text ca cc phn t (cc ). False: Ngc li

LabelWap

Nhn mt trong hai gi tr True hay False True: Chui DHSPKTHY s t ng xung hng khi chiu di khng trnh by False: Ngc li

MultiSelect

Nhn mt trong hai gi tr True hay False True: Cho php chn nhiu hng (ListviewItem). Mc nh l True False: Khng cho php chn nhiu hng

LargeImageList

i tng ImageList cha danh sch cc Image theo ch s (Index) t 0 n n-1. c s dng nu thuc tnh View l LargeIcon

SmallImageList

i tng ImageList cha danh sch cc Image theo ch s (index) t 0 n n-1. c s dng nu thuc tnh View l SmallIcon

Scrollable

Nhn mt trong hai gi tr True hay False True: Cho php xut hin thanh trt trong Listview (Khi s ListViewItem nhiu v vt qua chiu cao ca ListView) False: Ngc li

Sorting

Sp xp gi tr cc hng (ListViewItem) trong ListView (Ch c hiu lc nu thuc tnh View l Detail). Thuc
- 60 -

Project 2

tnh ny nhn mt trong cc gi tr sau None: Khng Sp xp Ascending: Sp xp tng Descending: Sp xp gim SelectedItems CheckedItems Tr v danh sch cc phn t c chn (bi en) Tr v danh sch cc phn t c check (tt nhin thuc tnh CheckBoxes = True) View Cc kiu Hin th trn ListView. Thuc tnh View c th nhn mt s gi tr sau: LargeIcon SmallIcon List Detail Title Mc nh l: LargeIcon

2.4.4.4. Mt s phng thc thng dng


Tn Clear RemoveAt Xa tt c ListView Xa b mt ct c ch s ( v tr) no ngha

- 61 -

Project 2

2.4.4.5. Mt s s kin thng dng


Tn SelectedIndexChanged ngha Xy ra khi ngi s dng thay i phn t c chn trong ListView ItemActivate ItemChecked Xy ra khi chn phn t trn ListView Khi Check vo biu tng Checkbox ca mi phn t trn iu khin ListView

2.4.4.6. Minh ha

- 62 -

Project 2 Gi s chng ta c mt form c tn: frmListView. Trn c cha mt s iu khin sau: iu khin ListView c tn listView1 (Chng ta tt c cc thuc tnh ca listView1 vi gi tr mc nh). Button btCheck: minh ha vic duyt cc hng c check trn ListView Buttonbt RemoveAtColumns: Minh ha xa mt ct trong ListView Buttonbt RemoveAtItems: Minh ha xa mt hng trong ListView Buttonbt ShowFile: Minh ha hin th tt c cc file trong mt th mc nn ListView Button btGroup: Minh ha v Group trong ListView

Chng ta s minh ha s dng ListView qua s kin Click ca cc button trn. 2.4.4.6.1. To cc ct, hng cho ListView bng code private void frmListView_Load(object sender, EventArgs e) { //t mt s thuc tnh cho iu khin ListView1 bng code //Bn ch c th nhn thy cc ct nu t thuc tnh View=Detail listView1.View = View.Details; listView1.GridLines = true; listView1.CheckBoxes = true;//Hin th checkbox: cc bn xem kt qu hinhg minh ha.

//Thm 4 ct vo Listview //C th thm ct vo ListView theo cch ny listView1.Columns.Add("H v tn", 100, HorizontalAlignment.Center); - 63 -

Project 2 listView1.Columns.Add("Qu qun", 100, HorizontalAlignment.Center); listView1.Columns.Add("Lp", 100, HorizontalAlignment.Center); //Cch 2: C th thm vo theo cch ny: S dng ColumnHeader ColumnHeader ch = new ColumnHeader("chNgaySinh"); ch.Text = "Ngy sinh"; ch.TextAlign = HorizontalAlignment.Center; ch.Width = 100; listView1.Columns.Add(ch); //Thm hng th nht vo ListView string[] Them = new string[] { "Nguyn Vn Hi", "Hng Yn", "TK4N1", "29-03-1987" }; ListViewItem lv = new ListViewItem(Them); listView1.Items.Add(lv);

//Thm hng th 2 string[] Them2 = new string[] { "Nguyn Vn Hnh", "H Ni", "TK4N1", "24-04-1987" }; ListViewItem lv2 = new ListViewItem(Them2); listView1.Items.Add(lv2); //Thm hng th 3 string[] Them3 = new string[] { "Phm Th Hnh", "Hi Dng", "TK4N1", "04-10-1988"}; - 64 -

Project 2 ListViewItem lv3 = new ListViewItem(Them3); listView1.Items.Add(lv3);

//Thm hng th 4 string[] Them4 = new string[] { "V Th Ho", "Bc Ninh", "TK4N1", "25-12-1987" }; ListViewItem lv4 = new ListViewItem(Them4); listView1.Items.Add(lv4); } Sau khi chy c hnh nh sau:

- 65 -

Project 2 2.4.4.6.2. Duyt xem nhng hng no c Check private void btCheck_Click(object sender, EventArgs e) { //Bn phi to ra mt Listview nh mc 7.1 trc MessageBox.Show("Tn cc sinh vin c Check l","Check",MessageBoxButtons.OK); //Duyt cc phn t c Check thng qua thuc tnh CheckedItems foreach (ListViewItem lvi in listView1.CheckedItems) { //Ly v phn t th my ( th my) ca ListViewItem (ca 1 hng): s dng SubItems //DataGridView <-> ListView MessageBox.Show(lvi.SubItems[0].Text); } //Gi th bn chy v check th vi hng thy r kt qu }

2.4.4.6.3.

Xa mt Ct ti v tr no

private void btRemoveAtColumns_Click(object sender, EventArgs e) { //Ch : Tp cc column trong Listview l mt Collection nn c y cc phng thc ca mt Collection. - 66 -

Project 2 //V d: Xa mt ct v tr no listView1.Columns.RemoveAt(1); //Gi th bn chy v nhn vo Button ny thy kt qa xem cc kt qu }

Hnh 7.2: Columns Collection 2.4.4.6.4. Xa mt hng ti mt v tr no

- 67 -

Project 2 Hon ton tng t nh xa mt ct private void btRemoveAtItems_Click(object sender, EventArgs e) { //Ch : Tp cc Items trong Listview l mt Collection nn c y cc phng thc ca mt Collection. //V d: Xa mt ct v tr no (tt nhin bn phi to ra mt listview vi cc gi tr nh mc 7.1) listView1.Items.RemoveAt(1); //Gi th bn chy v nhn vo Button ny xem cc kt qu }

Hnh 7.4: Items Collection 2.4.4.6.5. Duyt tt c cc file trong mt th mc v hin th nn ListView - 68 -

Project 2 private void btShowFile_Click(object sender, EventArgs e) { //Listview (listView1) ny hin th tt c cc File trong C:\WINDOWS //Bn c th dng hp thoi FolderBrowserDialog duyt file trong th mc bt k m bn chn //Phng thc Clear xa ton b Listview listView1.Clear();

//Chn mt s thuc tnh cho Listview thng qua m lnh listView1.View = View.Details; listView1.FullRowSelect = true;//Cho php chn c hng nh hnh kt qu di listView1.GridLines = true;

//Add cc ct vo Listview bng m lnh //Mi file c cc c tnh ca file: Tn, kch thc, kiu file (ReadOnly, System...) nn chng ta to ra cc ct tng ng listView1.Columns.Add("Number", 100, HorizontalAlignment.Left); listView1.Columns.Add("Name", 300, HorizontalAlignment.Left); listView1.Columns.Add("Size", 150, HorizontalAlignment.Left); listView1.Columns.Add("Type", 100, HorizontalAlignment.Left);

- 69 -

Project 2 //Nn khai bo i tng DirectoryInfo duyt file //DirectoryInfo l mt lp nm trong System.IO DirectoryInfo dir = new DirectoryInfo(@"C:\WINDOWS");

//Khai bo i ly v S th t file: 1, 2, 3.... int i = 0;

//Khai bo mt ListviewItem - Mt Hng ListViewItem lvi;

//Duyt File () foreach (FileInfo f in dir.GetFiles("*.*")) { //Tng gi tr i nn 1 i++;

//Gn cc thnh phn cho lvi qua thuc tnh SubItems.Add lvi = new ListViewItem(i.ToString()); lvi.SubItems.Add(f.Name); - 70 -

Project 2 lvi.SubItems.Add(f.Length.ToString()); lvi.SubItems.Add(f.Attributes.ToString()); //Sau khi gn phi Add vo Listview listView1.Items.Add(lvi); } //Ht }

Hnh 7.5: Kt qu sau khi nhn vo Button Show File

2.4.4.6.6.

lm vic vi Group trong ListView - 71 -

Project 2 private void btGroup_Click(object sender, EventArgs e) { // tng: Chng ta mun a tt c cc file c cng thuc tnh vo mt nhm //lm vic vi nhm cc bn ch i tng ListViewGroup //Xa Listview trc listView1.Clear();

//t mt s thuc tnh bng Code listView1.View = View.Details;

//Khai bo 3 nhm ListViewGroup gArchive; ListViewGroup gSystem; ListViewGroup gNormal;

//Add cc ct vo Listview bng m lnh listView1.Columns.Add("Number", 100, HorizontalAlignment.Left); listView1.Columns.Add("Name", 300, HorizontalAlignment.Left); listView1.Columns.Add("Size", 150, HorizontalAlignment.Left); - 72 -

Project 2 listView1.Columns.Add("Type", 100, HorizontalAlignment.Left);

//Add 3 nhm - Group vo Listview gArchive = new ListViewGroup("Archive"); gSystem = new ListViewGroup("System"); gNormal = new ListViewGroup("Normal"); listView1.Groups.Add(gArchive); listView1.Groups.Add(gSystem); listView1.Groups.Add(gNormal);

//Listview ny hin th tt c cc File trong C:\WINDOWS //Nn khai bo i tng DirectoryInfo DirectoryInfo dir = new DirectoryInfo(@"C:\WINDOWS");

//Khai bo i ly v S th t file: 1, 2, 3.... int i = 0; string ThuocTinhFile = "";

//Khai bo mt ListviewItem-Mt Hng - 73 -

Project 2 ListViewItem lvi;

//Duyt file v a vo Group cc file cng thuc tnh foreach (FileInfo f in dir.GetFiles("*.*")) { i++; //Gn cc thnh phn cho lvi qua thuc tnh SubItems.Add lvi = new ListViewItem(i.ToString()); lvi.SubItems.Add(f.Name); lvi.SubItems.Add(f.Length.ToString()); //Ly v thuc tnh tp tin v x l ThuocTinhFile = f.Attributes.ToString(); lvi.SubItems.Add(ThuocTinhFile); //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("Archive")) gArchive.Items.Add(lvi); //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("System")) gSystem.Items.Add(lvi); - 74 -

Project 2 //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("Normal")) gNormal.Items.Add(lvi); //Sau khi gn phi Add vo Listview listView1.Items.Add(lvi); } //Ht- Kt qu xem hnh di }

Hnh 7.6: Group - 75 -

Project 2

2.4.4.6.7. Ly v gi tr ca mt (SubItems) bt k no trn ListView (s kin listView1_ItemActivate) Gi s chng ta c hnh nh sau:

Chng ta mun ly thng tin v sinh vin Phm Th Hnh bn c th s dng on code sau: private void listView1_ItemActivate(object sender, EventArgs e) { ListViewItem lvi = listView1.FocusedItem; MessageBox.Show(lvi.Text);//Ly ra gi tr text u tin

- 76 -

Project 2 //Ly v ct th 1 - Ct Qu qun (Ct trng ListView c ch s bt u = 0) string Cot1 = lvi.SubItems[1].Text; MessageBox.Show("Gi tr ct th 1: " + Cot1);

//Ly v ct th 2 - Ct Lp string Cot2 = lvi.SubItems[2].Text; MessageBox.Show("Gi tr ct th 2: " + Cot2); //Gi th bn chy v Click vo mt hng xem xem kt qu //ng dng: Thng ng dng trong lp trnh CSDL: Hin h tt c cc cc thng tin (sinh vin ch hn) //nn ListView. khi ngi dng chn mt hng trn ListView th hin th cc gi tr tng ng nn //Cc Textbox. khi bn c th chnh sa cc thng tin v Update vo CSDL.... //................ }

- 77 -

Project 2

2.5. 2.6.

User Control Thao tc vi file XML

2.6.1. XML l g? XML vit tt ca ch eXtensible Markup Language (ngn ng nng cp c th m rng) l mt b qui lut v cch chia mt ti liu ra lm nhiu phn, ri nh du v rp cc phn khc nhau li d nhn din chng. T hp Web ton cu W3C gi XML l "mt c php thng dng cho vic biu th cu trc trong d liu". D liu c cu trc tham chiu n d liu c gn nhn cho ni dung, ngha, hoc cng dng. XML c cu trc ging nh HTML tuy nhin HTML s dng nhng th c nh ngha trc (trong mt ti liu html khng th s dng th do ngi dng nh ngha), cn trong trang XML hon ton c th s dng nhng th do ngi dng nh ngha.

2.6.2. C php XML Mt trang XML phi tun th cc quy lut sau. 1. Mt trang XML phi bt u bng XML declaration (v d: <?xml
version="1.0" encoding="utf-8" ?>)

2. Phi c mt root (gc) Element duy nht, gi l Document Element, n cha tt c cc Elements khc trong ti liu. 3. Mi Child Element phi nm trn bn trong Element cha ca n. 4. Mi opening Tag phi c mt closing Tag ging nh n (Nu Tag no khng cha g gia th phi chm dt bng "/>", th d nh <BR/>, <HR/>). opening Tag v closing Tag phi c nh vn y nh nhau, ch hoa hay ch thng.

- 78 -

Project 2

5. Cc Tag khng c xen k nhau (th d nh <Class>TK6<Lop>TK6</Class></Lop> l bt hp l v <Lop> nm trong Tag Class). 6. Gi tr Attribute trong XML phi c gi gia mt cp ngoc kp 2.6.3. c/ghi file XML trong C# 2.6.3.1. Ghi d liu ra file XML Trong C# ghi d liu ra file XML chng ta c th s dng 1 cc i tng sau: XmlTextWriter XmlWriter XmlDocument Minh ha: to trang XML SinhVien.xml c cu trc nh bn di chng ta c th s dng XmlTextWriter hay XmlDocument (trc khi s dng cc i tng ny phi khai bo namespace using System.Xml;).

Trang SinhVien.xml
S dng i tng XmlTextWriter: XmlTextWriter xmlText = new XmlTextWriter("SinhVien.xml", null); //Ghi ch thch xmlText.WriteComment("c ra file XML"); //Ghi d liu: 1 lp c nhiu sinh vin (tn, nm sinh) xmlText.WriteStartElement("Lop"); //Bn ghi th nht xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID","1"); xmlText.WriteStartElement("Ten"); - 79 -

Project 2 xmlText.WriteString("Hong Quc Vit"); xmlText.WriteEndElement();//</Name> xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1985); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //Bn ghi th 2 xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID", "2"); xmlText.WriteStartElement("Ten"); xmlText.WriteString("Nguyn Anh Tun"); xmlText.WriteEndElement(); xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1986); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //ng file xmlText.Close(); S dng i tng XmlDocument
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);

XmlDocument xmlDoc = new XmlDocument();

//To Node gc <->Class XmlElement LopNode = xmlDoc.CreateElement("Lop");//Root Node xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); xmlDoc.AppendChild(LopNode);

//To bn ghi th nht XmlElement SinhVienNode =xmlDoc.CreateElement("SinhVien"); SinhVienNode.SetAttribute("ID", "1"); LopNode.AppendChild(SinhVienNode); //To 2 node con cho bn ghi th nht v set gi tr XmlElement TenNode = xmlDoc.CreateElement("Ten"); XmlElement NamSinhNode = xmlDoc.CreateElement("NamSinh"); TenNode.InnerText = "Hong Quc Vit";

- 80 -

Project 2
NamSinhNode.InnerText = "1985"; SinhVienNode.AppendChild(TenNode); SinhVienNode.AppendChild(NamSinhNode);

//To bn ghi th hai XmlElement SinhVienNode2 = xmlDoc.CreateElement("SinhVien"); SinhVienNode2.SetAttribute("ID", "2"); LopNode.AppendChild(SinhVienNode2); //To 2 node con cho bn ghi th nht v set gi tr XmlElement TenNode2 = xmlDoc.CreateElement("Ten"); XmlElement NamSinhNode2 = xmlDoc.CreateElement("NamSinh"); TenNode2.InnerText = "Nguyn Anh Tun"; NamSinhNode2.InnerText = "1986"; SinhVienNode2.AppendChild(TenNode2); SinhVienNode2.AppendChild(NamSinhNode2);

//Lu file xmlDoc.Save(@"SinhVien.xml");

Ch : vic s dng i tng XmlWriter hon ton tng t nh vic s dng i tng XmlTextWriter 2.6.3.2. c d liu t file XML c d liu t file xml chng ta c th s dng mt trong cc i tng sau: XmlTextReader XmlReader Minh ha: c ni dung ca file SinhVien.xml trn v hin th thng tin (tn, nm sinh) ca tng sinh vin (MessageBox). y chng ta s dng i tng XmlTextReader. Vic s dng i tng XmlReader l hon ton tng t.

- 81 -

Project 2

string strSinhVien = ""; string strTenNode = ""; // XmlTextReader read = new XmlTextReader("SinhVien.xml"); // while (read.Read()) { switch (read.NodeType) { case XmlNodeType.Element: strTenNode = read.Name; break; case XmlNodeType.Text: switch (strTenNode) { case "Ten": strSinhVien += read.Value; strSinhVien += ",";//Hai thng tin ngn cch nhau bi du , break; case "NamSinh": strSinhVien += read.Value; MessageBox.Show(strSinhVien);//In tng bn ghi strSinhVien = ""; break; } break; } }

Khi chy on code ny (qua s kin click ca node button) th s hin th ra hai MessageBox

- 82 -

Project 2

2.7.

Thao tc vi Registry

2.7.1. Gii thiu v Registry Registry l mt c s d liu dng lu tr thng s k thut ca Windows. N ghi nhn tt c cc thng tin khi bn thay i, chnh sa trong Menu Settings, Control Panel.... Trong Win95 & 98, Registry c ghi trong 2 file: user.dat v system.dat trong th mc Windows. Trong Windows Me, Registry c lu trong file Classes.dat trong th mc Windows. Trong Win2K Registry c lu trong th mc "Windows\System32\Config". Registry c th chnh sa trc tip, lm thay i cc thng s thng qua trnh chnh sa Registry Editor. Chy Registry Editor bng cch g regedit vo ca s Run (Start run regedit)

Registry lu tt c cc thng tin v phn cng, phn mm, nhng la chn ca ngi dng....kim sot c ni dung ca Registry l yu cu tt yu bn s dng PC mt cch khoa hc, hiu su hn v mi trng lm vc ca Windows. Mun tin xa hn trong k thut lp trnh trn nn Windows, cch bo mt, cracking, hacking bn cn phi c hiu bit nht nh v Registry. 2.7.2. Cu trc Registry ca Windows

- 83 -

Project 2

Registry c cu trc cy, ging cu trc th mc. Thng thng c su nhnh chnh. Mi nhnh c giao him v lu gi nhng thng tin ring bit. Trong cc nhnh chnh c rt nhiu nhnh con. Nhng nhnh con ny cng c lu gi nhng thng tin ring bit. HKEY_CLASSES_ROOT: Lu nhng thng tin dng chung cho ton b h thng. HKEY_CURRENT_USER: Lu nhng thng tin cho ngi dng ang Logon HKEY_LOCAL_MACHINE: Lu nhng thng tin v h thng, phn cng, phn mm. HKEY_USERS: Lu nhng thng tin ca tt c cc User, mi user l mt nhnh vi tn l s ID ca user HKEY_CURRENT_CONFIG: Lu thng tin v phn cng hin ti ang dng. HKEY_DYN_DATA: y cng l mt phn ca nhnh

HKEY_LOCAL_MACHINE Registry s dng mt s kiu d liu sau: REG_BINARY: Kiu nh phn REG_DWORD: Kiu Double Word REG_EXPAND_SZ: "%SystemRoot%" REG_MULTI_SZ: Kiu chui c bit REG_SZ: Kiu chui chun Kiu chui m rng c bit. VD:

2.7.3. Thao tc vi Registry trong C# Trong C# thao tc vi registry: c, ghi th chng ta s dng i tng RegistryKey (phi khai b namespace using Microsoft.Win32 trc khi s dng i tng ny)
- 84 -

Project 2

Minh ha cho vic thao tc vi registry y chng ta c 3 v d: 2.7.3.1. To Key


//Khai bo Key v Set thuc tnh const string Path = @"Software\Microsoft\Windows\CurrentVersion\Run"; RegistryKey key = Registry.CurrentUser.OpenSubKey(Path,true); key.SetValue("UTEHY", Application.ExecutablePath);

2.7.3.2. Ly gi tr mt key
const string Path = @"Software\Microsoft\Windows\CurrentVersion\Run"; RegistryKey key = Registry.CurrentUser.OpenSubKey(Path, true); string s = (string)key.GetValue("UTEHY "); MessageBox.Show(s);//UTEHY c to mc 1.7.3.1

2.7.3.3. Xa mt Key
const string Path = @"Software\Microsoft\Windows\CurrentVersion\Run"; RegistryKey key = Registry.CurrentUser.OpenSubKey(Path,true); key.DeleteValue("UTEHY"); //UTEHY c tp mc 1.7.3.1

- 85 -

Project 2

CHNG 3: LP TRNH C S D LIU


3.1. Gii thiu ADO.NET

V tr ca ADO.NET trong kin trc ca .net Framework ADO.NET l mt tp cc lp nm trong b th vin lp c s ca .NET Framework, cho php cc ng dng Windows (nh C#, VB.NET) hay ng dng web (nh ASP.NET) thao tc d dng vi cc ngun d liu. Mc tiu chnh ca ADO.NET l: Cung cp cc lp thao tc CSDL trong c hai mi trng l phi kt ni (Disconected data) v kt ni (Connected data). Tch hp cht ch vi XML (Extensible Markup Language) Tng tc vi nhiu ngun d liu thng qua m t d liu chung. Ti u truy cp ngun d liu (OleDb & SQL server). Lm vic trn mi trng Internet (mi trng phi kt ni Disconnected eviroment). Cc lp ca ADO.NET c t trong Namespace l System.Data. ADO.NET bao gm 2 Provider (2 b th vin) (thng dng) thao tc vi cc CSDL l: OleDb Provider (nm trong System.Data.OleDb) dng truy xut n bt k CSDL no c h tr OleDb.
- 86 -

Project 2

SQL Provider (nm trong System.Data.SQLClient) chuyn dng truy xut n CSDL SQL Server. 3.2. Cc m hnh thao tc vi CSDL ADO.NET c 5 thnh phn chnh. Connection Command DataReader DataAdapter DataSet ADO.NET cho php lm vic vi c s d liu c hai ch , ch Kt ni (Connected) v phi kt ni (Disconnected). Trong ch Connected th mi khi thao tc (nh sa, xa, thm) th u i hi ng dng phi kt ni v thao tc trc tip vi c s d liu (CSDL). Ba i tng Connection, Command v DataReader: cho php lm vic ch Connected Cn trong ch Disconnected th vn c th thm, sa, xa d liu trn i tng cc b, khng nht thit phi kt ni ngay n CSDL. Cc i tng DataAdapter, Connection, Command v Dataset lm vic ch Disconnected

Kin trc ca ADO.NET


- 87 -

Project 2

3.3.

Kt ni n ngun d liu bng i tng Connection

3.3.1. Chc nng i tng Connection c nhim v thc hin kt ni n C s d liu cc i tng nh Command thao tc vi CSDL thng qua Connection ny. i tng Connection c hai phng thc hay dng l Open() m kt ni ti CSDL v Close() ng kt ni ti CSDL. 3.3.2. Khai bo Chng ta c mt s cch khai bo i tng Connection nh sau:
using System; using System.Data; using System.Data.SqlClient; namespace WindowsFormsInCSharp { public partial class frmADONET : Form {

- 88 -

Project 2

public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL (Server l .\SQLEXPRESS, Tn c s d liu l CSDL) static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) SqlConnection sqlCon;//Cch 1 SqlConnection sqlCon2 = new SqlConnection();//Cch 2 SqlConnection sqlCon3 = new SqlConnection(strConnect);//Cch 3 } }

- 89 -

Project 2

3.3.3. Kt ni ti C s d liu - M kt ni ti CSDL ti CSDL). Sau khi gi phng thc Open(), c th xem kt ni thanh cng hay khng thng qua thuc tnh State ca Connection: - ng kt ni
using System.Data; using System.Data.SqlClient;

S dng phng thc Open() ca i tng Connection m kt ni ti CSDL (trong ConnectionString - chui kt ni

if (sqlCon.State == ConnectionState.Open) MessageBox.Show(" kt ni thnh cng ti CSDL");

S dng phng thc Close() ca i tng Connection ng kt ni ti CSDL. Ch : Chng ta thng vit mt phng thc m kt ni ti CSDL v mt phng thc ng kt ni ti CSDL nh sau:

namespace WindowsFormsInCSharp { public partial class frmADONET : Form {

- 90 -

Project 2

public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) SqlConnection sqlCon;//s dng cch 1 //Phng thc kt ni ti CSDL (thng gi trong s kin Load ca Form) void KetNoi() { sqlCon = new SqlConnection(strConnect); //Kt ni ti ngun CSDL if (sqlCon.State == ConnectionState.Closed)

- 91 -

Project 2

sqlCon.Open(); //Kim tra kt ni c thnh cng hay khng c th lm nh sau: if (sqlCon.State == ConnectionState.Open) MessageBox.Show("Kt ni thnh cng!"); } //Ngt kt ni (thng gi trong s kin FormClosing ca Form) void NgatKetNoi() { sqlCon.Close(); } //Gi phng thc M kt ni private void frmADONET_Load(object sender, EventArgs e) { KetNoi();

- 92 -

Project 2

} //Gi phng thc ngt kt ni private void frmADONET_FormClosing(object sender, FormClosingEventArgs e) { NgatKetNoi(); }

3.4.

Thc thi cu lnh SQL bng i tng Command

3.4.1. Chc nng Dng thc thi cc cu lnh SQL thao tc vi CSDL nh : Insert, Update, Select, Delete Trc khi thc thi cu lnh SQL bng i tng Command th bt buc phi m kt ni ti CSDL (gi phng thc KetNoi() trn). 3.4.2. Khai bo Chng ta c mt s cch khai bo i tng Command nh sau:

- 93 -

Project 2

using System.Windows.Forms; using System.Data; using System.Data.SqlClient;

namespace WindowsFormsInCSharp { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo i tng Command (sqlCommand) SqlCommand sqlCom;

- 94 -

Project 2

SqlCommand sqlCom2 = new SqlCommand(); } }

3.4.3. Cc phng thc thng ca i tng Command i tng Command c mt s phng thc sau: ExecuteScalar(): Thc hin cu lnh m kt qu tr v ch c 1 (V d cu lnh Select Count(*)). ExecuteReader(): Thc hin cu lnh Select v tr v mt DataReader ExecuteNonQuery(): Thc hin cu lnh OLEDB nhng khng tr v kt qu (Delete, Update, Insert ). ExecuteXMLReader(): To mt b c t file XML. Phng thc ny khng c trong OleDbCommand, ch c trong SqlCommand. 3.4.4. S dng i tng Command Gi s chng ta c mt c s s liu SQL c tn: CSDL. C s d liu bao gm mt bng: tbSinhVien(MaSinhVien, TenSinhVien, Lop, NgaySinh, QueQuan) lu tr thng tin v mt s sinh vin Gi s chng ta c mt form c tn frmADONET. Trn form c cha mt s iu khin sau: DataGridView: dgSinhVien hin th d liu trong bng tbSinhVien. Cc Textbox: txtMaSinhVien, txtTenSinhVien, txtLop, txtNgaySinh, txtQueQuan dng nhp d liu
- 95 -

Project 2

Cc nt button: btMoi, btThem, btSua, btXoa minh ha s dng i tng Command thao tc vi CSDL (Insert, Update, Delete)

using System.Windows.Forms; using System.Data; using System.Data.SqlClient;

namespace WindowsFormsInCSharp - 96 -

Project 2

{ public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) v SqlCommand SqlConnection sqlCon;//s dng cch 1 SqlCommand sqlCom; SqlCommand sqlCom2 = new SqlCommand(); //Phng thc kt ni ti CSDL void KetNoi() { sqlCon = new SqlConnection(strConnect); //Kt ni ti ngun CSDL - 97 -

Project 2

if (sqlCon.State == ConnectionState.Closed) sqlCon.Open(); } //Ngt kt ni (thng gi trong s kin FormClosing ca Form) void NgatKetNoi() { sqlCon.Close(); }

/// <summary> /// Phng thc thc thi cu lnh SQL (Insert, Update, Delete) /// </summary> /// <param name="strSQL">Chui string m t Cu lnh SQL: Insert, Update, Delete</param> void ThucThi(string strSQL) { //Bc 1: Kt ni ti CSLD (Gi phng thc KetNoi) KetNoi(); //Bc 2: Khi to v gi phng thc ca i tng Command

- 98 -

Project 2

sqlCom = new SqlCommand(strSQL, sqlCon); sqlCom.ExecuteNonQuery(); //Bc 3: Ngt kt ni NgatKetNoi(); } //Mi private void btMoi_Click(object sender, EventArgs e) { foreach (Control ctr in this.splitContainer1.Panel2.Controls) { if ((ctr is TextBox) || (ctr is MaskedTextBox)) { ctr.Text = ""; } } } //Thm bn ghi mi vo bng tbSinhVien private void btThem_Click(object sender, EventArgs e)

- 99 -

Project 2

{ string strThem = "Insert into tbSinhVien values('"+ +"','"+txtTenSinhVien.Text+"','"+txtLop.Text+"','"+mkNgaySinh.Text+"','"+txtQueQuan.Text+"')"; ThucThi(strThem); } //Sa bn ghi private void btSua_Click(object sender, EventArgs e) { string strSua = "update tbSinhVien set TenSinhVien='" + txtTenSinhVien.Text + "',Lop='" + txtLop.Text + "',NgaySinh='" + mkNgaySinh.Text + "',QueQuan='" + txtQueQuan.Text + "' where MaSinhVien='"+txtMaSinhVien.Text+"' "; ThucThi(strSua); } //Xa bn ghi private void btXoa_Click(object sender, EventArgs e) { string strXoa = "delete from tbSinhVien where MaSinhVien='"+ txtMaSinhVien.Text +"' "; ThucThi(strXoa); } //End - 100 txtMaSinhVien.Text

Project 2

3.5.

Truy vn v nhn v d liu vi DataReader

3.5.1. Chc nng. Dng n nhn kt qu (d liu) tr v t phng thc ExecuteReader ca i tng Command. Tuy nhin d liu l Readonly v ch c theo chiu tin 3.5.2. Khai bo Khai bo: SqlDataReader Bin_DataReader;//Khng c New Ly kt qu t Command <Bin_DataReader > = <Bin_Command>.ExecuteReader(); 3.5.3. S dng i tng DataReader Gi s chng ta mun hin thi tn ca tt c sinh vin tring bng tbSinhVien(MaSinhVien, TenSinhVien, Lop, NgaySinh, QueQuan), chng ta s dng i tng SqlDataReader nh sau.

- 101 -

Project 2

using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo cc chui kt ni v cc i tng string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; SqlConnection sqlCon; SqlCommand sqlCom; SqlDataReader sqlRd; SqlParameter sqlPa; //Phng thc kt ni ti CSDL SQL Server private void KetNoi() { sqlCon = new SqlConnection(strConnect); if (sqlCon.State == ConnectionState.Closed) { sqlCon.Open(); } } //Phng thc ng kt ni ti CSDL private void NgatKetNoi() { - 102 -

Project 2

if (sqlCon.State == ConnectionState.Open) { sqlCon.Close(); } } //Phng thc c d liu public void DocDuLieu() { KetNoi(); //kt ni ti CSDL sqlCom = new SqlCommand("select TenSinhVien from tbSinhVien", sqlCon); sqlRd = sqlCom.ExecuteReader(); // while (sqlRd.Read()) { MessageBox.Show(sqlRd["TenSinhVien"].ToString());//Hoc sqlRd["TenSinhVien"].ToString() } //Ngt kt ni NgatKetNoi(); } //Gi phng thc c d liu private void frmADONET_Load(object sender, EventArgs e) { DocDuLieu(); } } }

- 103 -

Project 2

3.6.

Cp nht v truy vn d liu vi i tng DataAdapter

3.6.1. Chc nng C chc nng nh mt chic cu ni gia ngun (tp) d liu v cc bng c cached trong b nh (i tng DataSet.). DataAdapter s dng phng thc Fill() nhn d liu t ngun d liu vo mt dataset.

3.6.2. Khai bo i tng DataAdapter Khai bo: SqlDataAdapter BinAdapter; Bin Adapter c cc phng thc khi dng sau:

- 104 -

Project 2

S dng: BinAdapter.Fill(<Bin dataset>, Tn cho bng); or BinAdapter.Fill(<Bin_DataTable>, Tn cho bng);

3.6.3. S dng i tng DataAdapter 3.6.3.1. S dng i tng DataAdapter truy vn d liu Chng ta mun ly d liu bng tbSinhVien trn chng ta c th s dng i tng DataAdapter nh bn di.
using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo cc chui kt ni v cc i tng SqlDataAdapter sqlAdap;

//Truy vn d liu s dng i tng DataAdapter DataTable TruyVanDuLieu() { - 105 -

Project 2

DataTable dt=new DataTable(); // sqlAdap = new SqlDataAdapter("select * from tbSinhVien", @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"); sqlAdap.Fill(dt); // return dt; }

3.6.3.2. S dng DataAdapter cp nht (inserts, update) d liu


using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { //Khai bo i tng SqlDataAdapter sqlAdap; //Cp nht d liu vi DataAdapter DataTable CapNhatDuLieu() { DataTable dt=new DataTable(); // sqlAdap = new SqlDataAdapter("Insert into tbSinhVien values('M02',N'Nguyn Vn Quyt','TK2', '10/10/1988','Hng Yn')", @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"); sqlAdap.Fill(dt); - 106 -

Project 2

// return dt; } //Gi phng thc cp nht d liu private void frmADONET_Load(object sender, EventArgs e) { CapNhatDuLieu(); } } }

3.7.

M hnh DataSet

3.7.1. Chc nng Dataset l mt lp dng thao tc vi d liu theo m hnh d liu phi kt ni. N c coi nh l mt kho cha cc bng (table). Ngi dng c th thay i d liu trong cc bng ny v khi thc s mun cp nht vo C s d liu th DataSet s thc hin cp nht thng qua lp DataAdapter Cc bng trong DataSet c th do DataAdapter Fill vo hoc cng c th l cc bng c to thnh t lp DataTable. 3.7.2. Khai bo DataSet BienDataSet=new DataSet(); //Ch : Phi c New trc khi s dng bin DataSet 3.7.3. M hnh DataSet

- 107 -

Project 2

Mi quan h gia DataAdapter v DataSet

Mi quan h gia DataSet v DataTable

- 108 -

Project 2

M hnh DataTabble 3.8. i tng Parameter

3.8.1. Chc nng S dng i tng SqlParameter truyn gi tr (ly t textbox, c sn) vo cho cc tham s ng vi cu lnh SQL hay th thc ni ti (StoredProcedure). Ch : Ch s dng i tng ny nu cu lnh SQL hay StoredProcedure c tham s. 3.8.2. S dng Gi s chng ta c mt StoredProcedure thm mi mt bn ghi vo bng tbSinhVien c ni dung:
CREATE PROCEDURE ThemMoiBanGhi ( @MaSinhVien nchar(10), @TenSinhVien nvarchar(50), @Lop nchar(10),

- 109 -

Project 2

@NgaySinh nchar(12), @QueQuan nvarchar(12) ) AS BEGIN If exists (select MaSinhVien from tbSinhVien where MaSinhVien=@MaSinhVien) print 'Da co sinh vien nay' else begin Insert into tbSinhVien values (@MaSinhVien, @TenSinhVien,@Lop,@NgaySinh,@QueQuan) print 'Da them thanh cong' end END GO

Chng ta s dng i tng SqlParameter nh di:


using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo cc chui kt ni v cc i tng string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; - 110 -

Project 2

SqlConnection sqlCon; SqlCommand sqlCom; SqlParameter sqlPa; //Phng thc kt ni ti CSDL SQL Server private void KetNoi() { sqlCon = new SqlConnection(strConnect); if (sqlCon.State == ConnectionState.Closed) { sqlCon.Open(); } } //Phng thc ng kt ni ti CSDL private void NgatKetNoi() { if (sqlCon.State == ConnectionState.Open) { sqlCon.Close(); } } //Phng thc ThucThi dng tng qut: c cu lnh SQL v Stored Procedure //Thc thi nhiu ln v cc Store hay cu lnh SQL c tham s //Khai bo i tng Parameter /// <summary> /// Phng thc thc thi cu lnh SQL hay StoredProcedure /// </summary> /// <param name="cmdType"> Thc thi dng cu lnh SQL hay StoredProcedure</param> /// <param name="strName"> Tn cu lnh SQL hay tn StoredProcedure</param> /// <param name="MangTen"> Tn cc tham s truyn vo StoredProcedure</param> - 111 -

Project 2

/// <param name="MangGiaTri">Gi tr truyn vo cho cc bin trong StoredProcedure</param> /// <param name="MangType"> Kiu d liu ca bin</param> public void ThucThi(CommandType cmdType, string strName, string[] MangTen, object[] MangGiaTri, DbType[] MangType) { KetNoi(); // sqlCom = new SqlCommand(); sqlCom.CommandType = cmdType; sqlCom.CommandText = strName; sqlCom.Connection = sqlCon; //Khai bo v gn cc i tng Parameter for (int i = 0; i < MangTen.Length; i++) { sqlPa = new SqlParameter(); sqlPa.ParameterName = MangTen[i]; sqlPa.Value = MangGiaTri[i]; sqlPa.DbType = MangType[i]; sqlCom.Parameters.Add(sqlPa); } //Thc thi cu lnh sqlCom.ExecuteNonQuery(); NgatKetNoi(); } //Gi thc thi Stored private void frmADONET_Load(object sender, EventArgs e) { string[] MangTen = {"MaSinhVien","TenSinhVien","Lop","NgaySinh","QueQuan" }; string[] MangGT = { "M01", "Nguyn Vn A", "TK6", "10/10/1988", "Hng Yn" }; DbType[] MangType={DbType.String, DbType.String, DbType.String, DbType.String, DbType.String}; //ThucThi(CommandType.StoredProcedure, "ThemMoiBanGhi", MangTen, MangGT, MangType); } - 112 -

Project 2

//End } }

3.9.

Rng buc d liu vi cc iu khin

3.9.1. Mc ch Gn kt cc iu khin (Textbox) vo cc trng d liu trong CSDL 3.9.2. S dng Trong C#: gn kt d liu vi cc iu khin chng ta thng s dng i tng BindingManagerBase (xem v d minh ha i km) 3.10. S dng DataView trong sp xp v tm kim d liu 3.11. LINQ

- 113 -

Project 2

CHNG 4: CRYSTAL REPORT


4.1. Thit k bo co vi Crystal Report

Bc 1: To 1 Project Visual C#.NET bnh thng

Bc 2: thit k Report bn thm vo d n va to bc 1 mt Item Report bng cch:

- 114 -

Project 2

- 115 -

Project 2

Report c chia lm 5 khu vc (Section): Section 1 (Report Header): Nhng thit k trn phn ny ch xut hin trn trang u tin ca bo co (Report) (nu bo co c nhiu trang). Section 2 (Page Header): Nhng thit k trn phn ny s xut hin trn tt c cc ca bo co (nu bo co c nhiu trang). Section 3 (Detail): Khu vc ny hin th ni dung bng CSDL. Section 4 (Report Footer) v Section 5(Page Footer) c ngha tng t nh Section 1 v 2.

Bc 3: Kt ni n ngun CSDL

- 116 -

Project 2

Ch : Ty thuc CSDL l g (SQL Server, Access, Excel) m chng ta chn Driver cho thch hp (trong trng hp ny ti chn kt ni n SQL Server)

- 117 -

Project 2

Chn tn Server t Combobox Server ( y tn server ca ti l: VIETHQTK1 hoc bn c th g vo l localhost). Sau bn chn CSDL m mun hin th ra Report Combobox Database ( y ti chn CSDL Northwind)

- 118 -

Project 2

Chn cc bng d liu cn hin th d liu ra Report bn khung bn tri sau nhn nt >. Khi danh sch cc bng bn chn s hin th ra bn tay phi bn ( y ti mun hin th bng CSDL Customers).

Bc 4: Thit k Report thit k reports Visual Studio cung cp mt s iu khin (trong hp thoi Toolbox), cc iu khin ny cng c cc thuc tnh nh trong cc ng dng Window Form. y ta ch n 2 iu khin - Text Object: Hin thi chui Text (nh mt Label) - Line Object: Dng k cc ng thng.

Trc ht chng ta thit k cho 2 phn Section 1 (Report Header) (thng hin th CNG HA X HI CH NGHA..) v Section 2 (Page Header) (thng hin th tiu bo co). y: 2 phn ny ti dng iu khin Text Object thit k.

- 119 -

Project 2

Tip n chng ta thit k d liu t CSDL hin th ra Report. Chng ta lm theo cc bc sau:

Bn ko ln lt cc trng trong bng CSDL Customers trong khung Field Explorer bn tay tri vo khu vc Section 3 (Details) ta s c nh hnh di y.

- 120 -

Project 2

xem cc kt qu thit k ca bn bn c th chn Tab Main Report Preview xem kt qu nh di y.

quay tr li thit k cc bn chn Tab Main Report


- 121 -

Project 2

Qu trnh thit k Report hon tt by gi n bc hin th Report ra Form 4.2. Np v hin th Report trong chng trnh

Bc 5: Hin th Report ra form hin th Report nn Form, VS h tr iu khin CystalReportViewr trong Tab Reporting.

Bn hy ko iu khin vo form sau t thuc tnh ReportSource cho iu khin l Reports chng ta va thit k Gi th bn hy chy form v xem kt qu xem no!

- 122 -

Project 2

4.3.

Thit k Report ng

4.3.1. Mc ch Truyn d liu t form (d liu c nhp vo t textbox, d liu t bin) sang report nhm thit k cc report ng. 4.3.2. S dng Yu cu: Truyn d liu t textbox c tn txtTenSinhVien (txtTenSinhVien nm trn form frmDynamicReport) sang mt report c tn reDynamicReport. Cch lm: Bc 1: Thit k report c ni dung nh sau (hon ton tng t nh bc 4 trn).

Trn Report c mt TextObject c tn txtTenSinhvien dng n nhn kt qu truyn t form sang. Bc 2: Thit k form c giao din nh sau (frmDynamicReport). frmDynamicReport c chia lm hai phn s dng SplitContainer. Phn th nht (Panel 1) cha mt textbox c tn txtTenSinhVien truyn d liu sang TextObject (txtTenSinhVien) trn Report. Button OK minh ha cho vic truyn d liu.

- 123 -

Project 2

Phn th 2 (Panel 2) cha iu khin crystalReportViewer1 hin th report thit k bc 1.

Bc 3: Truyn d liu t Textbox sang Report


using CrystalDecisions.CrystalReports; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.CrystalReports.Engine.Migration; namespace CrystalReport2008 { public partial class frmDynamicReport : Form { private void btOK_Click(object sender, EventArgs e) { crDynamicReport rpt = new crDynamicReport(); //Truyn d liu ((TextObject)rpt.ReportDefinition.ReportObjects["txtTenSinhVien"]).Text = txtTenSinhVien.Text; //Refresh data crystalReportViewer1.ReportSource = rpt; crystalReportViewer1.RefreshReport(); } } }

- 124 -

Project 2

Sau khi nhn button OK ta s c kt qu nh bn di.

- 125 -

You might also like