You are on page 1of 247

B GIO DC V O TO TRNG I HC S PHM TP.

HCM Khoa Ton Tin hc -------------

Slide bi ging

LP TRNH NH WINDOWS FORMS (C#)


Ging vin: Lng Trn Hy Hin Email: hienlth@hcmup.edu.vn

TP.HCM 09/2009 Version 1.0

Gii thiu mi trng lp trnh VS 2005


Lng Trn Hy Hin www.fit.hcmup.edu.vn/~hienlth

Ch
Ci t mi trng VS 2005/2008 To ng dng mu Thay i thng tin ng dng S dng th vin MSDN Build/Run 1 ng dng. Thao tc trn mn hnh View

Slide 2

Ci t VS 2005/2008
Ci t VS 2005/2008 Ci t th vin MSDN 2005/2008

Ci t VS 2005/2008

Slide 3

Slide 4

Ci t VS 2005/2008

To ng dng mu
Bc 1: Chy mi trng .NET 2005

Slide 5

Slide 6

To ng dng mu
Bc 2: To 1 project

To ng dng mu

Slide 7

Slide 8

To ng dng mu
Cu trc 1 ng dng (Solution)

To ng dng mu
Cu trc 1 Project

Solution
Project 1 Project 2 Project 2

Exam01
ConsoleApplication1

Project 1 Properties References Exam01


AssemblyInfo file - .NET Library Project - .NET Framework Assembly - COM Library - 3rd Party Library Assembly

Exam01: ng dng Windows Form ConsoleApplication1: ng dng Console


Slide 9

Th mc Class files

Class files
Slide 10

To ng dng mu
Solution View: Xem cu trc ng dng

To ng dng mu
Solution view

Slide 11

Slide 12

To ng dng mu
Class view :
Xem cch t chc bn trong ca 1 ng dng

To ng dng mu
Class View:
View Class View

Solution
Project Preferences Namespace Namespace Class Class
Slide 13 Slide 14

(Xem namespace, classes ca nhng references assembly)

To ng dng mu

Thay i thng tin ng dng


M file AssemblyInfo.cs Thay i cc thng tin c bn
Assembly title AssemblyDescription AssemblyCompany AssemblyProduct AssemblyCopyright

Slide 15

Slide 16

Thay i thng tin ng dng

Thm 1 project vo trong solution


M view Solution Nhn chut phi ln tn solution Chn Add \ New Project

Slide 17

Slide 18

Thm 1 item bt k vo project


M view solution Nhn chut phi project cn thm 1 item Chn Add \ New Item

Thm 1 item bt k vo project

Slide 19

Slide 20

Cc loi Project quan tm


Console Application Project Window Application Project

Console Project
Project Template l Console Application Chy trn mi trng DOS Cc lp s dng: System.Console
Console.Write() : Dng xut ra mn hnh gi tr. V d 1/ System.Write(Hello World); 2/ int x = 10; System.Console.Write(x); 3/ int x = 10, y = 20; System.Console.Write({0} + {1} = {2}, x, y, x+y);
Slide 21 Slide 22

Console Project
Console.WriteLine(): In v xung hng Console.Read() : c tng k t v tr v m ASCII ca k t : V d: int kt = Console.Read(); //Nhp a th kt=97. Console.ReadLine(): c mt chui k t
Slide 23

Console Project
V d: string str = Console.ReadLine(); //c chui d liu Console.Write(str.Length); //In chiu di ca chui for (int i = 0; i < str.Length; i++) //Xut tng k t Console.Write(str[i]); int x = int.Parse(str); //p kiu chui v s nguyn Console.Write(x);
Slide 24

Window Application Project


Project Template l Windows Application L ng dng s dng cc control nh Window Form, TextBox, Button, ListBox, Sp xp cc control textbox, button, listview, ln window form th hin giao din giao tip vi ngi dng. Khi to xong ng dng Windows Application, ta s c 1 view Toolbox cha cc controls c th s dng trong Project ny ( xem view Slide 25 Toolbox chn Menu View \ Toolbox)

Window Application Project

Slide 26

Window Application Project


xem thuc tnh ca ca control chn (M view Properties bng cch Menu View \ Properties Window) Nhn chut phi ln control (nh Textbox, button, ..) v chn Properties, khi mn hnh Properties ca control ny s hin ra.

Window Application Project


Mi control s c xc nh bng thuc tnh Name. Thuc tnh ny dng xc nh control khi lp trnh Lu : Cn t tn Name sao cho gi nh
Control Textbox Button Label
Slide 27

Tip u ng Txt V d: txtHoTen, txtTuoi Btn V d: btnOK, btnCancel Lbl V d: lblThongBao

Biu tng

Slide 28

Window Application Project


Cc thuc tnh chung: Name: nh danh cho control Text: Xut dng text thng tin control cho ngi dng S kin: Button c s kin Click, pht sinh khi ngi dng click vo button

Window Application Project


Mt window form c 2 view:
Design View: Dng thit k giao din Code View: Dng lp trnh trn form (Xc nh cc control trn design view thng qua thuc tnh Name ca tng control)

Slide 29

Slide 30

Window Application Project


xem view ca From: M view solution, nhn chut phi ln Form, chn View Code hoc View Designer

Window Application Project


View Properties gip xem cc thuc tnh Properties ca control nh mu sc, font, layout, v s kin Event (Click, double click, changed, focus, keypress,..)

Slide 31

Slide 32

Window Application Project


- Sau khi click vo biu tng hnh sm st, ta s thy c danh sch cc s kin ca control ang xt - Chn s kin mun pht sinh v nhn double click vo, khi VS s pht sinh hm x l s kin (Dng View Code xem code pht sinh)
Slide 33

Window Application Project


V d:

Slide 34

Window Application Project


Bt s kin Click ca nt button XuLy
Nhn chut phi vo nt button Chn Properties Nhn vo nt biu tng sm st Chn dng s kin Click Double click vo dng ny (Khi VS s pht sinh hm bt s kin Click ca nt button)

Window Application Project


Hm bt s kin Click ca button XuLy

Slide 35

Slide 36

Window Application Project

Tham kho
Slide bi ging C#, H KHTN TpHCM H Hon Kim Slides C# Slides, Aptech

Slide 37

Slide 38

Ni dung

Khi nim c bn C#
Lng Trn Hy Hin hienlth@hcmup.edu.vn

Gii thiu C# Nhng c s ngn ng C# Cu trc Lp v i tng Tha k v a hnh Giao din Array, Indexer v Collection X l li & exception (bit l)
Slide 2

Gii thiu C#
C# l mt ngn ng n gin:
Loi b nhng phc tp c trong Java hay C++ nh macro, template, a k tha, virtual base class Ging v din mo c php C v C++ nhng c ci tin n gin hn (V d : :: , . , ch cn .

Gii thiu C#
C# l ngn ng hng i tng:
ng gi (encapsulation) K tha (inheritance) a hnh (polymorphism)

C# l mt ngn ng mnh m v mm do:


Tu thuc vo bn thn ngi dng. Khng c gii hn bn cht ngn ng. To cc ng dng ho, x l vn bn, trnh bin dch cho cc ngn ng khc v.v
Slide 4

C# l mt ngn ng hin i:
C y cc tnh nng : X l ngoi l, thu gom b nh t ng, kiu d liu an ton, bo mt m Slide 3 ngun

Gii thiu C#
C# c t t kho :

Nhng c s ngn ng C#
Cc ghi ch : // (1 dng) , /* (nhiu dng) */ #region : T kho using: gip s dng lp c sn ca khng gian tn no tin li hn
VD : using System.IO; T s dng c cc lp lm vic vi lung d liu, tp tin, th mc a v.v

ng dng dng console:


Nhp: string sInput ; sInput = System.Console.ReadLine(); (chuyn kiu: System.Convert.To????(sInput) ) Xut: System.Console.WriteLine(KQ = {0}, sInput);
Slide 6

Cu trc 1 chng trnh C#

Nhng c s ngn ng C#
Phn bit ch hoa ch thng C cc kiu :
Dng sn : byte, char, sbyte, int, float, double Hng : const int PI = 3.1416; Lit k : enum Ngay {Hai,Ba,Tu,Nam,Sau,Bay,CN};

Cu lnh : if else, switch, for, while, goto


foreach: vng lp duyt tt c cc phn t ca mng, tp hp VD : int[] intarray; intarray = new int[5]; foreach(int i in intarray) Console.WriteLine(i.ToString());
Slide 7 Slide 8

Khai bo bin, hng


Khai bo bin:
int i; i = 0; int x = 10; y = 20; bool b = true;

Phm vi hot ng ca bin


for (int i = 0; i < 10; i++) { Console.WriteLine(i); } // bin i ra khi phm vi // Chng ta c th khai bo thm bin i y for (int i = 9; i >= 0; i--) { Console.WriteLine(i); Slide 10 } // bin i ra khi phm vi y

Khai bo hng:
const int a = 20;

Slide 9

Phm vi hot ng ca bin (tt)


int j = 20; for (int i = 0; i < 10; i++) { int j = 30; // khng th thc thi Console.WriteLine(j + i); }

Kiu d liu
Value Type - Kiu d liu c bn: kiu d liu khc lp i tng Reference Type - Kiu tham chiu: kiu d liu l lp i tng

- j vn cn trong phm vi

Slide 11

Slide 12

Value type s nguyn


Name byte ushort uint ulong CTS Type System.Byte System.UInt16 System.UInt32 System.UInt64 Description 8-bit signed integer 16-bit signed integer 32-bit signed integer 64-bit signed integer Range (min:max) 0:255 (0:28-1)

Value type s nguyn


Name sbyte CTS Type System.SByte Description Range (min:max) 8-bit signed -128:127 (-27:27-1) integer 16-bit signed integer 32-bit signed integer 64-bit signed integer -32,768:32,767 (-215:215-1)

short

System.Int16

0:65,535 (0:216-1) 0:4,294,967,295 (0:232-1) 0:18,446,744,073, 709,551,615(0: 264-1)


int System.Int32

-2,147,483,648:2,147,483,647 (-231:231-1)

long

System.Int64

-9,223,372,036,854,775,808: 9,223,372,036,854,775,807 (-263:263-1)

13

14

Value type s thc


Name CTS Type Description
32-bit single-precision 7 floating- point 64-bit double-precision 15/16 floating- point 128-bit high precision 28 decimal notation

V d
Significant Figures Range (approxi mate)
1.5 10-45 to 3.4 1038 5.0 10-324 to 1.7 10308 1.0 10-28 to 7.9 1028

Float

System.Single

Double decimal

System.Double System.Decimal

long x = 0x12ab;// ghi theo hexa uint ui = 1234U; long l = 1234L; ulong ul = 1234UL; float f = 12.3F; decimal d = 12.30M ; //c th vit decimal d = 12.30m;

15

Slide 16

Value type - Kiu Boolean & char


Name Bool CTS Type System.Boolean Value true or false

Cc k t escape thng dng


Escape Sequence \' \" \\ \0 \a \b \f \n \r \t \v Character Single quote Double quote Backslash Null Alert Backspace Form feed New line Carriage return Tab character Vertical tab

char

System.Char

Represents a single 16-bit (Unicode) character

Reference Type
Lp i tng Object (System.Object): l lp tru tng, l lp cha ca tt c cc lp. Khi nh ngha mt lp A. Mc nhin A s ly Object lm lp cha. Reference Type:
Kiu lp: Object, String, CHocSinh, CLopHoc,

Namespace
Namespace cung cp cho cch t chc quan h gia cc lp v cc kiu khc. Namespace l cch m .NET trnh n vic cc tn lp, tn bin, tn hm trng tn gia cc lp lp.
namespace CustomerPhoneBookApp {
using System; public struct Subscriber { // Code for struct here... }

Slide 20

Nhng c s ngn ng C#
To vng tn (namespace)

Namespace
T kho using gip gim vic phi g nhng namespace trc cc hm hnh vi hoc thuc tnh. VD: using Wrox.ProCSharp; Ta c th gn b danh cho namespace C php : using alias = NamespaceName;

Slide 21

Slide 22

Console I/O
Console.Write() - Vit mt gi tr ra ca s window Console.WriteLine() - tng t trn nhng s t ng xung hng khi kt thc lnh Console.ReadLine() c mt chui t console

Console I/O (tt)


V d:
string s = Console.ReadLine(); Console.WriteLine(s); int i = 10; int j = 20; Console.WriteLine("{0} plus {1} equals {2}", i, j, i + j);

Console I/O (tt)


V d: nhp s nguyn v s thc int n; string s = Console.ReadLine(); n = int.Parse(s); double f; s = Console.ReadLine(); f = double.Parse(s);

Cu lnh iu kin
Cu lnh iu kin:
if: ging C/C++ switch: ging C/C++

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Vng lp
Vng lp:
do while: ging C/C++ while: ging C/C++ for: ging C/C++ foreach: khc C/C++

Cc cu trc iu khin

V d foreach: foreach (int temp in arrayOfInts) { Console.WriteLine(temp); }

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc cu trc iu khin

Cc ton t
Category Arithmetic Logical String concatenation Increment and decrement Bit shifting Comparison Assignment Operator +-*/% & | ^ ~ && || ! + ++ -<< >> == != < > <= >= = += -= *= /= %= &= |= ^= <<= >>=

Cc ton t (tt)
Category Member access (for objects and structs) Indexing (for arrays and indexers) Cast Conditional (the Ternary Operator) Object Creation Type information Overflow exception control Indirection and Address Operator . [] () ?: new sizeof (unsafe code only) is typeof as checked unchecked * -> & (unsafe code only) []

Cc ton t (tt)
Shortcut Operator x++, ++x x--, --x x += y x -= y x *= y x /= y Tng ng x=x+1 x=x-1 x=x+y x=xy x=x*y x=x/y

Cc ton t (tt)
Shortcut Operator x %= y x >>= y x <<= y x &= y x |= y x ^= y Tng ng x=x%y x = x >> y x = x << y x=x&y x=x|y x=x^y

Phng thc
Khai bo phng thc (hm) Truyn tham s dng in () Truyn tham s dng out Truyn tham s dng ref

Khai bo phng thc


[modifiers] return_type MethodName([parameters]) { // Thn phng thc } V d: public static void Xuat(StrHocSinh hs) { Console.Write("Ma so: {0}. Ho ten: {1}", hs.MaSo, hs.HoTen); //Cau lenh xuat hoc sinh }

Phng thc dng in


Thn phng thc ch tham kho gi tr ca tham s khng thay i gi tr ca tham s V d: public static void Xuat(StrHocSinh hs) { Console.Write("Ma so: {0}. Ho ten: {1}", hs.MaSo, hs.HoTen); //Cau lenh xuat hoc sinh } Gi hm trong hm Main: Xuat(hs);

Phng thc dng out


Thn phng thc cp pht (khi to) gi tr ca tham s trc khi s dng. Ra khi hm gi tr ca tham s thay i. V d: public static void Nhap(out StrHocSinh hs) { hs = new StrHocSinh(); //Cau lenh nhap hoc sinh } Gi trong hm Main: Nhap(out hs);

Phng thc dng ref


Ra khi hm gi tr ca tham s s thay i V d:
public static void TinhDiemTrungBinh(ref StrHocSinh hs) { hs.DTB = (hs.Toan+ hs.Van)/2; } Gi trong hm Main:

Mt s phng thc ton hc


Math.Abs(biu thc s) Math.Sqrt(biu thc s) Math.Ceiling(biu thc s) Math.Floor(biu thc s) Math.Max(biu thc s) Math.Min(biu thc s) Math.Round(biu thc s) hng s Math.PI v Math.E

TinhDiemTrungBinh(ref hs);

Mt s phng thc ton hc


V d
float R=12.6; float S = R*R*Math.PI; int a,b,c,d; //Nhp 4 s a,b,c v d Console.Write(Math.Max(a,Math.Max(b,Math.Max(c,d))));

Chuyn i kiu
Chuyn i kiu chui sang cc kiu d liu khc
<Kiu d liu>.Parse(chui) V d: string s; s ="123.45"; float f = Single.Parse( s); double d = Double.Parse(s2); short i = Int16.Parse(s); int j = Int32.Parse(s); long k = Int64.Parse(s);

Chuyn i kiu
Chuyn i kiu d liu s sang kiu chui
Nguyn tc <tn bin>.ToString( ) ; V d
int i = 231 ; float j = 34.56f ; //ngm nh l double !!! String kq; kq = " i= "+ i.ToString() + " va j = "+ j.ToString(); Console.WriteLine(kq);

Mt s phng thc ca kiu chui - String


<bin chui>.ToLower( ); <bin chui>.ToUpper( ); <bin chui>.Substring(v tr, s k t); <bin chui>.Length ; //khng c ( v ) <bin chui>[ v tr ]

V d
string S = hello woRld; string u = S.ToUpper(); char c = S[1]; // c = e int l = S.Substring(0,4).Length ; //thay v ghi (S.Substring(0,4)).Length

Mt s phng thc ca kiu chui - String


IndexOf(), IndexOfAny(), LastIndexOf(), LastIndexOfAny(): tm kim chui k t, hoc mt phn chui k t trong mt xu cho trc. Replace(): thay th mt mu trong xu bi mt chui k t khc. Split(): ct mt xu thnh cc xu con da theo k t phn cch cho trc. Trim(), TrimEnd(), TrimStart(): xo cc k t trng u, cui xu. Insert(), Remove(): chn vo, xo i mt xu con trong mt xu cho trc. StartsWith(), EndsWith(): kim tra xem xu c bt u, kt thc bi mt xu khc.

Thao kho v s dng thm


Lp System.Int32, System.Single, System.String, System.Character, System.Boolean

Mng
Mng 1 chiu Mng 2 chiu Mng nhiu chiu Mng Jagged Array

Mng 1 chiu
C php: type[ ] array-name; V d: int[] integers; // mng kiu s nguyn integers = new int[32]; integers[0] = 35;// phn t u tin c gi tr 35 integers[31] = 432;// phn t 32 c gi tr 432 string[] myArray = {"first element", "second element", "third element"};

Lm vic vi mng 1 chiu


Ly kch thc mng: int arrayLength = myIntegers.Length; Sp xp mng s nguyn: Array.Sort(myIntegers); o ngc mng: Array.Reverse(myArray); Duyt mng:

Mng 2 chiu
C php: type[,] array-name; V d: int[,] myRectArray = new int[2,3]; int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; //mng 4 hng 2 ct string[,] beatleName = { {"Lennon","John"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Starkey","Richard"} };

Lm vic vi mng 2 chiu


Duyt mng: double [, ] matrix = new double[10, 10]; for (int i = 0; i < 10; i++) { for (int j=0; j < 10; j++) matrix[i, j] = 4; }

Mng nhiu chiu


V d: string[,,] my3DArray;

Mng jagged - Mng rng ca


Mt loi th 2 ca mng nhiu chiu trong C# l Jagged array. L mng m s phn t trong mi chiu c th khc nhau V d: int[][] a = new int[3][]; a[0] = new int[4]; a[1] = new int[3]; a[2] = new int[1];

Lm vic vi Jagged Array


Khi to ma trn n*m Jagged Array: int[][] a = new int[n][]; for(int i = 0; i < n; i++) { a[i] = new int[m]; for (int j = 0; j < m; j++) { a[i][j] = i*n +j; } }

Mt s lu khi s dng mng


- S dng thuc tnh Length ca mng thay v phi nm s phn t trong mng - Cu trc lp foreach hu hiu hn l dng for !!! - Ly s chiu 1 mng : s dng thuc tnh rank

Struct
Struct l kiu Value Type khng phi l Reference Type c th khng cn s dng t kha new. Trong Struct c th nh ngha cc phng thc (ging Class). Trong Struct, trnh bin dch lun lun cung cp mt constructor khng tham s mc nh, v khng cho php thay th. Struct khng h tr tha k.

Struct
struct StrHocSinh { public int MaSo; public string HoTen; public double Toan; public double Van; public double DTB; public StrHocSinh(int ms, string ht, double t, double v) { MaSo = ms; HoTen = ht; Toan = t; Van = v; DTB = (t+ v)/2; } }

Cu Trc

Cch dng : Location hpt = new Location(200,300); Console.WriteLine(KQ = {0}, hpt);

Slide 68

Lp v i tng

OOP in C#
Lng Trn Hy Hin hienlth@hcmup.edu.vn http://fit.hcmup.edu.vn/~hienlth

Khai bo, to dng v s dng lp

Slide 69

Slide 70

Thuc tnh truy cp


Thuc tnh Public Private Protected Internal Protected internal Gii hn truy cp Khng hn ch Ch trong lp (mc nh) Trong lp v lp con Trong chng trnh Trong chng trnh v lp con

Lp v i tng
Phng thc thit lp (Constructor) Phng thc thit lp sao chp Phng thc hu S dng using (hm hu t ng gi trong thi gian sm nht)
Slide 72

Slide 71

Phng thc khi to


Hm to mc nh: ging C++ Hm to c tham s: tng t C++ nhng khng c tham s mc nh
public class MyClass { public MyClass() // zero-parameter constructor { // construction code } public MyClass(int number) // another overload { // construction code } }

Phng thc khi to


C# khng cho php khi to sao chp Ch vi hm to c tham s: hy lun lun c hm to mc nh trnh li bin dch.

Slide 73

Slide 74

Phng thc hy
C# cung cp c ch thu dn (garbage collection) v do vy khng cn phi khai bo tng minh cc phng thc hy. Phng thc Finalize s c gi bi c ch thu dn khi i tng b hy. Phng thc kt thc ch gii phng cc ti nguyn m i tng nm gi, v khng tham chiu n cc i tng khc.
Slide 75

Phng thc hy (tt)


~Class1() { // Thc hin mt s cng vic } Class1.Finalize() { // Thc hin mt s cng vic base.Finalize(); }

Slide 76

Hm hy
class MyClass : IDisposable {
public void Dispose() { // implementation }

Hm hy (tt)
Lp s thc thi giao din System.IDisposable, tc l thc thi phng thc IDisposable.Dispose(). Khng bit trc c khi no mt Destructor cgi. C th ch ng gi thu dn rc bng cch gi phng thc System.GC.Collect(). System.GC l mt lp c s .NET m t b thu gom rc v phng thc Collect() dng Slide 78 gi b thu gom rc.

Slide 77

Con tr this
T kha this dng tham chiu n th hin hin hnh ca mt i tng
public void SetYear( int Nam) {
this.Nam = Nam;

Thnh vin static


Thnh vin tnh c xem nh mt phn ca lp. C th truy cp n thnh vin tnh ca mt lp thng qua tn lp C# khng cho php truy cp n cc phng thc tnh v cc bin thnh vin tnh thng qua mt th hin. Khng c friend Phng thc tnh hot ng t nhiu ging Slide 80 nh phng thc ton cc

Thamchiu this ny c xem l con tr n n tt cc phng thc khng c thuc tnh tnh trong mt lp.
Slide 79

Tham chiu
Tham chiu
Trong lp Time

Thuc tnh (Property)


ng gi d liu vi Property
VD: Lp ngi c chui m_sHoten Ci t Property HoTen:
public string HoTen {
get { return m_sHoTen; } set { m_sHoTen = value; value; }

S dng

S dng Property:
Nguoi A = new Nguoi(); A.HoTen = Lng Trn Hy Hin; n; string tentoi = A.HoTen; //t gi tr //ly gi tr

Slide 81

Slide 82

Thuc tnh (Property)


Nu cu lnh Property ch c on lnh get thuc tnh ch c (Read Only) Nu cu lnh Property ch c on lnh set thuc tnh ch ghi (Write Only)

Hng i tng
public class BankAccount{ protected string ID; protected string Owner; protected decimal _Balance; public BankAccount(string ID, string Owner) { this.ID = ID; Fields this.Owner = Owner; this._Balance = 0; } public void Deposit(decimal Amount) { _Balance+=Amount; } public void Withdraw(decimal Amount) { _Balance-=Amount; } public decimal Balance { get { return _Balance; } } }

Thuc tnh ch c
Slide 84

Slide 83

Hng i tng
class Program {
static void Main(string[] args) { BankAccount acc= new Account(1606201007676", Hy Hien"); acc.Deposit(1000); acc.Withdraw(100); Console.WriteLine("Balance: {0}", acc.Balance); //myAcct.Balance=10000; Console.ReadLine(); }

Chng hm (overload)
Khng chp nhn hai phng thc ch khc nhau v kiu tr v. Khng chp nhn hai phng thc ch khc nhau v c tnh ca mt thng s ang c khai bo nh ref hay out.

}
85 Slide 86

S tha k
1 class ch c th k tha t 1 class c s 1 class c th k tha t nhiu Interface T kha sealed c dng trong trng hp khai bo class m khng cho php class khc k tha.

a hnh
to mt phng thc h tnh a hnh:
khai bo kha virtual trong phng thc ca lp c s

nh ngha li cc hm virtual, hm tng ng lp dn xut phi c t kha Override

Slide 87

Slide 88

Phng thc Override


class MyBaseClass { public virtual string VirtualMethod() { return "This method is virtual and defined in MyBaseClass"; } } class MyDerivedClass : MyBaseClass { public override string VirtualMethod() { return "This method is an override defined in MyDerivedClass"; } Slide 89 }

Gi cc hm lp c s
C php: base.<methodname>() class CustomerAccount { public virtual decimal CalculatePrice() { // implementation } } class GoldAccount : CustomerAccount { public override decimal CalculatePrice() { return base.CalculatePrice() * 0.9M; } }

Slide 90

Lp c s tru tng
abstract class Building { public abstract decimal CalculateHeatingCost(); // abstract method }

Abstract class
public abstract class BankAccount { public abstract bool IsSufficientFund(decimal Amount); public abstract void AddInterest(); }

Mt lp abstract khng c th hin v mt phng thc abstract khng c thc thi m phi c overriden trong bt k lp tha hng khng abstract no Nu mt lp c phng thc abstract th n cng l lp abstract Mt phng thc abstract s t ng c khai bo Slide 91 virtual.

Khng th new mt abstract class Ch c lp abstract mi c th cha abstract method


Slide 92

Lp Object
L lp c bn ca .NET, mc nh mi lp nu khng ni g th hiu l k tha t Object

Giao din - Interface


Chc nng So snh bng nhau gia 2 i tng

Phng thc Equal() GetHashCode()

Cho php nhng i tng cung cp ring nhng hm bm cho s dng tp hp GetType() Cung cp kiu ca i tng ToString() Cung cp chui th hin ca i tng Finalize() Dn dp cc ti nguyn MemberwiseClone() To mt bn sao t i tng Slide 93

Mt interface c nh ngha nh mt hp ng, do , nu mt class hoc mt struct ci t 1 interface th phi ci t tt c cc tnh nng c khai bo trong interface . C th hiu interface nh l mt lp tru tng hon ton (tt c cc phng thc u tru tng). Khi mt class ci t 1 interface th coi nh n c k tha t lp tru tng ni trn. Slide 94

Giao din
To mt giao din

Giao din
Cch s dng :

M rng giao din & Kt hp giao din

Ton t is: is: kim tra xem i tng c c h tr giao din hay khng (VD doc is IStorable) Ton t as: as: Kim tra v gn

Slide 95

Slide 96

Mt s giao din chun sau

X l li & exception (ngoi l)


Exception cha cc thng tin v s c bt thng ca chng trnh Phn bit bug, bug, error v exception Chng trnh d khng cn bug hay error vn c th cho ra cc exception (truy cp, b nh) C th dng cc i tng exception c sn, t to exception, hay bt exception trong exception (trong trng hp sa li)
Slide 97 Slide 98

X l li & exception (ngoi l)


Cu trc x l li

X l li
Chng trnh no cng c kh nng gp phi cc tnh hung khng mong mun
ngi dng nhp d liu khng hp l a cng b y file cnm b kha i s cho hm khng hp l

X l nh th no?
Mt chng trnh khng quan trng c th dng li Chng trnh iu khin khng lu? iu khin my bay? Slide 100

Slide 99

X l li truyn thng
X l li truyn thng thng l mi hm li thng bo trng thi thnh cng/tht bi qua mt m li
Bin ton cc (chng hn errno) Gi tr tr v
int remove ( const char * filename );

Exception (ngoi l)
Exception ngoi l l c ch thng bo v x l li gii quyt c cc vn k trn Tch cphn x l li ra khi phn thut ton chnh Cho php 1 hm thng bo v nhiu loi ngoi l
Khng phi hm no cng phix l li nu c mt s hm gi thnh chui, ngoi l ch ln c x l ti mt hm l

Thams ph l tham chiu


double MyDivide(double numerator, double denominator, int& status);
Slide 101

Khng th b qua ngoi l,nu khng, chng trnh s kt thc Tm li, c ch ngoi l mm do hn kiu x l li truyn thng
Slide 102

X l ngoi l
C# cho php x l nhng li v cc iu kin khng bnh thng vi nhng ngoi l. Ngoi l l mt i tng ng gi nhng thng tin v s c ca mt chng trnh khng bnh thng Khi mt chng trnh gp mt tnh hung ngoi l mt ngoi l. Khi mt ngoi l c to ra, vic thc thi ca cc chc nng hin hnh s b treo cho n khi no vic x l ngoi l tng ng c tm thy Mt trnh x l ngoi l l mt khi lnh chng trnh c thit k x l cc ngoi l m chng trnh pht sinh
Slide 103

X l ngoi l
Nu mt ngoi l c bt v c x l:
chng trnh c th sa cha c vn v tip tc thc hin hot ng in ra nhng thng ip c ngha in ra nhng thng ip c ngha

Slide 104

Exception

Pht biu throw


Pht biu throw dng pht ra tn hiu ca s c bt thng trong khi chng trnh thc thi vi c php: throw [expression];

Slide 105

Slide 106

Pht biu throw (tt)


V d 01:
using System; public class ThrowTest { public static void Main() { string s = null; if (s == null) { throw(new ArgumentNullException()); } Console.Write("The string s is null"); // not executed } }

V d 02 - Throw

Slide 107

Slide 108

V d 02 Throw (tt)

Pht biu try catch


Trong C#, mt trnh x l ngoi l hay mt on chng trnh x l cc ngoi l c gi l mt khi catch v c ra vi t kha catch.. Vd: cu lnh throw c thc thi bn trong khi try, v mt khi catch c s dng cng b rng mt li c x l

Slide 109

Slide 110

V d:
class Test { static void Main(string[] args) { Test t = new Test(); t.TestFunc(); } public double DoDivide(double a, double b) { if (b == 0) throw new System.DivideByZeroException(); if (a == 0) throw new System.ArithmeticException(); return a / b; } //Cn tip }

V d (tt)
public void TestFunc() { try { double a = 5; double b = 0; Console.WriteLine("{0} / {1} = {2}", a, b, DoDivide(a, b)); } catch (System.DivideByZeroException) { Console.WriteLine("DivideByZeroException caught!"); } catch (System.ArithmeticException) { Console.WriteLine("ArithmeticException caught!"); } catch{ Console.WriteLine("Unknown exception caught"); } }

Slide 111

Slide 112

Cu lnh finally
on chng trnh bn trong khi finally c m bo thc thi m khng quan tm n vic khi no th mt ngoi l c pht sinh
try
try-block

Cu lnh finally (tt)


1. 2.

Dng thc thi bc vo khi try. Nu khng c li xut hin,


tin hnh mt cch bnh thng xuyn sut khi try, v khi n cui khi try, dng thc thi s nhy n khi finally (bc 5), nu mt li xut hin trong khi try, dng thc thi s nhy n khi catch (bc tip theo)

catch
catch-block

3. 4.

finally
finally-block
Slide 113

5.

Trng thi li c x l trong khi catch vo cui ca khi catch, vic thc thi c chuyn mt cch t ng n khi finally Slide 114 khi finally c thc thi

X l li & exception (ngoi l)


i tng Exception :

Tham kho
Slide bi ging C#, H KHTN TpHCM H Hon Kim Slides C# Slides, Aptech

To ngoi l :

Slide 115

Slide 116

To WinForm App t VS. 2005

Windows Form
Lng Trn Hy Hin hienlth@hcmup.edu.vn

C ch x l s kin code behind

H tr WYSISYG cho GUI design

Nhanh chng & d dng to UD Windows Form

Slide 2

To WinForm App t VS. 2005


To project : New Project

Window Form

To

project : Chn ngn ng C# + Window Application + Name + Location + Solution Name


Slide 3 Slide 4

Window Form
Namespace: System.Windows.Forms
3 4

Window Form
ch Design Form ( 1 ): ToolBox 2 cho ta chn a vo Form tt c cc control mong mun Solution Explorer: cho bit cu trc mt solution Properties: cho bit thuc tnh ca tng control Error List: hin th cc danh sch li khi bin dch F5: Start Debugging; Ctrl + F5: Start Without Debugging

Slide 5

Slide 6

Properties
1 2

Hin th cc thuc tnh ca control v cc Events tng ng (nhp p chn event )


3

Slide 7

Slide 8

Form
Thm mi mt Windows Form

Thm control vo form


Ko th control vo form

Slide 9

Slide 10

Code ca phn design


Phn code thit k Form1 c to t ng
Form1.Designer.cs

Code ca phn design


InitializeComponent

To i tng

Cha code khi to control

Khai bo cc i tng control trn Form1


Slide 11

Ln lt khai bo cc thuc tnh cho cc control

Slide 12

Code ca phn design


InitializeComponent

Sa thuc tnh ca control

i tn thnh txtNum1 a cc control vo danh sch control ca Form1

Thay i cc gi tr qua ca s properties -> VS t cp nht code

Slide 13

Slide 14

Phn x l
Khi click vo Add -> cng 2 gi tr v xut kt qu Thc hin
Button Add cung cp s kin click Form s c cnh bo khi Add c click Form s ly d liu t 2 textbox v cng -> kt qu

Khai bo event handler


Kch p vo button Add trn mn hnh thit k cho php to event handler cho s kin ny. event
DClick

C ch event
Button a ra s kin click: i tng publish Form quan tm n s kin click ca button, Form c s phn x l ngay khi button click. Phn x l ca form gi l Event Handler Form ng vai tr l lp subscribe
Slide 15

Ca s qun l event ca BtnAdd

Slide 16

Khai bo event handler

Khai bo event handler


InitializeComponent

Event handler cho button Add

S kin click

Trnh x l c gi khi event xy ra

Delegate chun cho event handler

Cng signature method vi System.EventHandler


Slide 17 Slide 18

Vit phn x l
Phn x l ca Form1 khi button click
Ly gi tr ca 2 textbox, cng kt qu v xut ra MeesageBox

Tng quan controls


Control l mt thnh phn c bn trn form C cc thnh phn
Thuc tnh Phng thc S kin

Tt c cc control cha trong namespace: System.Windows.Forms

Slide 19

Slide 20

Tng quan controls


Mt s thuc tnh ca control
Text: m t text xut hin trn control Focus: phng thc chuyn focus vo control TabIndex: th t ca control nhn focus
Mc nh c VS.NET thit lp

Thuc tnh controls


Common Properties Description
BackColor BackgroundImage ForeColor Enabled Focused Font TabIndex TabStop Text TextAlign
Slide 21

Mu nn ca control nh nn ca control Mu hin th text trn form Xc nh khi control trng thi enable Xc nh khi control nhn focus Font hin th text trn control Th t tab ca control Nu true, user c th s dng tab select control Text hin th trn form Canh l text trn control Xc nh hin th control

Enable: thit lp trng thi truy cp ca control Visible: n control trn form, c th dng phng thc Hide Anchor:
Neo gi control v tr xc nh Cho php control di chuyn theo v tr

Visible

Size: xc nhn kch thc ca control

Form Properties
Tn thuc tnh BackColor/ForeColor BackGroundImage AcceptButton CancelButton Controls nh nn Nt c chn kch hot s kin click khi ngi dng click Enter Nt c chn kch hot s kin click khi ngi dng click Esc Danh sch cc control con ca n. Cho php ngi dng thm hoc xa ng controls Chn loi window form m ca window form
Slide 23

Form Properties
ngha Tn thuc tnh AutoSize CauseValidation ngha Cho php ko dn form Cho php cc control con ca n c th pht sinh s kin Validate. Dng kim tra d liu hp l. Cho php Form hin trn tt c cc form khc {Normal, Minimized, Maximized}. Th hin ca Form khi xut hin Thit lp con tr chut Thit lp Icon ca form

Mu nn / Mu ch

TopMost WindowState Cursor Icon

FormBorderStyle Opacity

Form Method
Tn hm Show() ShowDialog() ngha Sau khi dialog hin ln, ngi dng c th chn focus vo control khc Sau khi dialog hin ln ngi dng khng th focus vo cc control khc. Kiu d liu tr v: DialogResult. ng Dialog ng dialog v tr v kt qu tng ng OK ng dialog v tr v kt qu tng ng Cancel.

Form Event
Tn hm Load() ngha S kin c kch hot khi Form load xong cc control. S kin ny c bt khi ngi dng mun khi to bin hoc gi tr trong Form S kin ny c gi khi Form thc hin v li. (Di chuyn chut, phng to, thu nh,..) (S trnh by chi tit trong GDI +) Cc s kin v phm Cc s kin chut
Slide 26

Paint()

Close() this.DialogResult = DialogResult.OK This.DialogResult = DialogResult.Cancel

KeyPress, KeyDown,.. MouseHover, MouseDown, MouseLeave

Form Event
Click Click DoubleClick KeyDown MouseHover Paint Resize
Slide 27

Control Layout - Anchor


None Sizable

FormBorderStyle

Fixed3D

FixedDialog

FixedSingle

Slide 28

Control Layout - Anchor


Khi FormBorderStyle = Sizable, form cho php thay i kch thc khi Runtime
S b tr ca control cng thay i!

Control Layout - Anchor


Button c neo bin tri V tr tng i vi bin tri khng i

S dng thuc tnh Anchor


Cho php control phn ng li vi thao tc resize ca form
Control c th thay i v tr tng ng vi vic resize ca form Control c nh khng thay i theo vic resize ca form

Cc trng thi neo


Left: c nh theo bin tri Right: c nh theo bin phi Top: c nh theo bin trn Bottom: c nh theo bin di
Slide 29

Button t do

Di chuyn tng ng theo kch thc mi

Slide 30

Control Layout - Anchor


Thit lp Anchor cho control

Control Layout - Anchor

Chn cc bin neo Bin c chn neo, mu m

Neo theo bn pha

Slide 31

Slide 32

Control Layout - Docking

Control Layout - Docking

Dock = None Top

Dock = Top

TextBox
Right Bottom Dock = Fill TextBox.Multiline = True

Left

Fill

Dock = Bottom

None
Slide 33 Slide 34

Cc lp c s
System.Windows.Forms.Control - cha chc nng c bn ca thao tc x l bn phm v nhp t chut v x l tin nhn window. System.Windows.Forms.ButtonBase - Lp ny h tr chc nng c bn ca mt nt System.Windows.Forms.TextBoxBase - cung cp chc nng v thuc tnh thng thung cho cc lp tha hng. C hai lp TextBox v RichTextBox s dng chc nng cung cp bi TextBoxBase. System.Windows.Forms.ScrollableControl - qun l s pht sinh v hin th ca cc thanh cun n ngi dng truy cp n gc ca mt hin th. System.Windows.Forms.ContainerControl - Lp ny qun l chc nng yu cu cho mt control hnh ng System.Windows.Forms.Panel - c th cha cc control thm vo, nhng khc vi lp ContainerControl, n phn loi cc control mt cch n gin. System.Windows.Forms.Form -To bt k loi ca s no: standard, toolbox, borderless, modal dialog boxes v multi-document interfaces. System.Windows.Forms.UserControl - to mt custom control n vic Slide 35 c dng trong mt ni phc tp trong mt ng dng hay t chc

Standard Control
Mt i tng control k tha trc tip / gin tip t System.Windows.Forms.Control C cc dng control sau:
iu khin thng thng:
Label, TextBox, Combobox, ListBox, CheckBox, RadioButton, Button

iu khin c bit :
Tooltip, HelpProvider, ErrorProvider, ProgressBar, ListView, TreeView, DateTimePicker, MonthlyCalender

iu khin Menu iu khin container :


GroupBox, TabControl, Panel v.v.
Slide 36

Standard Control
Buttons: Button, CheckBox, RadioButton Time and Date: DateTimePicker, MonthCalender Labels and Pictures: GroupBox, Lablel, LinkLabel, PictureBox Text editing: TextBox, RichTextbox, NumericUpDown, DomainUpDown Lists and Data: ListBox, ComboBox, ListView, TreeView, PropertyGrid, DataGrid Position and ProgressBar: HScrollBar , VScrollBar, TrackBar, ProgressBar Layout: Tab Control, Splitter, StatusBar, ToolBar
Slide 37

Label, Textbox, Button

Label
Trnh by, ch gii tiu C hai loi Label v LinkLabel
Thuc tnh thng dng Font Text TextAlign ForeColor Visible Font hin th ca text Ni dung text hin th Canh l text Mu text Trng thi hin th

TextBox
Cho php nhp d liu Hai dng l TextBox v MaskedTextBox Cc hnh thc nhp ca TextBox l : PasswordChar v Multiline MaskedTextBox: c nhiu dng c sn Numeric, Phone Number, Date, Time v.v Ly ni dung nhp : [ObjectName].Text

Slide 39

Slide 40

Textbox

Cc thuc tnh TextBox


Tn thuc tnh Text ngha Ly hoc thit lp gi tr ca textbox. y l thuc tnh th hin d liu m tt c cc control u c. Chiu di ti a ca TextBox Canh l ch trong TextBox Cho php TextBox c th nhiu hng K t hin trong textbox dng ** Chn on text c chn Ly v tr ca on text c chn Ch c, khng th thay i ni dung Text Slide 42

TextLength TextAlign Multiline PasswordChar SelectedText SelectionStart ReadOnly


Slide 41

Cc s kin TextBox
Tn thuc tnh ngha TextChanged S kin pht sinh khi ngi dng thay i ni dung text. Validating Khi mt focus th s kin ny pht sinh kim tra d liu hp l. Tham s: object sender, CancelEventArgs e KeyPress Bt s kin g phm Tham s: object sender, KeyPressEventArgs e
Slide 43

Button
Dng chut nhn thao tc C th show Icon trn button

Button
Thuc tnh thng dng Text Click Chui hin th trn b mt button Kch hot khi user kch vo button, khai bo mc nh khi ngi lp trnh kch p vo button trong mn hnh Design Slide 44 View ca Form. Event thng dng

Demo Label, TextBox, Button


Demo TextBox

Demo Label, TextBox, Button


Ch cho nhp s

Double click vo textbox to event handler cho event TextChanged

Chuyn thnh ch hoa S kin pht sinh khi textbox nhn focus v user nhn 1 phm
Slide 46

S kin KeyPress
Slide 45

MaskedTextBox

MaskEditBox - Thit lp gi tr Mask


Thnh phn mask ngha 0 S. Yu cu bt buc phi nhp s t 0-9 9 S hoc khong trng (Optional) # S hoc khong trng (Optional). C th nhp du + hoc L K t [a..z] hoc [A..Z] (Bt buc) ? K t [a..z] hoc [A..Z] (Khng bt buc) , n v phn ngn (1,234) Slide 48 . n v phn l (0.32)

Slide 47

Combobox, ListBox
Lit k danh sch phn t cho php ngi dng chn mt hay nhiu C cc thuc tnh chung quan trng sau : DataSource: chn tp d liu in vo iu khin (VD string [] , ArrayList l tp d liu a vo) SelectedText, SelectValue, SelectedItem, SelectedIndex ly gi tr hay i tng chn Thuc tnh ring: Combobox: DropDownStyle ( DropDown: cho php nhp thm chui ; DropDownList : ch cho php chn chui c ) ListBox: SelectionMode (True: cho php chn nhi u ) 49 Slide

Combobox
Combobox: chn Items thm d liu

Slide 50

ComboBox
Kt hp TextBox vi mt danh sch dng drop down Cho php user kch chn item trong danh sch drop down
Items
DropDownStyle ComboBox

ComboBox
DropDownStyle

Sorted
MaxDropDownItems AutoCompleteMode DropDownHeight

Text

Slide 51

Slide 52

ComboBox

ComboBox

B sung item trong mn hnh design view Slide 53

Mi khi kch chn mt item hin th item c chn trn MessageBox


Slide 54

ComboBox
AutoComplete

Listbox
G N

Tnh nng AutoComplete

AutoCompleteMode AutoCompleteSource

Slide 55

Slide 56

ListBox
Method & Event

ListBox
Thuc tnh Items cho php thm item vo ListBox

Method
ClearSelected GetSelected SetSelected FindString
ListBox

Event
SelectedIndexChanged SelectedValueChanged
Slide 57

Danh sch item

Cho php thm item trong mn hnh thit k form


Slide 58

ListBox
ListBox hin th dng Multi Column

ListBox
Demo ListBox

Hin th nhiu ct
Slide 59

Kim tra xem chui nhp c trong list box? - Nu c: select item - Ngc li: thm chui mi vo list box
Slide 60

ListBox
S kin SelectedIndexChanged
Mi khi kch chn vo item trong listbox s xa item c chn tng ng

CheckBox, RadioButton, CheckListBox

SelectedIndexChanged

Slide 61

iu khin thng thng


CheckBox, RadioButton:
cho php ngi dng chn mt hay nhiu gi tr thuc tnh Checked (true/false) kim tra xem c check chn hay khng thuc tnh Text (string) cho bit chn ni dung g.

CheckBox

CheckListBox: Kt hp checkbox trong ListBox trong trng hp c qua nhiu la chn

Slide 63

Slide 64

CheckBox
ThreeState = true : cho php thit lp 3 trng thi:
Checkstate = Indeterminate: khng xc nh CheckState= Checked: chn CheckState= Unchecked: khng chn

RadioButton

Cha chn

Slide 65

Slide 66

RadioButton

CheckListBox
Phng thc Add cho php thm d liu. Hoc dng Properties Items

Nhm RadioButton th 1 cha trong GroupBox1

Nhm RadioButton th 2 cha trong GroupBox2


Slide 67 Slide 68

CheckListBox
Thuc tnh c bn: Items S kin c bn: SelectedIndexChanged

CheckedListBox
MultiColumn = true
Cc item c t chc theo nhiu ct

Slide 69

Slide 70

CheckedListBox
S kin SelectedIndexChanged

GroupBox, Panel & Tab Control

Slide 71

GroupBox & Panel


B tr controls trn GUI GroupBox
Hin th mt khung bao quanh mt nhm control C th hin th mt tiu
Thuc tnh Text

GroupBox & Panel


M t GroupBox Thuc tnh thng dng Controls Text Danh sch control cha trong GroupBox. Caption ca GroupBox

Khi xa mt GroupBox th cc control cha trong n b xa theo Thit lp gi tr ca GroupBox s nh hng n cc control m n cha Lp GroupBox k tha t System.Windows.Forms.Control

Panel
Cha nhm cc control Khng c caption C thanh cun (scrollbar)
Xem nhiu control khi kch thc panel gii hn

Panel Thuc tnh thng dng Xut hin khi panel qu nh hin th ht AutoScroll cc control, mc nh l false Bin ca panel, mc nh l None, cc tham BorderStyle s khc nh Fixed3D, FixedSingle Danh sch control cha trong panel Controls

Slide 73

Slide 74

GroupBox & Panel


Minh ha GroupBox

GroupBox & Panel


Minh ha Panel
scroll

groupBox1 cha 2 control textBox1 v button1

textBox2 v button2 cha trong Controls ca Form

Slide 75

Slide 76

TabControl
Dng container cha cc control khc Cho php th hin nhiu page trn mt form duy nht Mi page cha cc control tng t nh group control khc.
Mi page c tag cha tn ca page Kch vo cc tag chuyn qua li gia cc page

TabControl
TabControl c thuc tnh TabPages
Cha cc i tng TabPage
TabPage

TabControl TabPage

ngha:
Cho php th hin nhiu control trn mt form Cc control c cng nhm chc nng s c t Slide 77 chc trong mt tab (page)
Slide 78

TabControl
Thuc tnh Appearance
Normal

TabControl
Thuc tnh, phng thc & s kin thng dng

Properties
TabPages
Buttons FlatButton

Method
SelectTab DeselectTab

TabCount SelectedTab Multiline SelectedIndex

Event
SelectedIndexChanged
Slide 80

Slide 79

TabControl
Thm/Xa TabPage
Kch chut phi

TabControl
Chnh sa cc TabPage
Chn thuc tnh TabPages ca TabControl S dng mn hnh TabPage Collection Editor chnh sa

Thm/Xa TabPage

Slide 81

Slide 82

TabControl
B sung Control vo TabControl
Chn TabPage cn thm control Ko control t ToolBox th vo TabPage chn
Chn TabPage cn thm

TabControl
S dng code thm cc TabPage vo TabControl
private void AddTabControl() { TabControl tabControl1 = new TabControl(); TabPage tabPageGeneral = new TabPage("General"); TabPage tabPageView = new TabPage("View"); tabControl1.TabPages.Add(tabPageGeneral); tabControl1.TabPages.Add(tabPageView); tabControl1.Location = new Point(20, 20); this.Controls.Add(tabControl1);
Slide 83

Slide 84

PictureBox & ImageList

PictureBox
S dng hin th nh dng bitmap, metafile, icon, JPEG, GIF. S dng thuc tnh Image thit lp nh lc design hoc runtime. Cc thuc tnh
Image: nh cn hin th SizeMode:
Normal StretchImage AutoSize CenterImage Zoom

Slide 86

PictureBox

ImageList
Cung cp tp hp nhng i tng image cho cc control khc s dng
5 pictureBox vi cc SizeMode tng ng

ListView TreeView

Cc thuc tnh thng dng


ColorDepth: su ca mu Images: tr v ImageList.ImageCollection ImageSize: kch thc nh TransparentColor: xc nh mu l transparent

Slide 87

Slide 88

ImageList
Cc bc s dng ImageList
Ko control ImageList t ToolBox th vo Form Thit lp kch thc ca cc nh: ImageSize B sung cc nh vo ImageList qua thuc tnh Images S dng ImageList cho cc control
Khai bo ngun image l image list va to cho control Thng l thuc tnh ImageList Thit lp cc item/node vi cc ImageIndex tng ng Vic thit lp c th mn hnh design view hoc code view
Slide 89

ImageList
To ImageList

Slide 90

ImageList
S dng ImageList trong ListView
listView1

ImageList
Thm Item

Khai bo ImageList cho ListView

Hin th dng small icon


Slide 91

Khai bo image cho item qua ImageIndex Slide 92

ImageList
Demo
Mi item s c nh theo ng th t ImageIndex c khai bo trong ImageList

NumericUpDown & DomainUpDown

Slide 93

NumericUpDown
Cho php user chn cc gi tr trong khong xc nh thng qua
Nt up & down Nhp trc tip gi tr

NumericUpDown
on code thm control NumericUpDown
public void AddNumericUpDown() { NumericUpDown numUpDn = new NumericUpDown(); numUpDn.Location = new Point(50, 50); numUpDn.Size = new Size(100, 25); numUpDn.Hexadecimal = true; numUpDn.Minimum = 0; numUpDn.Maximum = 255; numUpDn.Value = 0xFF; numUpDn.Increment = 1; Controls.Add(numUpDn); }
Slide 95 Slide 96

Cc thuc tnh
Minimum Maximum Value Increment

S kin
ValueChanged

// hin th dng hexa // gi tr nh nht // gi tr ln nht // gi tr khi to // bc tng/gim // thm control vo ds control ca form

Phng thc
DownButton UpButton

NumericUpDown
Demo
Tng gim gi tr

DomainUpDown
Cho php user chn item trong s danh sch item thng qua
Button Up & Down Nhp t bn phm

Hin th gi tr Hexa

Properties
Items: danh sch item ReadOnly: true ch cho php thay i gi tr qua Up & Down SelectedIndex: ch mc ca item ang chn SelectedItem: item ang c chn Sorted: sp danh sch item Text: text ang hin th trn DomainUpDown.

Nhp trc tip gi tr

Event
Slide 97

SelectedItemChanged

Slide 98

DomainUpDown
Nhp item cho DomainUpDown

DateTimePicker
Cho php chn ngy trong khong xc nh thng qua giao din ha dng calendar Kt hp ComboBox v MonthCalendar Properties
Format: nh dng hin th
long, short, time, custom

CustomFormat:
dd: hin th 2 con s ca ngy MM: hin th 2 con s ca thng yyyy: hin th 4 con s ca nm (xem thm MSDN Online)

String Collection Editor Cho php nhp item


Slide 99

MaxDate: gi tr ngy ln nht MinDate: gi tr ngy nh nht Value: gi tr ngy hin ti ang chn

Slide 100

DateTimePicker
private void AddDateTimePicker() { DateTimePicker DTPicker = new DateTimePicker(); DTPicker.Location = new Point(40, 80); DTPicker.Size = new Size(160, 20); DTPicker.DropDownAlign = LeftRightAlignment.Right; DTPicker.Value = DateTime.Now; DTPicker.Format = DateTimePickerFormat.Custom; DTPicker.CustomFormat = "'Ngy' dd 'thng' MM 'nm' yyyy"; this.Controls.Add(DTPicker); }

DateTimePicker
Demo
nh dng xut: 'Ngy' dd 'thng' MM 'nm' yyyy

Kch drop down hin th hp chn ngy

Chn ngy trong khong cho trc


Slide 101 Slide 102

MonthCalendar
Cho php user chn mt ngy trong thng hoc nhiu ngy vi ngy bt u v ngy kt thc. Mt s thuc tnh thng dng
MaxDate, MinDate SelectionStart: ngy bt u chn SelectionEnd: ngy kt thc

RichTextBox
Chc nng m rng t TextBox, c th hin th text dng rich text format (RTF) Cc text c th c cc font ch v mu sc khc nhau. on text c th c canh l C th cha cc nh ng dng WordPad l dng RichTextBox Sinh vin t tm hiu thm

Sinh vin t tm hiu thm


Slide 103

Slide 104

Menu Strip

Menu Strip, Tool Strip

Menu cung cp nhm lnh c quan h vi nhau cho cc ng dng Windows


Menu item Menu Namespace: System.Windows.Forms Submenu

Shortcut key

Slide 106

MenuStrip
Cch to menu
Trong ToolBox ko control MenuStrip th vo form Thanh menuBar xut hin trn cng ca form Trong mn hnh design d dng to lp cc menu item
Nhp tn menu MenuBar

MenuStrip
t k t & trc k t lm phm tt To menu item mi bng cch nhp vo textbox

ToolStripMenuItem MenuStrip
Slide 107 Slide 108

Menu
Thit lp Shortcut Key cho menu item

MenuStrip
Menu item c th l TextBox hoc ComboBox

ToolStripMenuItem Khai bo shortcut key ToolStripComboBox ToolStripTextBox

Chn nt dropdown trn textbox nhp item hin th cc dng menu item khc

Slide 109

Slide 110

MenuStrip
Thuc tnh ca MenuStrip, ToolStripMenuItem MenuStrip Items MdiWindowListItem ToolStripMenuItem Checked Index DropDownItems ShortcutKeys Text ShowShortcutKeys Xc nh trng thi check ca menu item Ch mc menu item trong menu cha Cha nhng menu item con Phm tt Tiu menu item Xc nh trng thi hin th phm tt bn cnh menu item Cha nhng top menu item Chn top menu item hin th tn cc ca s con

MenuStrip
S kin cho Menu Item thng dng l Click Trong mn hnh Design View kch p vo menu item VS s t ng to trnh x l cho menu item

Trnh x l cho s kin click ca menu item Open

Slide 112

Context Menu
Xut hin khi user kch chut phi Thng thng menu ny xut hin ty thuc vo i tng trong vng kch chut phi. Trong ToolBox ko ContextMenuStrip th vo form

Context Menu
Kch vo ContextMenuStrip son tho cc menuitem ContextMenuStrip tm thi th hin trn cng ca form
Khi run th s khng hin th cho n khi c gi
Son tho Context Menu tng t nh Menu bnh thng

select
Slide 113 Slide 114

Context Menu
Khai bo s dng Context Menu Mi control u c property l: ContextMenuStrip
Khai bo thuc tnh ny vi ContextMenuStrip
Khi user kch chut phi ln control th s hin th context Menu ci t sn

Context Menu
Demo: to context Menu hin th trong ListBox c menu item Remove, cho php xa item ang c chn. To Form c m t nh sau
ListBox hin th cc item

Khai bo trnh x l s kin Click cho ContextMenu


Kch p vo menu item ca Context Menu to Hoc trong ca s Properties -> Event kch p vo s kin Click. Slide 115

Slide 116

Context Menu
Ko ContextMenuStrip th vo Form

Context Menu
Kch vo ContextMenuStrip thit k menu
To mt menu item Remove nh hnh m t

Son tho cc menu item

Slide 117

Slide 118

Context Menu
Lin kt ContextMenu vi ListBox
Trong ca s properties ca ListBox
Khai bo thuc tnh ContextMenuStrip = ContextMenuStrip1

Context Menu
Khai bo trnh x l s kin Click cho menu item

Chn context menu

Slide 119

Slide 120

Context Menu
Demo

ToolStrip
Namespace: System.Windows.Forms
Dng ToolBar cha nhiu cc controls khc nhau Xut hin ngay di thanh Menu

Context Menu hin th khi user kch chut phi ln ListBox

Slide 121

Slide 122

ToolStrip
Cch to button trn ToolStrip
Ko ToolStrip th vo form Add ToolStripButton
To button

ToolStrip
ToolStripMenuItem l 1 Menu Item ca Menu Strip
Mt s thuc tnh c bn Text Image Checked DropDownItems Mt s s kin c bn Click
Slide 124

ToolStrip
Mi button c th l
ToolStripButton ToolStripSplitButton ToolStripDropDownButton ToolStripComboBox ToolStripTextBox ToolStripSeperator ToolStripProgressBar

ToolStrip
B sung image cho button
S dng thuc tnh Images thit lp

Thuc tnh c bn
Items
Slide 125 Slide 126

ToolStrip
ToolStrip

ToolStrip
Khai bo trnh x l s kin Click cho ToolStripButton
Khai bo tng t nh cc button
Kch p vo button trong Design View

Split bar

Cc button

Thng thng cc button l cc chc nng thng s dng cha trong menu
VD: cc button New, Open, Save Do c th khai bo cng trnh x l s kin cho cc button v menu item cng chc nng.
VD: Menu item Open cng trnh x l vi ToolStripButton Open
Slide 127 Slide 128

StatusStrip

StatusStrip

Hin th thng tin trng thi ca ng dng Nm bn di cng ca Form. Cc lp lin quan
StatusStrip: l container cha control khc ToolStripStatusLabel: control c th add vo StatusStrip

Slide 130

StatusStrip
To cc item cho StatusStrip

StatusStrip
V d to s kin Tick ca Timer c mi giy kch hot v hin th gi trn StatusStrip
Ko Timer th vo Form
Thit lp s kin Tick cho Timer vi Interval l 1000 ms

To cc item cho StatusStrip Cc kiu control cho StatusStrip

Slide 131

Item dng Label ca StatusStrip

Slide 132

StatusStrip
Demo

StatusStrip
VD: b sung hin th mt hyperlink trn StatusStrip v open hyperlink khi user kch chut

Label hin th hyperlink Thuc tnh isLink = true

ToolStripStatusLabel

StatusStrip Thit lp vi thuc tnh spring = true, Text =


Slide 133 Slide 134

StatusStrip
To trnh x l s kin khi user kch vo item Label th 3 cha hyperlink
Trong mn hnh design kch p vo item th 3, VS.NET s pht sinh ra trnh x l s kin

StatusStrip
Demo

Label th 2 fill y khong trng


Slide 135

Kch vo m web
Slide 136

Timer

Advanced Controls
Luong Tran Hy Hien hienlth@hcmup.edu.vn
http://sites.google.com/a/hcmup.edu.vn/hienlth

B nh thi gian, thit lp mt khong thi gian xc nh (interval) v khi ht khong thi gian Timer s pht sinh s kin tick.

Methods

Properties

Enabled Stop
Events

Interval
Slide 138

Tick

Timer
Multitasking Qun l v thng bo cc trng thi Autosave Demo version Game

X l s kin Timer
Theo l thuyt thng ip thi gian do Windows cung cp l chnh xc n mili giy nhng thc t khng hon ton nh vy. S chnh xc cn ph thuc vo ng h ca h thng v cc hot ng hin thi ca chng trnh.

Slide 139

Slide 140

Timer
Hin th gi h thng
Hin th thi gian

Timer
S kin Tick

Enable s kin Tick Khong thi gian ch gia 2 ln gi Tick

Khai bo trnh x l s kin Tick

Slide 141

Slide 142

Timer
Demo

ProgressBar
Hin th tin thc hin ca mt cng vic no Cc thuc tnh
Mi giy s kin Tick pht sinh. Trnh x l ca Tick s ly gi h thng v hin th ln Label Minimum: gi tr nh nht Maximum: gi tr ln nht Step: s bc tng khi gi hm PerformStep Value: gi tr hin ti Style: kiu ca progress bar

Phng thc
PerformStep(): tng thm step Increment(int value): tng v tr hin ti ca tin vi gi tr xc nh
Slide 143 Slide 144

ProgressBar
Khai bo thanh tin 0-100, step = 10

ProgressBar

Max = 100 Min = 0

Step = 10

Slide 145

Slide 146

ProgressBar
Demo

ToolTip
Cung cp chc nng hin th mt khung text nh khi user di chuyn chut vo control bt k Khung text cha ni dung m t ngha ca control Cch s dng
T ToolBox ko ToolTip th vo form Kch chn control mun thm tooltip Trong ca s Properties ca control s c thuc tnh ToolTip. Thm text vo thuc tnh ny hin th khi tooltip xut hin.
Slide 147 Slide 148

Th hin trc quan tin

Tng tin theo step v cp nht li % hon thnh ln label

ToolTip
To ToolTip

ToolTip
Khai bo Tooltip cho textbox trong Design View

Ni dung Tooltip

Slide 149

Slide 150

ToolTip
Khai bo tooltip cho button

ToolTip
Khai bo tooltip cho listbox bng code

Nhp ni dung Tooltip cn hin th

Slide 151

Slide 152

ToolTip
Demo

TrackBar
Cho php user thit lp gi tr trong khong c nh cho trc Thao tc qua thit b chut hoc bn phm
Properties
ToolTip xut hin khi user di chuyn chut vo vng control

Minimum

Maximum

ValueChanged

Scroll
TickFrequency TickStyle
Slide 153

Value

SetRange

Slide 154

TrackBar
public void AddTrackBar() { TrackBar tb1 = new TrackBar(); tb1.Location = new Point(10, 10); tb1.Size = new Size(250, 50); tb1.Minimum = 0; tb1.Maximum = 100;
To th hin

TrackBar
B sung Label hin th gi tr ca TrackBar

Thit lp khong: 0 - 100 S v tr di chuyn khi dng phm mi tn S v tr di chuyn khi dng phm Page Kiu stick bn di/bn phi track S khong cch gia cc tick mark

tb1.SmallChange = 1; tb1.LargeChange = 5; tb1.TickStyle = TickStyle.BottomRight; tb1.TickFrequency = 10; tb1.Value = 10; Controls.Add(tb1); }

Slide 155

Slide 156

ScrollBar controls
Properties

ListView

SmallChange Value LargeChange Scroll ValueChanged


157

List View
Dng control ph bin hin th mt danh sch item
Cc item c th c cc item con gi l subitem

List View
Properties
Sorting SmallImageList Columns LargeImageList Items MultiSelect
Slide 159

Windows Explorer hin th thng tin th mc, tp tin


C th hin th thng tin theo nhiu dng thng qua thuc tnh View
Xem dng chi tit thng tin Xem dng icon nh Xem dng icon ln Xem dng tm tt

GridLines

Lp ListView dn xut t System.Windows.Forms.Control

FullRowSelect
Slide 160

List View
Cc dng th hin ca ListView

List View

Large Icons

Details

Small Icons
Mi item xut hin vi 1 icon kch thc ln v mt label bn di

List Tile

Large Icons

Slide 161

Slide 162

List View
Small Icons Mi item xut hin vi icon nh v mt label bn phi

List View
List Mi item xut hin vi icon nh vi label bn phi, item c sp theo ct nhng khng c tiu ct

Slide 163

Slide 164

List View
Tile Mi item xut hin vi icon kch thc ln, bn phi c label cha item v subitem

List View
Detail Mi item xut hin trn mt dng, mi dng c cc ct cha thng tin chi tit

Slide 165

Slide 166

List View
To cc ct cho ListView Details qua
Ca s properties Columns to. S dng code trong chng trnh.
ColumnHeader columnHeader1 = new ColumnHeader(); ColumnHeader columnHeader2 = new ColumnHeader(); ColumnHeader columnHeader3 = new ColumnHeader(); columnHeader1.Text = "Name"; columnHeader2.Text = "Address"; columnHeader3.Text = "Telephone Number"; listView1.Columns.Add(columnHeader1); listView1.Columns.Add(columnHeader2); listView1.Columns.Add(columnHeader3);

List View
Dialog son tho ct

Slide 167

Slide 168

List View
Thm cc item vo ListView
Thm item trong mn hnh thit k form Thm item thng qua code

ListView
Minh ha thm item qua code
ListViewItem item1 = new ListViewItem ListViewItem(); (); ListViewItem.ListViewSubItem subitem1; subitem1 = new ListViewItem ListViewItem.ListViewSubItem .ListViewSubItem(); (); item1.Text = HCMUP HCMUP"; "; HCMc"; subitem1.Text = 280 An Duong Vuong, HCMc"; item1.SubItems.Add(subitem1); listView1.Items.Add(item1); Thm subitem vo item

Cc lp nh ngha Item
System.Windows.Forms.ListViewItem ListViewItem Mi item trong ListView c cc item ph gi l subitem
Lp ListViewItem.ListViewSubItem ListViewSubItem nh ngha cc subitem ca ListView Lp ListViewSubItem l inner class ca ListViewItem
ColumnHeader1 ColumnHeader2 ColumnHeader3

item 1

Thm item vo danh sch items ca ListView

Subitem[0]

Subitem[1]

Subitem[2]

Slide 169

Slide 170

ListView
S kin SelectedIndexChanged

ListView
Thuc tnh CheckBoxes: Xut hin CheckBox bn cnh tng phn t trn iu khin

Slide 171

Slide 172

TreeView
iu khin TreeView dng trnh by danh sch phn t phn cp theo tng nt (Node) hnh cy. Thc hin: ta ko th iu khin vo Form t hp Toolbox

TreeView
Thuc tnh Nodes: Khai bo s Node (c header) ca iu khin TreeView

Slide 173

Slide 174

TreeView
Thuc tnh ShowPlusMinus: Chn gi tr True th biu tng du + v xut hin trn mi Node, mc nh l True.

TreeView
Thuc tnh ImageList: Cha i tng ImageList. Thuc tnh ImageIndex: Tt c cc Node c th hin bi hnh nh m thuc tnh ny chn.

V tr trong ImageList

Chn ImageList

Slide 175

Slide 176

TreeView
Thuc tnh SelectedImageIndex: Node c chn s c dng hnh nh ny. Thuc tnh CheckBoxes: Xut hin CheckBox bn cnh Node

TreeView
Phng thc:
CollapseAll(): Trnh by tt c cc Node trn diu khin TreeView treeView1. CollapseAll(); ExpandAll(): Thu gn tt c cc Node trn iu khin TreeView treeView1. ExpandAll(); Clear(): Xa tt c cc Node ang tn ti.

Cc bin c thng dng nh:


AfterCheck: Xy ra khi ngi dng Check vo CheckBox AfterCollapse: Xy ra khi thu gn tt c cc Node AfterExpand: Xy ra khi m rng tt c cc Node AfterSelect: Xy ra khi Click vo Node Tng t i vi BeforeCheck, BeforeCollapse, BeforeExpand, Slide 178 BeforeSelect

Chn hnh cho node c chn

Slide 177

Bi tp
S dng TreeView v ListView m phng chng trnh Windows Explorer

Tham kho
Slide bi ging C#, H KHTN, TpHCM Nguyn H Giang, Slide bi ging C#, H KTCN, TpHCM MSDN

Slide 179

Slide 180

NI DUNG X l cc s kin nhp liu bn phm, chut


X l s kin bn phm (Keyboard) X l s kin chut (Mouse)

Slide 2

Gii thiu
Tm hiu cc thng ip pht sinh t bn phm hay thit b chut vit cc x l tng ng B nh thi gian: Windows cung cp c ch ny truyn thng vi ng dng theo nh k.
ng dng cn khai bo b nh thi gian vi mt khong thi gian cho trc Khi ng dng hot ng th h thng s truyn mt tn hiu cho ng dng theo tng khong thi gian nh k c khai bo.

Gii thiu
Bn phm v chut l 2 thit b nhp liu quan trng nht ca my tnh. Hu ht cc chc nng Windows u h tr dng bn phm v chut Bn phm v chut c x l qua c ch thng ip ca Windows Mi s kin i vi bn phm v chut c Windows gi n chng trnh thng qua cc thng ip.
Slide 4

Slide 3

Bn phm
Khi nhn phm c th xy ra trng hp sau:
Nhn 1 phm k t Nhn 1 phm iu khin (Enter, Esc, F1 F12) Nhn Shift hoc Ctrl hoc Alt hoc t hp no ca 3 phm ny vi cc k t.

Cc phm c nhn c phn thnh hai nhm chnh:


Nhm cc phm h thng (system keys): l cc phm c nhn vi phm Alt. Nhm cc phm thng (nonsystem keys): khi phm Alt khng c nhn.

Khi phm no trn bn phm c g, nh hay gi th cc thng ip tng ng s c gi n ca s ang c focus

Thng th cc phm h thng c Windows x l v dch thnh cc s kin tng ng.


Slide 6

Slide 5

X l s kin bn phm
M hnh x l s kin bn phm ca Windows

X l s kin bn phm
Khi ngi dng nhn hoc nh mt phm bt k t bn phm cc driver bn phm s nhn c m bn phm v m qut (scan code) ca phm tng ng. M qut ny s c chuyn thnh m phm o (Virtual keycode) v mt thng ip bn phm tng ng (bao gm c scan code, virtual keycode v mt s thng tin khc) s c gi n cho System message queue. Cc s kin bn phm ch c gi n cho ca s ang gi focus hin hnh. H thng gi hai s kin bn phm khc nhau khi ngi dng nhn phm v nh phm.
Slide 7 Slide 8

X l s kin bn phm
Cc phm c nhn c chia lm 4 nhm sau:
Toggle keys: Caps Lock, Num Lock, Scroll Lock Shift keys: Shift, Ctrl, Alt Noncharacter keys: cc phm chc nng nh cc phm di chuyn, Pause, Delete Character keys: cc phm k t, phm s,

Keyboard Event
Pht sinh khi mt phm c nhn hoc th C 3 s kin
KeyPress KeyUp KeyDown

Slide 9

KeyPress pht sinh km theo vi m ASCII ca phm c nhn KeyPress khng cho bit trng thi cc phm b sung {Shift, Alt, Ctrl} S dng KeyUp & KeyDown xc nh trng Slide 10 thi cc phm b sung.

Keyboard Event
S kin vi tham s kiu KeyEventArgs KeyDown KeyUp KeyPress KeyChar Handled Pht sinh khi phm c nhn Pht sinh khi phm c th S kin vi tham s kiu KeyPressEventArgs Khi to khi phm c nhn Thuc tnh ca lp KeyPressEventArgs Cha k t ASCII ca phm c nhn Cho bit s kin KeyPress c c x l cha Thuc tnh ca lp KeyEventArgs Alt, Control, Shift Trng thi cc phm b sung Handled Cho bit s kin x l
Slide 11

Keyboard Event
Thuc tnh ca lp KeyEventArgs (tt) KeyCode KeyData KeyValue Modifier Tr v m k t c nh ngha trong Keys enumeration Cha m k t vi thng tin phm b sung Tr v s int, y chnh l m Windows Virtual Key Code Tr v gi tr ca phm b sung

Slide 12

Keyboard Event
Keys Enumeration

Key Enumeration
Kiu Keys c nh ngha lit k tt c cc phm. Bng lit k gi tr 26 k t Latin c m t trong bng sau:

Slide 13

Slide 14

Key Enumeration

Keyboard Event
Minh ha cc s kin: KeyPress, KeyDown, KeyUp
Khi user nhn mt phm
Bt s kin KeyPress: xut ra phm c nhn Bt s kin KeyDown: xut ra cc tham s trong KeyEventArgs

Khi user th phm


Xa cc thng tin m t phm c nhn trong cc label

Cch thc hin


To mt form minh ha Thit k trn form c 2 Label:
Slide 15

lblChar: hin th k t c nhn trong KeyPress Slide 16 lblKeyInfo: hin th cc thng tin ca KeyEventArgs khi KeyDown

Keyboard Event
Bc 1: to Windows Form nh hnh m t
Label cha k t c nhn trong s kin KeyPress

Keyboard Event
Bc 2:
To KeyPress Event Handling cho form

Label cha thng tin m k t c nhn trong s kin KeyDown

Slide 17

Slide 18

Keyboard Event
Bc 3:
To KeyDown Event Handling cho form

Keyboard Event
Demo

Slide 19

Slide 20

Keyboard Event
M rng chng trnh Calculator m rng cho php x l cc phm
Form nhn x l thng ip KeyDown
Xc nh cc phm tng ng ri gi s kin click ca button VD: user g phm 1, tng t nh button 1 c nhn

Keyboard Event
Vit phn x l cho s kin KeyDown
Xc nh cc phm tng ng gi s kin click ca cc button.
Gi event Click ca button 1

Cch thc hin


Khai bo trnh x l s kin KeyDown cho Form chnh Thit lp thuc tnh KeyPreview cho Form nhn s kin bn phm.

Phm '=' c nhn

Phm +' c nhn

Slide 22

Gii thiu

Mouse Event

V c bn Windows h tr cc loi thit b chut c mt nt, hai v ba nt, ngoi ra Windows cn c th dng thit b khc nh joystick hay bt v bt chc thit b chut. Cc thng ip c to t chut rt khc vi thng ip ca bn phm:
Chut di chuyn qua ca s hay kch vo trong ca s, Thm ch c trong trng hp ca s khng c kch hot hay khng nhn c s quan tm.
Slide 24

Gii thiu
Cc s kin chut s c gi n cho:
Ca s hin ang cha con tr chut. Hoc ca s ang capture chut.

Mouse Event
Mt s cc thao tc pht sinh t mouse
Di chuyn Kch chut

C hai loi s kin v chut:


Client area messages: Cc s kin chut xy ra khi chut ang vng client ca ca s. Non-client area messages: Cc s kin chut xy ra khi chut ang cc vng nh border, menu bar, title bar, scroll bar, window menu, minimize button, v maximize button.
Slide 25

ng dng cn x l s kin chut no s khai bo trnh x l tng ng Lp MouseEventArgs c s dng cha thng tin truyn vo cho trnh x l s kin mouse. Mi trnh x l s kin s c tham s l i tng object v i tng MouseEventArgs (hoc EventArgs)

Slide 26

Mouse Event
Tham s cho s kin lin quan n mouse

Mouse Event
S kin chut vi tham s kiu EventArgs
MouseEnter MouseLeave Xut hin khi con tr chut i vo vng bin ca control Xut hin khi con tr chut ri khi bin ca control Xut hin khi button c nhn/th v con tr chut ang trong vng bin ca control Xut hin khi chut di chuyn v con tr chut trong vng bin ca control

MouseEventArgs

S kin chut vi tham s kiu MouseEventArgs


MouseDown/ MouseUp S ln kch chut Ta (x,y) ca con tr chut Button c nhn MouseMove

Slide 27

Slide 28

Mouse Event
Thuc tnh ca lp MouseEventArgs
Button Clicks X Y Button c nhn {Left, Right, Middle, none} c kiu l MouseButtons S ln button c nhn Ta x ca con tr chut trong control Ta y ca con tr chut trong control

V d Test Mouse Button


protected override void OnMouseClick(MouseEventArgs mea) { base.OnMouseClick(mea); if (mea.Button == MouseButtons.Left) MessageBox.Show("Nhan chuot trai"); if (mea.Button == MouseButtons.Right) MessageBox.Show("Nhan chuot phai"); if (mea.Button == MouseButtons.Middle) MessageBox.Show("Nhan chuot giua"); }

Slide 29

Slide 30

S kin MouseDown
S kin MouseDown c pht sinh khi ngi dng nhn mt nt ca chut. x l s kin MouseDown ta override phng thc OnMouseDown V d:
protected override void OnMouseDown(MouseEventArgs mea) { MessageBox.Show(Ban vua nhan chuot + mea.Button); }

S kin MouseUp
S kin MouseUp c pht sinh khi ngi dng nh mt nt ca chut. x l s kin MouseUp ta override phng thc OnMouseUp V d:
protected override void OnMouseUp(MouseEventArgs mea) { MessageBox.Show(Ban vua nha chuot + mea.Button); }

Slide 31

Slide 32

S kin MouseMove
S kin MouseMove c pht sinh khi ngi dng di chuyn chut. x l s kin MouseMove ta override phng thc OnMouseMove V d: protected override void OnMouseMove(MouseEventArgs e) {
//Ve mot duong thang tu toa do (0,0) den toa do chuot di chuyen

S kin MouseWheel
S kin MouseWheel c pht sinh khi ngi dng scroll chut scroll chut. x l s kin MouseWheel ta override phng thc OnMouseWheel V d:
protected override void OnMouseWheel(MouseEventArgs e) { if (mea.Delta>0) MessageBox.Show(Ban vua scroll chuot len, Thong bao ); else MessageBox.Show("Ban vua scroll chuot xuong", "Thong bao"); }
Slide 34

Graphics g = CreateGraphics(); Pen pen = new Pen(System Drawing Color Blue); g.DrawLine(pen, 0, 0, mea.X, mea.Y); }
Slide 33

S kin Click
S kin Click pht sinh khi mt phm bt k ca chut c nhn. S kin ny pht sinh km theo tham s EventArgs, tham s ny khng cha thng tin v trng thi ca nt chut c nhn cng nh v tr ca con tr chut khi nhn. protected override void OnClick(EventArgs ea) { }
Slide 35

S kin DoubleClick
Khi DoubleClick s pht sinh mt dy cc s kin sau: MouseDown Click MouseUp MouseMove MouseDown DoubleClick MouseUp MouseMove
protected override void OnDoubleClick(EventArgs ea) { }
Slide 36

Mouse Event
MouseMove

Mouse Event
Demo
V tr hin ti ca con tr chut

Slide 37

Hin th ta hin ti ca con tr chut

Slide 38

Mouse Event
Demo thao tc: kch chut tri ti mt im A, gi chut tri v di chuyn chut, chng trnh s v ng thng t im A n v tr hin ti chut. Cc s kin cn x l
MouseDown:
Xc nh im A ban u

Mouse Event
Bc 1:
To bin lu tr im A khi user kch chut tri Bin pA c kiu Point l bin thnh vin ca Form1 Lp Form1

MouseMove
Kim tra nu Left button ca chut ang gi
S dng Graphics v ng thng t A n v tr hin ti
Slide 39

Bin pA lu gi ta khi chut tri c click

Slide 40

Mouse Event
Bc 2
Khai bo x l s kin MouseDown trong Form1
Trong ca s event ca Form1, kch p vo s kin MouseDown

Mouse Event
Bc 3
Ci t x l s kin MouseMove
Kim tra nu LeftButton c nhn

V ng thng t pA n v tr hin ti

Lu li im c nhn chut
Slide 41 Slide 42

Mouse Event

Bi tp
Ti sao c hiu ng vy? SV t ci tin

Chng trnh ha n gin: V ng thng, hnh ch nht, ellipses

Slide 43

Slide 44

Ni Dung Common Dialog & User Control


Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

Lng Trn Hy Hin FIT, HCMUP


1 2

Common Dialog
Cc dialog thng c s dng
c warp thnh cc lp trong FCL/BCL

Common Dialog
Cch s dng
1. Ko th dialog vo form
VS s to th hin cha trong lp form

2. Khai bo i tng v to th hin ca lp CD


OpenFileDialog ColorDialog VD: OpenFileDialog oFile = new OpenFileDialog();

SaveFileDialog PrintDialog

FontDialog

Common Dialog

Common Dialog

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

OpenFileDialog
S dng chn file lu trn a Cch s dng t ToolBox
Drag & drop

Code pht sinh t ng

xyz.Designer.cs

OpenFileDialog
Code pht sinh ca VS
xyz.Designer.cs To th hin

OpenFileDialog
Code t vit khng dng Toolbox

Hin th Form

OpenFileDialog
Thuc tnh, phng thc Thuc tnh FileName FileNames Filter InitialDirectory Multiselect Title Phng thc ShowDialog S kin FileOk Xut hin khi user kch vo OK
9

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

Ly tn file c chn Ly tn tt c cc file c chn Xc nh kiu file cn m Th mc khi to Cho php chn nhiu file Tiu ca dialog Hin th dialog

10

SaveFileDialog
S dng to file trn a. Cch s dng
S dng SaveFileDialog component trn Toolbox
Tng t nh OpenFileDialog!

SaveFileDialog
Demo: nhp vn bn vo textbox, sau lu xung file *.txt.
To ng dng dng Windows Form c cc control
1 label: caption ca textbox 1 textbox: cha ni dung text do user nhp 1 button: gi SaveFileDialog v lu file 1 SaveFileDialog: khai bo dialog SaveFile.

To th hin ca lp SaveFileDialog

11

12

SaveFileDialog
Thit k form

SaveFileDialog
Vit phn x l cho button Lu file

Drag & drop

Multiline=true

System.IO

13

14

SaveFileDialog

SaveFileDialog
M rng b sung phn c file text t demo trn
Open file *.txt v hin th ni dung ca file trn TextBox.

B sung thm button M file v ko thnh phn OpenFileDialog th vo form


Drag & drop

15

16

SaveFileDialog
Vit phn x l button M file

SaveFileDialog
Demo
Hin th ni dung file

17

18

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

FontDialog
Chc nng hin th hp thoi chn font ch c install trong my
Trong ng dng lm vic vi document, ha

S dng FontDialog
T ToolBox ko th FontDialog vo Form
S dng trong lc thit k

Khai bo th hin FontDialog v hin th


Vit code

19

20

FontDialog
Thuc tnh, phng thc thng dng Thuc tnh Font Color ShowColor ShowApply Phng thc ShowDialog S kin Apply Kch hot khi user chn apply Hin th dialog ra mn hnh Get/set font c chn Get/set mu ca font Hin th hay khng hin th chn mu Hin th/ khng button Apply

FontDialog
Demo: gi FontDialog thit lp font cho control To Form c dng sau
Label test font
Drag & drop

Button chn font

21

22

FontDialog
Phn x l cho button Font

FontDialog

23

24

FontDialog
B sung chc nng Apply ca FontDialog
Khi FontDialog ang hin th cho php user kch chn nt Apply label thay i font theo.

FontDialog
Code minh ha

Cch thc hin


Khai bo c hin th button Apply cho FontDialog
fontDialog1.ShowApply = true

ng k trnh x l s kin cho button Apply


To trnh x l cho s kin Apply ca FontDialog ng k trnh x l cho s kin Apply ca FontDialog

25

26

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

ColorDialog
Hin th chc nng chn mu S dng theo 2 cch
Ko ColorDialog t Toolbox th vo form Vit code to i tng

ColorDialog s dng gi tr mu c kiu Color


Mu ARGB
Alpha Red Green Blue

27

28

ColorDialog
Demo chn mu: chn mu nn cho form

ColorDialog
Phn x l cho button Color

Drag & drop

29

30

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

MessageBox
Hin th hp thoi cha thng tin ch dn n user Bao gm cc phn
Text Button Symbol

Lp MessageBox c phng thc tnh Show hin th dialog.


Bt gi tr tr v bit phn ng ca user

31

32

MessageBox
C khong 21 phin bn ca Show Mt s phin bn thng s dng
MessageBox.Show (String strText) MessageBox.Show (String strText, String strCaption) MessageBox.Show (String strTex, String strCaption, MessageBoxButtons mbb) MessageBox.Show (String strTex, String strCaption, MessageBoxButtons mbb, MessageBoxIcon mbi) MessageBox.Show (String strTex, String strCaption, MessageBoxButtons mbb, MessageBoxIcon mbi, MessageBoxDefaultButton mbdb) MessageBox.Show (String strTex, String strCaption, MessageBoxButtons mbb, MessageBoxIcon mbi, MessageBoxDefaultButton mbdb, MessageBoxOptions mbo)

MessageBox
Cc button hin th theo message
Cho php user chn la cc phn ng vi message c nh ngha trong MessageBoxButtons

MessageBoxButtons
Member Ok OkCancel AbortRetryIgnore YesNoCancel YesNo RetryCancel Value 0 1 2 3 4 5

33

34

MessageBox.Icons
Member None Hand Stop Error Question Exclamation Warning Asterisk Information Value 0x00 0x10 0x10 0x10 0x20 0x30 0x30 0x40 0x40
Slide 35

MessageBox
Mt s cc MessageBox minh ha

Image

36

V d MessageBox
V d 1: MessageBox.Show(Bn khe khng?", Cu hi", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

V d MessageBox
V d 2: Nhn kt qu chn YES/NO t ngi dng DialogResult res = MessageBox.Show(2 ln hn 1", "Thi Nghiem", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (res == DialogResult.Yes) MessageBox.Show("Chn YES"); else MessageBox.Show("Chn NO");
Slide 37 Slide 38

Ni Dung
Gii thiu Common Dialog OpenFileDialog SaveFileDialog FontDialog ColorDialog MessageBox User Control

User Control
Cng vic ko th nhm control thng s dng nhm chn User control phc v mc ch ti s dng Vn :
Nhm control phc v cho vic login thng xut hin trong ng dng

Yu cu:
To nhm control phc v cho vic login Nhm control ny bao gm
2 label 2 textbox

39

40

User Control
Bc 1: To ng dng Windows Control Library

User Control
Bc 2: thit k user control nh sau

2 TextBox

2 Label c cha image

41

42

User Control
Khai bo cc property cho user control
Mi property gn vi textBox
UserName gn vi txtUID Password gn vi txtPwd

User Control
Bin dch user control Kt qu c file assembly c phn m rng l DLL S dng user control trong client app
Add vo phn References ca project
To i tng user control, add vo form

Add vo ToolBox | Choose Items


Ko user control th vo form, code pht sinh t ng

43

44

User Control
To ng dng Test User control
To ng dng Windows Form Thm User Control vo ToolBox
Kch chut phi vo ToolBox Chn chc nng Choose Items Chn file DLL ca User control va to

User Control
Ko th user control vo form

Drag & drop

Ko user control th vo form

Pht sinh code trong designer.cs


45 46

User Control
S dng User Control nh control bnh thng trn form. Truy cp user control HIENLTHLogin thng qua 2 property nh ngha khi xy dng control ny
UserName: l textBox User Name Password: l ni dung ca textBox Password

Tm tt
Common Dialog
OpenFileDialog - SaveFileDialog FontDialog - ColorDialog

MessageBox
Khai bo v s dng MessageBoxIcon MessageBoxButtons

User control
Xy dng user control S dng user control
47 48

Lm vic vi File
Lng Trn Hy Hin
http://fit.hcmup.edu.vn/~hienlth/CShape http://sites.google.com/a/hcmup.edu.vn/hienlth

Ni dung
Qun l file Move, Copy, Delete file c/Ghi file

Qun l file
.NET h tr cc thao tc lm vic vi file:
Cc tc v thng thng: lit k, sao chp, di chuyn, xa, Cc thao tc vi file nm trong namespace System.IO Cc lp quan trng: File, FileInfo, Directory, Path,

Lm vic vi file v folder: C 2 loi:


Direcory v File: ch cha cc phng thc tnh, khng th khi to. Thng dng khi ch thc hin 1 thao tc vi 1 file hoc 1 folder. Khi thao tc cn cung cp ng dn n file hay folder cn lm vic. DirectoryInfo v FileInfo: cung cp phng thc nh 2 i tng trn nhng i hi phi c instance. Thng dng khi thc hin nhiu thao tc vi 1 file hoc folder.
3

Qun l file (tt)


Tn CreationTime DirectoryName (FileInfo), Parent (DirectoryInfo) Exists Extension FullName LastAccessTime LastWriteTime Name Root Length ngha Thi gian to file hoc folder ng dn y ca folder cha file hoc folder hin thi File hay folder c tn ti hay khng? Phn m rng Tn y , c ng dn Thi gian ln truy cp cui Thi gian ln sa cha cui Tn file hay folder Folder gc (ch vi DirectoryInfo) Dung lng (bytes), ch vi FileInfo

Qun l file (tt)


//khi ti bin myFile tr n tp tin FileInfo myFile = new FileInfo(@"d:\\HyHienProfile.txt"); //sao chp sang a E myFile.CopyTo(@"E:\\test.txt"); //kim tra s tn ti MessageBox.Show(myFile.Exists.ToString()); //thng tin thi im to file MessageBox.Show(myFile.CreationTime.ToString()); //cp nht thi im to file myFile.CreationTime = new DateTime(2009, 7, 27, 12, 0, 0);

Qun l file (tt)


DirectoryInfo theFolder = new DirectoryInfo(folderFullName); if (!theFolder.Exists) throw new DirectoryNotFoundException("Folder not found: " + folderFullName); string currentPath = theFolder.FullName; //Ly tn cc th mc con ca th mc hin thi ArrayList folders = new ArrayList(); foreach (DirectoryInfo folder in theFolder.GetDirectories()) folders.Add(folder.Name); //Ly tn cc file trong th mc hin thi ArrayList files = new ArrayList(); foreach (FileInfo file in theFolder.GetFiles()) files.Add(file.Name);

Moving, Copying, and Deleting Files


C th sao chp, di chuyn hoc xa file.
Phng thc Path.Combine(string, string): tr v tn y ca file to t ng dn v tn file. Phng thc File.Delete(string): xo tp tin. Phng thc File.Move(string, string): di chuyn file t v tr c n v tr mi. Phng thc File.Copy(string, string): sao chp file sang th mc mi

c ghi file
Da trn khi nim stream (lung d liu):
stream l o tng dng chuyn d liu. Do stream c th l lung da trn b nh, trn tp tin, trn mng, FileStream: i tng dng c ghi file nh phn. StreamReader v StreamWriter: i tng dng c ghi file text Ch : Cc tc v c ghi hu ht u s dng buffer. Do , vi tc v ghi, phi u d liu t buffer ln a trc khi ng file.

c ghi file nh phn


Hm to: ch cn ch ra filename, FileMode, FileAccess, FileShare.
FileMode: kiu m file, c th l Append, Create, CreateNew, Open, OpenOrCreate hoc Truncate. FileAccess: kiu truy cp, c th l Read, ReadWrite hoc Write. FileShare: kiu chia s gia cc thread, c th l Inheritable, None, Read, ReadWrite hoc Write.

c v ghi byte, dng cc hm:


ReadByte(): c 1 byte t stream WriteByte(byte): ghi 1 byte vo stream Read/Write(byte[], int off, int count): c/ghi mt mng byte bt u t off, di count

Close(): ng file
9

c ghi file vn bn
Dng StreamReader v StreamWriter
C th khi to StreamReader da trn:
Tn file cn c Mt FileStream khc Mt FileInfo vi phng thc OpenText()

C th khi to StreamWriter da trn:


Tn file cn c, m encode Mt FileStream khc Mt FileInfo vi phng thc CreateText()

c v ghi, dng cc hm:


Read() hoc Write(): c hoc ghi 1 k t ReadLine() hoc WriteLine(): c hoc ghi 1 dng ReadToEnd(): c n ht file
10

VD: Hm ghi file vn bn


void GhiFileText(string sfilename, string chuoi) { FileStream fstream = new FileStream(sfilename, FileMode.Append, FileAccess.Write, FileShare.None); StreamWriter mywriter = new StreamWriter(fstream); mywriter.WriteLine(DateTime.Now.ToString() + " - " + chuoi); mywriter.Close(); fstream.Close(); }

11

VD: Hm c file vn bn
string DocFileText(string sfilename) { StreamReader myreader = null; string result = string.Empty; try { myreader = new StreamReader(sfilename); result = myreader.ReadToEnd(); } catch { throw; } finally { if(myreader != null) myreader.Close(); } return result; }

12

Ni dung GRAPHICS GDI+


Lng Trn Hy Hin hienlth@hcmup.edu.vn GDI+ Chng trnh v c bn trn Form Lp Graphics v hm OnPaint() Lp Color v Font Lp Pen v Brush Cc hm v ng thng, hnh ch nht, ellipse Cc hm v cung, a gic Hin th nh Minh ha Multimedia
2

Tng quan
Th vin gip v ln mn hnh hoc my in m khng cn quan tm n cu trc phn cng c lp thit b GDI+ bao gm 3 nhm dch v chnh:
2D vector graphics: cho php to hnh t cc hnh c bn (primitive): ng thng, trn, eclipse, ng cong, Imaging: lm vic vi cc tp tin hnh nh (bitmap, metafile) Typography: v ch

System.Drawing
System.Drawing Font FontFamily Color Point Rectangle Size

key
class structure

Graphics
Icon Pen Region SolidBrush TextureBrush Image Brush

HatchBrush LinearGradientBrush PathGradientBrush SolidBrush TextureBrush

V trn Form
public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString DrawString("Hello GDI!", Font, Brushes.Red, 20, 20); } }

Graphics
Lp Graphics th hin
Abstract drawing surface Tp hp nhng tool cho php thao tc trn surface

ly i tng Graphics
S dng thuc tnh Graphics c truyn cho OnPaint() S dng phng thc CreateGraphics() ca control Ly t i tng dn xut t Bitmap

Gi hm Invalidate() thay v OnPaint()


5 6

Ly i tng Graphics
protected override void OnPaint(PaintEventArgs paintevent) { Graphics graf=paintevent.Graphics; }

Ly i tng Graphics
private void PaintMe(Control testcontrol) { Graphics graf=testcontrol.CreateGraphics(); ... } Ly t control protected override void OnPaint(PaintEventArgs paintevent) { Bitmap bmpimage=new Bitmap(hoalan.jpg"); Graphics graf = Graphics.FromImage (bmpimage); ... } Ly t nh
7 8

T tham s PaintEventAtgs

private void mainForm_Paint(object sender, PaintEventArgs paintevent) { Graphics graf=paintevent.Graphics; }

DrawString() method
Hin th text trong Graphics c th
C nhiu phin bn
DrawString( String text, // Text th hin Font f, // Font Brush b, // Color & texture float x, float y); y); // v tr gc tri

Ta h thng
Gc ta

(0,0)
(0,0) (w1,0)

(w,0)
Control
(w1,h1)

trn

Form, Panel, GroupBox

(0,h1)

Tham s Font v Brush khng c mc nh nn phi truyn vo.

(0,h)

(w,h)

10

Ta h thng
Graphics.PageUnit: xc nh n v ca b mt
GraphicsUnit.Pixel (default) GraphicsUnit.Inch GraphicsUnit.Milimeter GraphicsUnit.Point

Color
S dng mu c nh ngha trong Color
Color.Blue, Color.Red, Color.White

S dng mu nh ngha cho h thng


SystemColors.Control, SystemColors.ControlText

S dng mu ARGB
32 bit th hin mu A (alpha) th hin mc trong sut (255 opaque) RGB l Red, Green v Blue To mu s dng hm FromArgb()
Color red = Color.FromArgb(255,0,0); Color blue = Color.FromArgb(128, 0, 255, 0);

Graphics.PageScale: t l output
g.PageScale = 1f (default)

11

12

Tm tt mt s hng s Color
Hng s trong cu trc Color Orange Pink Cyan (Green Blue) Magenta (Red Blue) Yellow Black White DarkGray Red Green Blue Gi tr RGB 255, 200, 0 255, 175,175 0, 255, 255 255, 0, 255 255, 255, 0 0 , 0, 0 255, 255, 255 64, 64, 64 255, 0 , 0 0, 255, 0 0, 0, 255
13

S dng ColorDialog chn mu t bng mu


To i tng ColorDialog ColorDialog colorChooser = new ColorDialog(); Hm hin th Dialog: colorChooser.ShowDialog();

14

Thuc tnh FullOpen ca ColorDialog


public virtual bool FullOpen { set; get; } Tm tt: Gets or sets mt gi tr ch ra rng liu control s dng to ra mu ring c hin ra hay khng khi hp dialog c m Return: true nu contral mu ring th c sn khi hp dialog c m; ngc li, false. Gi tr mc nh l false.

FullOpen
FullOpen = false

FullOpen = true

15

16

Demo
FONT & STRING

17

18

Font v String
Cc khi nim c bn Font
Cc khi nim v Font Lp Font Lp FontFamily

Cc khi nim c bn
B k t Trang m B k t Unicode

String
Mt s thnh phn lin quan n chui k t Lp StringFormat Lp TextRenderer

19

20

B k t v trang m
B k t (character set)
B m bn phm c nh m mt h my tnh c th ang s dng.

Cc khi nim v Font


nh ngha Font Kiu Font v H Font Cc loi Font trn HH Windows Cc thng s Font o Font

Trang m (code page)


Trang m cha 1 b cc k t ng vi h b k t no ca mt hoc nhiu ngn ng. Phn ln cc trang m cha 256 k t

21

22

nh ngha Font
Tp hp hon chnh
cc ch ci cc du cu cc con s Cc k t c bit

nh ngha Font (tt)


Mt font c th c cung cp bi 1 hoc nhiu trang m Mi font thng c lu trong 1 file font Mi font thng c t 1 tn. V d: font Times New Roman Bold, font Courier New Italic

theo mt:
kiu loi trng lng (thng hoc m nt) dng b (thng hoc nghing)

vi kch c ph hp v c th phn bit khc nhau.

23

24

Kiu Font v h Font


Tn Font = H Font + ( Kiu Font ) Font name = Font family + (Typestyle) V d: H font Times New Roman cha 4 font khc nhau: Times New Roman Times New Roman Italic Times New Roman Bold Times New Roman Bold Italic

Cc loi Font trn HH Windows


Bitmap Font Vector Font TrueType Font OpenType Font

25

26

Bitmap Font
Dng hnh nh hin th cc im nh ca 1 k t Thng l nhng file c dng *.fon Khi hin th k t c kch thc ln thng b nt hnh

Vector Font
Dng cc on thng ni vi nhau hin th k t Thng l nhng file c dng *.fnt Mc d hin th k t c kch thc ln tt hn bitmap font nhng vn cha c c sc nt cao

27

28

TrueType Font
Dng cc on thng v on cong ni vi nhau hin th k t Thng l nhng file c dng *.ttf Hin th k t c kch thc ln vi sc nt cao thng dng

OpenType Font
L chun nh dng font kt hp 2 loi nh dng font c sn: Type 1 (PostScript) font v TrueType font c lp vi h iu hnh (cross-platform) H tr nhiu loi ngn ng trong 1 font Thng l nhng file c dng *.otf Trong Windows, TrueType Font c biu tng l ch TT, cn OpenType Font l ch O

29

30

Thng s Font (Font Metric)


leading

o Font
Font c o bi nhiu o: pixel: phn t nh nht ca nh m 1 thit b c th hin th (mn hnh, my in) point: 1 point = 1/72 inch trong in n em: rng ca ch M ng vi kiu ch ang dng design unit: dng o kch c 1 h font bng o point khi b thay i kch thc

height

xy1

ascent

baseline descent

31

32

Class Font
M t lp Font Cc thuc tnh lp Font Cc hm khi to lp Font
Tp hp FontStyle Tp hp GraphicsUnit

M t lp Font
Dng xc nh cch nh dng vn bn Bao gm cc thuc tnh cch th hin, kch thc kiu dng thc, kiu dng Khng cho php k tha Namespace: System.Drawing Assembly: System.Drawing (in dll)

Cc phng thc lp Font Cc v d

33

34

Thuc tnh ca Font


Thuc tnh Bold FontFamily Height Italic Name Size Strikeout Underline M t Kim tra xem Font c c in m hay khng. Thng tin v FontFamily ca Font Chiu cao ca Font Kim tra xem Font c c in nghing hay khng Tn ca Font Kch thc ca Font, kiu float Kim tra Font c in gch ngang hay khng. Kim tra Font c in gch di hay khng.

FontFamily Class
M t lp FontFamily Cc thuc tnh lp FontFamily Cc hm khi to lp FontFamily
Tp hp GenericFontFamilies

Cc phng thc lp FontFamily Cc v d

35

36

M t lp FontFamily
Xc nhn mt nhm cc font c thit k v cch th hin v kiu dng tng t nhau Khng cho php k tha Namespace: System.Drawing Assembly: System.Drawing (in dll)

Cc thuc tnh FontFamily


Thuc tnh Families Miu t Tr v mt mng tt c cc font families lin kt vi ng cnh ha hin thi

GenericMonospace Tr v font family n GeneriicSansSerif Tr v font khng c chn ch GenericSerif Name Tr v font c chn ch Tr v tn ca font families

37

38

Cc phng thc FontFamily

Cc phng thc FontFamily


Phng thc GetCellAscent GetCellDecent GetEmHeigth GetFamilies GetLineSpacing GetName IsStyleAvailable Miu t tr v phn ch bn trn ng baseLine tr v phn ch bn di ng baseLine Tr v chiu cao Tr v mng cha tt c cc gi tr ca font families Tr v khong cch gia hai dng lin tip Tr v tn ca font family Kim tra gi tr style ca font v d: FontFamily ff = new FontFamily("Arial"); if(ff.IsStyleAvailable(FontStyle.Italic)) //x l

39

40

V d
Khi to mt Font:
//to Font Font tnwFont = new Font(Times New Roman,12); //to FontFamily FontFamily arialFont = new FontFamily(Arial);
Size = 8 pixel

Pen
Xc nh width, style, fill style Khng cho k tha, nhng to th hin c Trong namespace System.Drawing
Pen p1 = new Pen(Color.Green); Pen p2 = new Pen(Color.blue, 10);

Font fa = new Font("Times Font("Times New Roman", Roman", 8); Font fb = new Font("Arial Font("Arial", ", 36, FontStyle.Bold); Font fc = new Font(fb, FontStyle.Bold | FontStyle.Italic); ", 1, GraphicsUnit.Inch); Font fd = new Font("Arial Font("Arial",
Size = 1 inch
41

S dng lp Pens c 141 pen c nh ngha trc.


Pen p3 = Pens.Violet;

42

Pen (tt)
Dng Pen c sn thng qua Pens
Pens.AliceBlue Pens.Aqua Pens.Black Pens.Brown

Pen (tt)

Dng Pen do t to thng qua lp Pen


new Pen(Brush) new Pen(Color) new Pen(Color, Width)
43 44

Brush
Dng t vng bn trong ca hnh Lp Brush l lp Abstract nn khng to th hin S dng cc lp k tha sau to brush
SolidBrush LinearGradientBrush TextureBrush HatchBrush

Brush
Solid

Hatch

S dng lp Brushes nh ngha trc cc brush.

LinearGradient

Texture

45

46

Bursh
Demo
Solid Hatch

V CC NG

LinearGradient

Texture

47

2D vector graphics
Pen & brush
Pen, Pens, SystemPens Brush, Brushes, SystemBrushes, SolidBrushes, TextureBrushes, (System.Drawing.Drawing2D) HatchBrush, LinearGradientBrush, PathGradientBrush

2D vector graphics
ellipse, arc, cardinal spline, bezier spline

Polygon

DrawBezier DrawBeziers

DrawLine

DrawLines

DrawRectangle FillRectangle

DrawPolugon FillPolygon

49

50

2D vector graphics
Path: kt hp nhiu loi ng nt thnh mt i tng duy nht. Cc nt khng nht thit phi lin nhau.

Line, Rectangle, Ellipse


DrawLine
(Pen p, int x1, int y1, int x2, int y2)

DrawRectangle
(Pen p, int x, int y, int width, int height)

DrawEllipse GraphicsPath (AddLine, AddCurve, ) Graphics.DrawPath Graphics.FillPath


(Pen p, int x, int y, int width, int height)

FillRectangle
(Brush b, int x, int y, int width, int height)

FillEllipse
(Brush b, int x, int y, int width, int height)
51 52

Line, Rectangle, Ellipse

Image
Lp Image hin th cc nh bitmap
Cc dng nh: *.bmp, *.gif, *.jpg, *.ico

Phng thc static FromFile to nh t file


Image img = Image.FromFile(hutech.bmp); Image img2 = Image.FromFile(hutech.gif);

Phng thc DrawImage xut nh ln Graphics


g.DrawImage(img, 10, 10); G.DrawImage(img2, 10, 10, 100,100); // scale trong hnh ch nht kch thc 100x100

53

54

Image

Image

Ellipse c v ln nh, ri sau vi v nh ln Form

55

56

Minh ha 1
Custom li nn ca Form

Form c dng NonRectangle


To form c hnh dng khc hnh ch nht
S dng thuc tnh TransparencyKey ca Form S dng cc hiu ng mu c t

Override phng thc OnPaintBackground ca Form

57

58

Form c dng NonRectangle


Bc 1:
To ng dng Windows Application Thit k Form c dng nh sau
FormBorderStyle = none

Form c dng NonRectangle


Bc 2:
Thit lp cc thuc tnh cho Form nh sau:
TransparencyKey = Control: mu s trong sut khi v trn Form FormBorderStyle = None: Form khng c ng bin

Thit lp mu nn cho 2 Label l Transparent


Phn background ca 2 label s tip vi nn bn di

59

60

Form c dng NonRectangle


Bc 3: To trnh x l cho s kin Paint

Form c dng NonRectangle


Demo

Vng ca Form

Vng ngoi Form

61

62

Multimedia
To ng dng cha Windows Media Player control cho php Play cc file video v sound theo nhiu dng format
MPEG (Motion Pictures Expert Group): video AVI (Audio-video Interleave): video WAV (Windows Wave-file Format): audio MIDI (Musical Instrument Digital Interface): audio

Multimedia
Bc 1: b sung Windows Media Player vo ToolBox
Kch chut phi vo ToolBox ->chn Choose Items Trong Dialog Choose Toolbox Items chn COM Components
Chn Windows Media Player

Khi control WMP s hin di cng ca ToolBox

63

64

Multimedia
Bc 2: ko Windows Media Player th vo Form
Thit lp Dock = Fill

Multimedia
Bc 3: To MenuStrip b sung chc nng Open File media

Dock = Fill

i tn control thnh WMPlayer


65 66

Multimedia
Bc 4: vit trnh x l cho Menuitem Open

Multimedia
Demo

67

68

Windows Form MDI Application

(Multiple Document Interfaces)


Hien Luong Tran-Hy hienlth@hcmup.edu.vn

There are basically two types of document : - Single Document Interface (SDI) - Multiple Document Interface (MDI)

Single Document Interfaces


Ch h tr mt document hoc mt ca s ti mt thi im. Dng ng dng nh NotePad, MS Paint vi cc c tnh x l nh v vn bn gii hn. lm vic vi nhiu ti liu th phi m cc instance khc ca ng dng. Vic qun l ng dng SDI kh n gin.

Khi nim c bn v MDI


Multiple Document Interface (MDI) l mt c t qun l ti liu trong Microsoft Windows. M t mt cu trc ca s v giao din ngi dng cho php ngi s dng lm vic vi nhiu ti liu trong mt ng dng n.

Khi nim c bn v MDI


c t MDI xut hin t Windows 2.0, nhng cc ng dng MDI lc rt kh vit v cn nhiu cng sc lp trnh. T Windows 3.0 tr i, nhiu chc nng c m rng v h tr c a vo.

Cc thnh phn MDI


Ca s ng dng chnh ca mt chng trnh MDI theo kiu c in gm c:
Thanh tiu . Mt trnh n. Mt ng vin thay i kch thc. Mt icon trnh n h thng. Cc nt minimize/maximize/close.

SDI vs MDI
Vng client thng c gi l workspace v khng s dng trc tip hin th output ca chng trnh. Workspace c th khng cha hay cha nhiu ca s con, mi ca s con hin th mt ti liu. Cc ca s con rt ging cc ca s ng dng bnh thng v cc ca s ng dng chnh ca mt chng trnh MDI ti mt thi im, ch mt ca s ti liu c kch hot v n xut hin trc tt c cc ca s ti liu khc. Tt c cc ca s ti liu con c gii hn bi vng workspace v khng bao gi xut hin bn ngoi ca s ng dng.
7

SDI

MDI

MDI
Parents icons: minimize, maximize and close Parents title bar displays maximized child

MDI

Minimized childs icons: restore, maximize and close

Maximized childs icons: restore, maximize and close

Child windows list 9 or more child windows enables the More Windows... option

10

Multiple Document Interface


MDI Parent Window MDI Child Window
MDI Application Ch c duy nht mt parent windows

Multiple Document Interface


Cch to MDI Form
To form v thit lp thuc tnh IsMdiContainer = true, khi form s thay i cch th hin
SDI Form MDI Form

Parent window
Child window Child window Child window

C nhiu child windows

Multiple Document Interface


Add form con vo form chnh
To i tng ca form con Thit lp thuc tnh MdiParent ca form con l form chnh Gi phng thc Show ca form con

Multiple Document Interface


Thuc tnh, phng thc v s kin Thuc tnh ca MDI child IsMdiChild MdiParent ActiveMdiChild IsMdiContainer MdiChildren Phng thc LayoutMdi S kin MdiChildActivate
13

Cho bit form l child hay khng Xc nh form cha ca form Tr v form con ang active Xc nh form l MDI parent hoc khng Tr v mng cha cc form con Xc nh cch hin th cc form con Xut hin khi child form ng hoc active
14

Thuc tnh ca MDi parent

Mt cch tng qut add form con vo form chnh


Lp form con To i tng cho lp form con

ChildFormClass childForm = new ChildFormClass(); MdiParent = <th hin ca form cha>; cha>; childForm.MdiParent childForm. childForm.Show childForm. Show(); (); Thit lp form cha (nu ang trong form cha th dng i tng this)

Hin th form con

Multiple Document Interface


Trng thi Minimize, Maximize v Close
Icon ca parent: minimize, maximize, close Icon ca child: minimize, restore, close

Sp xp cc MDI
to mt danh sch cc MDI Child, ch cn thm mt top-level menu item (thng mang tn Window) ri cho thuc tnh MdiList = true. B my Windows.Forms s t ng thm mt item vo cui submenu cho mi ca s MDI Child. Mi MDI container u h tr hm LayoutMdi() hm ny nhn gi tr t Enumeration MdiLayout v sp xp t ng cc ca s.

Icon ca child: restore, maximize, close

Title ca parent cha tn child ang maximize


15 16

Multiple Document Interface


on chng trnh sp xp theo kiu Cascade private void mnuCascade_Click ( Object sender, System.EventArgs e) { this.LayoutMdi (MdiLayout.Cascade) } on chng trnh sp xp theo kiu Tile Horizontal private void mnuTile_Click ( Object sender , System.EventArgs e) { this.LayoutMdi (MdiLayout.TileHorizontal) }
17

Sp t cc child form
Cascade TileHorizontal TileVertical

18

V d MDI minh ho :
Ngoi ra, c th to ra cc cch sp xp ring ty theo mi ng dng. V d, on chng trnh sau cho php thu nh li tt c cc ca s ang m. void mnuMinimizeAll_Click (Object sender, System.EventArgs e) { foreach (Form frm in this.MdiChildren) frm.WindowState = FormWindowState.Minized; }
19 20

Coding
Vit s kin cho Menu New: frmChildForm frmChil = new frmChildForm(); frmChil.MdiParent = this; frmChil.Show(); Vit s kin cho Menu Close Form: if (this.ActiveMdiChild != null) this.ActiveMdiChild.Close(); Vit s kin cho Menu Close All Form: foreach (Form frm in this.MdiChildren) { frm.Dispose(); }

Coding
Vit s kin cho Menu Window Cascade: this.LayoutMdi(MdiLayout.Cascade); Vit s kin cho Menu Window Horizontal: this.LayoutMdi(MdiLayout.TileHorizontal); Vit s kin cho Menu Window Verital: this.LayoutMdi(MdiLayout.TileVertical); Chy v th nghim ng dng

21

22

Bi tp MDI
To ng dng MDI: PixView xem nh To ng dng MDI trong
Form cha
Chc nng open: m file nh t a Gi form con hin th nh Cho php sp xp cc ca s con

Multiple Document Interface


Bc 1: To ng dng Windows App
Thit lp Form1 l form cha

Form con
Ly thng tin file t form cha Hin th file nh ln PictureBox
MDI

23

24

Multiple Document Interface


Bc 2: to form con
Trong ca s Solution Explorer kch chut phi ln tn Project Chn Add -> Windows Form t tn cho form con

Multiple Document Interface


Bc 3: b sung control PictureBox vo Form2 Thit lp cc thuc tnh cho PictureBox
Dock = Fill SizeMode = CenterImage

25

26

Multiple Document Interface


Bc 4: b sung constructor cho form2,
Constructor ny c tham s l tn file cn m

Multiple Document Interface


Bc 5: to menu cho form chnh (Form1) Ko MenuStrip th vo Form1
To cc top menu:
File Open Exit Window Cascade TileHorizontal TileVertical

27

28

Multiple Document Interface


Bc 6: vit phn x l cho menu item Open
Trong mn hnh thit k kch p vo menu item Open VS.NET s to trnh x l cho menu item Phn x l c m t nh sau
M dialog chn file User chn 1 file nh Ly ng dn file nh To mi i tng form2 truyn tham s ng dn file Thit lp lin kt gia form cha v form con Hin th form2 ra mn hnh

Multiple Document Interface


on code minh ha x l cho menu item Open

29

30

Multiple Document Interface


B sung cc chc nng sp xp form con
Kch p vo cc menu item tng ng trn menu Window Vit cc x l cho cc menu item
Gi hm LayoutMdi vi cc tham s tng ng

Multiple Document Interface

31

32

i hc S phm Tp. H Ch Minh Khoa Ton Tin hc

LP TRNH WINDOWS

i hc S phm Tp. H Ch Minh Khoa Ton Tin hc

LP TRNH WINDOWS

Lp trnh c s d liu vi th vin ADO.NET

Lp trnh c s d liu vi th vin ADO.NET

Tng quan v lp trnh CSDL Th vin ADO.NET Lp trnh CSDL vi ADO.NET


Lng Trn Hy Hin - Email: hienlth@hcmup.edu.vn

Tng quan v lp trnh CSDL Th vin ADO.NET Lp trnh CSDL vi ADO.NET

ng dng qun l
BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

ng dng Windows (Windows Application)


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

H thng qun l hc sinh: lu tr thng tin lin quan n hc sinh H thng qun l sinh vin: lu tr thng tin lin quan n sinh vin H thng qun l nhn s: lu tr thng tin lin quan n nhn vin trong cng ty H thng qun l tin lng H thng qun l k ton H thng qun tr d n ..
LNG TRN HY HIN FIT, HCMUP (3)

Thng tin hc sinh c lu tr nh th no ?


LNG TRN HY HIN FIT, HCMUP (4)

ng dng Windows (Windows Application)


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

Mu biu trong cc ng dng


TNG QUAN LP TRNH CSDL Thng tin th hin trn bo co c ly t u ?

TNG QUAN LP TRNH CSDL

Thng tin nhn vin c lu tr nh th no ?


LNG TRN HY HIN FIT, HCMUP (5)

LNG TRN HY HIN

FIT, HCMUP

(6)

Mu biu trong cc ng dng


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

D liu trong cc ng dng qun l


TNG QUAN LP TRNH CSDL Thng tin hc sinh c lu tr nh th no ? Tt c thng tin lin quan n hc sinh nh: L lch hc sinh, im thi, chuyn cn, lp hc, khi. c lu tr trong C S D LIU Thng tin nhn vin c lu tr nh th no ? Tt c thng tin lin quan n nhn vin nh: L lch nhn vin, qu trnh cng tc, qu trnh lng, khen thng, k lut.c lu tr trong C S D LIU Thng tin th hin trn bo co c ly t u ? Tt c thng tin th hin trn bo co c ly t C S D LIU
LNG TRN HY HIN FIT, HCMUP (8)

TNG QUAN LP TRNH CSDL Thng tin th hin trn bo co c ly t u ?


LNG TRN HY HIN FIT, HCMUP (7)

Tng tc d liu: thm, xa,...


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

Tng tc d liu: thm, xa,...


TNG QUAN LP TRNH CSDL
Thm d liu Cp nht d liu Xa d liu Ly d liu

TNG QUAN LP TRNH CSDL

Ly d liu

Thm d liu Xa d liu Sa d liu


FIT, HCMUP (9)

Tt c cc thao tc THM, XA, SA, TRUY VN d liu u lin quan n ngn SQL: INSERT, DELETE, UPDATE, SELECT
LNG TRN HY HIN FIT, HCMUP (10) 10)

LNG TRN HY HIN

Lnh INSERT
BI GING HC PHN LP TRNH WINDOWS

Lnh DELETE
BI GING HC PHN LP TRNH WINDOWS

TNG QUAN LP TRNH CSDL

C php (thm 1 dng)


INSERT INTO <tn bng>(<danh sch cc thuc tnh>) VALUES (<danh sch cc gi tr>)
Thm mi mt nhn vin c h = L, tn lt = Vn, tn = Tuyn vi m s = NV001 vo Table NhanVien
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV) VALUES (NL, NVn, NTuyn, NV001)

TNG QUAN LP TRNH CSDL

Dng thm 1 hay nhiu dng vo Table trong CSDL

Dng xa cc dng ca bng C php


DELETE FROM <tn bng> [WHERE <iu kin>]
Xo nhn vin c m s = 345345345 trong Table NhanVien DELETE FROM NHANVIEN WHERE MANV=345345345 Xo tt c nhn vin c trong Table NhanVien DELETE FROM NHANVIEN
LNG TRN HY HIN FIT, HCMUP (12) 12)

LNG TRN HY HIN

FIT, HCMUP

(11) 11)

Lnh UPDATE
BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

Lnh UPDATE
TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Dng thay i gi tr ca thuc tnh cho cc dng ca bng C php


UPDATE <tn bng> SET <tn thuc tnh>=<gi tr mi>, <tn thuc tnh>=<gi tr mi>, [WHERE <iu kin>]

V d
Sa thuc tnh ngy sinh ca nhn vin c m s = 345345345 trong Table NhanVien l 08/12/1965 UPDATE NHANVIEN SET NGSINH=08/12/1965 WHERE MANV=333445555 Sa thuc tnh lng ca tt c nhn vin bng lng c * 1.1

UPDATE NHANVIEN SET LUONG=LUONG*1.1

LNG TRN HY HIN

FIT, HCMUP

(13 13) )

LNG TRN HY HIN

FIT, HCMUP

(14) 14)

C PHP CU LNH SELECT


BI GING HC PHN LP TRNH WINDOWS

Lp trnh CSDL
BI GING HC PHN LP TRNH WINDOWS

trong ng dng qun l


Thnh phn giao din

TNG QUAN LP TRNH CSDL

SELECT FROM WHERE GROUP BY HAVING ORDER BY

TNG QUAN LP TRNH CSDL

<Danh sch cc ct c chn> < Danh sch cc bng> <iu kin chn> <Danh sch ct cn nhm> < iu kin nhm> < Danh sch ct cn sp xp>

CT Nhn s

Kt ni CSDL

Giao tip d liu

Dng ly d liu t CSDL hin th ln mn hnh, report,

CSDL

Thnh phn d liu

LNG TRN HY HIN

FIT, HCMUP

(15 15) )

LNG TRN HY HIN

FIT, HCMUP

(16) 16)

Lp trnh CSDL trong ng dng qun l


BI GING HC PHN LP TRNH WINDOWS

Mt s h qun tr CSDL thng dng


BI GING HC PHN LP TRNH WINDOWS

TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

CT Nhn s

Thnh phn giao din: Visual Basic, Visual C++, C#, VB.NET, Delphi Giao tip d liu: ODBC, DAO, ADODB, ADO.NET,..

Thnh phn d liu: MS Access, SQL Server, Oracle, MS Access 2000/XP/2003 MS SQL Server 7.0/2000/2005

Kt ni CSDL

CSDL

Oracle 8i/9i/10i/11i My SQL

CSDL

Thnh phn d liu: MS Access, SQL Server, Oracle,


LNG TRN HY HIN

FIT, HCMUP

(17 17) )

LNG TRN HY HIN

FIT, HCMUP

(18) 18)

H qun tr CSDL MS Access


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

H qun tr CSDL MS Access


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Thnh phn nh ngha cu trc CSDL

LNG TRN HY HIN

FIT, HCMUP

(19 19) )

LNG TRN HY HIN

FIT, HCMUP

(20) 20)

H qun tr CSDL MS Access


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

H qun tr CSDL SQL Server


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Thnh phn khai thc d liu

LNG TRN HY HIN

FIT, HCMUP

(21 21) )

LNG TRN HY HIN

FIT, HCMUP

(22) 22)

H qun tr CSDL SQL Server


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

H qun tr CSDL SQL Server


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Thnh phn nh ngha cu trc CSDL

Thnh phn khai thc d liu

LNG TRN HY HIN

FIT, HCMUP

(23 23) )

LNG TRN HY HIN

FIT, HCMUP

(24) 24)

CSDL SQL Server trong ng dng qun l


BI GING HC PHN LP TRNH WINDOWS

TNG QUAN LP TRNH CSDL

CT K ton

CT Nhn s

CT Tin lng

SQL Server 2005


Kt ni CSDL Kt ni CSDL Kt ni CSDL

CSDL
LNG TRN HY HIN

FIT, HCMUP

(25 25) )

GIAO TIP CLIENT-SERVER TRONG SQL SERVER


BI GING HC PHN LP TRNH WINDOWS

GIAO TIP CLIENT-SERVER TRONG SQL SERVER


TNG QUAN LP TRNH CSDL

LNG TRN HY HIN

FIT, HCMUP

(27 27) )

LNG TRN HY HIN

FIT, HCMUP

(28) 28)

GIAO TIP CLIENT-SERVER TRONG SQL SERVER


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

CI T SQL SERVER
TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Trng hp ci Visual Studio 2005:


Ci thm file SQL Server Management Studio Express

LNG TRN HY HIN

FIT, HCMUP

(29 29) )

LNG TRN HY HIN

FIT, HCMUP

(30) 30)

SQL SERVER LOGIN AUTHENTICATION


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

SQL SERVER PERMISSION


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

LNG TRN HY HIN

FIT, HCMUP

(31 31) )

LNG TRN HY HIN

FIT, HCMUP

(32) 32)

SQL SERVER USER & ROLE


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

KIN TRC TNG TH SQL SERVER


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

LNG TRN HY HIN

FIT, HCMUP

(33 33) )

LNG TRN HY HIN

FIT, HCMUP

(34) 34)

KIN TRC TNG TH SQL SERVER


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

SQL 2005 (All in One)


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Connect SQL Server 2005

LNG TRN HY HIN

FIT, HCMUP

(35 35) )

LNG TRN HY HIN

FIT, HCMUP

(36) 36)

SQL 2005 (All in One)


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

SQL Server Object


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Database Table View Stored Procedure Trigger User-defined Type User-defined Function
LNG TRN HY HIN FIT, HCMUP (38) 38)

LNG TRN HY HIN

FIT, HCMUP

(37 37) )

SQL Server Object - Database


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

SQL Server Management Studio


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

Click phi chut ti v tr (mc) Databases Chn mc New Database trong menu context, xut hin mn hnh thm mi Database

LNG TRN HY HIN

FIT, HCMUP

(39 39) )

LNG TRN HY HIN

FIT, HCMUP

(40) 40)

Create Database in SQL 2005

SQL Server - Add New Database


Database name Nhp vo tn DB cn to vo mc Name : MyDB, SQL Server mc nh lu tp tin *.mdf vo th mc
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

vi tn tp tin tng ng nh sau MyDB_Data.mdf, nu mun thay i th mc vo phn Path bm chn th mc thay i Data Files Thng tin v tp tin MDF Log file File theo di li xy ra, qu trnh thao tc n Server, Mc nh to file log mc nh MyDB_Log.ldf trong cng th mc vi file Data.

LNG TRN HY HIN

FIT, HCMUP

(41 41) )

LNG TRN HY HIN

FIT, HCMUP

(42) 42)

SQL Server - Transaction log


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

Create Table in SQL 2005


TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

LNG TRN HY HIN

FIT, HCMUP

(43 43) )

LNG TRN HY HIN

FIT, HCMUP

(44) 44)

SQL Server Object - Tables


BI GING HC PHN LP TRNH WINDOWS

SQL Server Object - Tables


Xc nh kha chnh Chn filed lm kha trong grid sau chn vo Kha trn thanh Toolbar Trong trng hp chn nhiu filed lm kha chng ta thc hin Nu chn cc field lin tip thc hin Chn field u Nhn Shift v chn field cui Nu chn cc field khng lin tip nhau th thc hin Chn field u tin Nhn Ctrl v chn cc field l kha

TNG QUAN LP TRNH CSDL

Nhp vo tn ca cc Field ca Table trong gird Chn kiu d liu (Datatype) cho cc field tng ng bao gm Kiu chui: char, varchar, nchar, nvarchar, Kiu s: int, decimal,.. Kiu thi gian: datetime, timestamp Kiu lun l (Yes/No) : bit i vi kiu chui, s chn chiu di tng ng trong mc Length i vi kiu d liu mun tng t ng (kiu s) th chn Identity: tng t ng, ngi dng khng nhp c, thng c dng lm kha chnh Identity Seed: Gi tr khi u Identity Increment : khong cch gia 2 gi tr lin tip nhau V d : Nu cho field MaSV l Identity, Identity Seed = 100 v Identity Increment = 10 th gi tr MSSV s ln lt pht sinh nh sau 100, 110, 120.. (mi ln tng 10 n v) Lu Mi bng ch c mt ct identity Khng th cp nht ct identity. Ct Identity khng c NULL

LNG TRN HY HIN

FIT, HCMUP

(45 45) )

LNG TRN HY HIN

FIT, HCMUP

(46) 46)

SQL Server Object - Tables


BI GING HC PHN LP TRNH WINDOWS

NGN NG LP TRNH T-SQL

TNG QUAN LP TRNH CSDL

Xa table Click vo mc Tables hin th danh sch Table tng ng (bn phi) Chn table trong danh sch Tables Click phi chut vo mc table cn xa, vd: MyTable Chn mc Delete trong menu context Sa Table Click vo mc Tables hin th danh sch Table tng ng (bn phi) Chn table trong danh sch Tables Click phi chut vo mc table cn sa, vd: MyTable Chn mc Design Table trong menu context Xut hin mn hnh tng t nh mn hnh New Table chng ta thit k li Table i tn Table Click vo mc Tables hin th danh sch Table tng ng (bn phi) Chn table trong danh sch Tables Click phi chut vo mc table cn i tn, vd: MyTable Chn mc Rename trong menu context Nhp tn mi vo Nhp liu choTable Click vo mc Tables hin th danh sch Table tng ng (bn phi) Chn table trong danh sch Tables Click phi chut vo mc table cn nhp liu, vd: MyTable Chn mc Open Table trong menu context Chn mc Return all rows Xut hin mn hnh cho php nhp liu cho Table ang chn

LNG TRN HY HIN

FIT, HCMUP

(47 47) )

LNG TRN HY HIN

FIT, HCMUP

(48) 48)

NGN NG LP TRNH T-SQL


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

C PHP CU LNH SELECT


TNG QUAN LP TRNH CSDL <Danh sch cc ct c chn> < Danh sch cc bng> <iu kin chn> <Danh sch ct cn nhm> < iu kin nhm> < Danh sch ct cn sp xp>

TNG QUAN LP TRNH CSDL

NGN NG LP TRNH T-SQL CU LNH SELECT CU LNH INSERT/DELETE/UPDATE

SELECT FROM WHERE GROUP BY HAVING ORDER BY

LNG TRN HY HIN

FIT, HCMUP

(49 49) )

LNG TRN HY HIN

FIT, HCMUP

(50) 50)

CU LNH SELECT SELECT


BI GING HC PHN LP TRNH WINDOWS

CU LNH SELECT SELECT


BI GING HC PHN LP TRNH WINDOWS

TNG QUAN LP TRNH CSDL

TNG QUAN LP TRNH CSDL

SELECT FROM WHERE GROUP BY HAVING ORDER BY

<Danh sch cc ct c chn> < Danh sch cc bng> <iu kin chn> <Danh sch ct cn nhm> < iu kin nhm> < Danh sch ct cn sp xp>

ngha : Chn nhng thng tin (field) cn xem t database. Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) Yu cu Lit k tn v ngy sinh ca tt c cc hc sinh SELECT TenHS, NgaySinh FROM HocSinh Vd2 : Cho quan h HoaDon(MaHD, TenKH, SoLuong, DonGia) Yu cu Lit k Ho n ca khch hng v Thu VAT ca ha n vi VAT c tnh bng nh sau: VAT = s lng * n gi * 10% Nhn xt: Thu VAT khng phi l filed trong DB, n l kt qu ca biu thc SoLuong * DonGia * 10% SELECT MaHD, TenKH, Soluong * DonGia * 0.1 as VAT FROM HoaDon LNG TRN HY HIN FIT, HCMUP (51 51) )

SELECT FROM WHERE GROUP BY HAVING ORDER BY

<Danh sch cc ct c chn> < Danh sch cc bng> <iu kin chn> <Danh sch ct cn nhm> < iu kin nhm> < Danh sch ct cn sp xp>

Nhn xt: Trong mnh SELECT cho php chng ta thc hin chn Danh sch cc Field trong cc Table (vd1) Biu thc tnh ton bao gm t hp cc php tnh ca cc field v cc hng s khc (vd2) Ngoi ra trong mnh SELECT chng ta c th s dng cc hm gp nh SUM, MAX, MIN, AVG, COUNT ca cc field, phn ny s c gii thch v minh ha trong mc GROUP BY

LNG TRN HY HIN

FIT, HCMUP

(52) 52)

CU LNH SELECT FROM


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

CU LNH SELECT FROM


TNG QUAN LP TRNH CSDL
Vd2: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NamHoc,Diem) Yu cu Lit k tn, im thi ca mi hc k trong tng nm hc ca hc sinh Cch 1: SELECT TenHS, HocKy,NamHoc,Diem FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS Cch 2: dng php JOIN SELECT TenHS, HocKy,NamHoc,Diem FROM HocSinh JOIN DiemThi ON HocSinh.MaHS = DiemThi.MaHS

TNG QUAN LP TRNH CSDL

SELECT FROM WHERE GROUP BY HAVING ORDER BY

<Danh sch cc ct c chn> < Danh sch cc bng> <iu kin chn> <Danh sch ct cn nhm> < iu kin nhm> < Danh sch ct cn sp xp>

ngha Cho bit thng tin c chn trong mnh SELECT c ly t nhng Table no vi iu kin kt (Join) nh th no? V d Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) Yu cu Lit k tn v ngy sinh ca tt c cc hc sinh SELECT TenHS, NgaySinh FROM HocSinh

LNG TRN HY HIN

FIT, HCMUP

(53 53) )

LNG TRN HY HIN

FIT, HCMUP

(54) 54)

CU LNH SELECT JOIN


BI GING HC PHN LP TRNH WINDOWS BI GING HC PHN LP TRNH WINDOWS

CU LNH SELECT LEFT JOIN


TNG QUAN LP TRNH CSDL
C php TableA LEFT JOIN TableB ON JoinCondition ngha :Thc hin php kt gia 2 TableA v TableB, kt qu ca php kt l nhng dng trong tha mn iu kin kt, cng vi nhng tn ti trong TableA khng kt c vi TableB, gi tr ti cc Field c chn t TableB trong mnh SELECT l NULL. V d: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NH,Diem) HocSinh DiemThi

TNG QUAN LP TRNH CSDL

INNER JOIN C php TableA INNER JOIN TableB ON JoinCondition ngha : Thc hin php kt gia 2 TableA v TableA, kt qu ca php kt l nhng dng trong tha mn iu kin kt V d Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NH,Diem) HocSinh DiemThi

MaHS

TenHS

NgaySinh

DiaChi

MaHS

Hoc Ky 01

NH

Diem

MaHS

TenHS

NgaySinh

DiaChi

MaHS

Hoc Ky 01

NH

Diem

01

Hang

10/10/1984

123

01

2007

10

01

Hang

10/10/1984

123

01

2007

10

02

Phu

11/10/1079

124

03

01

2008

02

Phu

11/10/1079

124

03

01

2002

SELECT TenHS, Diem, HocKy,NH FROM HocSinh INNER JOIN DiemThi ON HocSinh.MaHS=DiemThi.MaHS

Kt qu TenHS Hang Diem 10 HocKy 01 NH 2007

SELECT TenHS, Diem, HocKy,NH FROM HocSinh LEFT JOIN DiemThi ON HocSinh.MaHS=DiemThi.MaHS TenHS Hang Phu

Kt qu Diem 10 NULL HocKy 01 NULL NH 2007 NULL

LNG TRN HY HIN

FIT, HCMUP

(55 55) )

LNG TRN HY HIN

FIT, HCMUP

(56) 56)

CU LNH SELECT RIGHT JOIN


C php TableA RIGHT JOIN TableB ON JoinCondition ngha :Thc hin php kt gia 2 TableA v TableB, kt qu ca php kt l nhng dng trong tha mn iu kin kt, cng vi nhng tn ti trong TableB khng kt c vi TableB, gi tr ti cc Field c chn t TableA trong mnh SELECT l NULL. V d: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NH,Diem) HocSinh DiemThi

CU LNH SELECT FULL JOIN


C php TableA FULL JOIN TableB ON JoinCondition ngha :Thc hin php kt gia 2 TableA v TableB, kt qu l php Hi (Union) gia php kt LEFT JOIN v php RIGHT JOIN V d: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NH,Diem) HocSinh DiemThi

MaHS

TenHS

NgaySinh

DiaChi

MaHS

Hoc Ky 01

NH

Diem MaHS TenHS NgaySinh DiaChi MaHS Hoc Ky 01 NH Diem

01

Hang

10/10/1984

123

01

2007

10 01 Hang 10/10/1984 123 01 2007 10 Kt qu TenHS Diem 10 8 NULL HocKy 01 01 NULL NH 2007 2002 NULL

02

Phu

11/10/1079

124

03

01

2002

8 02 Phu 11/10/1079 124 03 01 2002 8 Hang NH 2007 2002 SELECT TenHS, Diem, HocKy,NH FROM HocSinh FULL JOIN DiemThi ON HocSinh.MaHS=DiemThi.MaHS NULL Phu

SELECT TenHS, Diem, HocKy,NH FROM HocSinh RIGHT JOIN DiemThi ON HocSinh.MaHS=DiemThi.MaHS

Kt qu TenHS Hang NULL Diem 10 8 HocKy 01 01

LNG TRN HY HIN

FIT, HCMUP

(57 57) )

LNG TRN HY HIN

FIT, HCMUP

(58) 58)

CU LNH SELECT CROSS JOIN


C php TableA CROSS JOIN TableB ngha : Tng t nh php nhn ( tch Decat) gia 2 table, kt qu l nhng b bao gm gi tr ca TableA v TableB, tng s dng trong bng kt qu = s dng trong TableA * s dng trong TableB V d Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NH,Diem) HocSinh DiemThi

CU LNH SELECT WHERE


ngha iu kin dng lc kt qu c chn trong mnh SELECT V d Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) Yu cu Lit k tn v ngy sinh ca tt c cc hc sinh c a ch TPHCM SELECT TenHS, NgaySinh FROM HocSinh WHERE DiaChi = TPHCM Vd2: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NamHoc,Diem) Yu cu Lit k tn, im thi ca mi hc k trong tng nm hc ca hc sinh c im thi ln hn bng 6 SELECT TenHS, HocKy,NamHoc,Diem FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS AND Diem>=6

MaHS

TenHS

NgaySinh

DiaChi

MaHS

Hoc Ky 01

NH

Diem

01

Hang

10/10/1984

123

01

2007

10

02

Phu

11/10/1079

124

03

01

2002

Kt qu MaHS SELECT HocSinh.MaHS, DiemThi.MaHS, TenHS, Diem, HocKy,NH FROM HocSinh CROSS JOIN DiemThi 01 02 01 02 MaHS 01 01 03 03 TenHS Hang Phu Hang Phu Diem 10 10 8 8 HocKy 01 01 01 01 NH 2007 2007 2002 2002

LNG TRN HY HIN

FIT, HCMUP

(59 59) )

LNG TRN HY HIN

FIT, HCMUP

(60) 60)

CU LNH SELECT GROUP BY


ngha iu kin dng lc gom nhm theo cc ct ca nhng dng ging nhau trong kt qu chn trong mnh SELECT Thng dng GROUP BY vi cc hm gp

CU LNH SELECT GROUP BY


V d: Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NamHoc,Diem) Yu cu Lit k tn, im trung bnh trong tng nm hc ca hc sinh SELECT TenHS, NamHoc,AVG(Diem) FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS GROUP BY TenHS, NamHoc Yu cu Lit k tn, im ln nht ca mi hc sinh SELECT TenHS, MAX(Diem) FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS GROUP BY TenHS Lu : Khi dng GROUP BY th tt c cc ct c dng trong SELECT (ngoi tr cc ct trong hm gp) phi xut hin trong mnh GROUP BY. Cc ct c dng trong GROUP BY c th khng cn xut hin trong mnh SELECT, nhng khi kt qu s d gy hiu lm (thiu thng tin).

Aggregate Function
AVG COUNT COUNT(*) MAX MIN SUM STDEV STDEVP VAR VARP

Description
Tnh gi tr tung bnh. m s gi tr khc null m s hng trong mt bng hoc mt nhm bao gm c gi tri null hoc lp. Tm gi tr ln nht Tm gi t nh nht Tnh tng tt c cc gi tr. lch thng k ca mi gi tr. lch thng k i vi tp hp chung c tnhca mi gi tr. Phng sai thng k ca mi gi tr. Phng sai thng k i vi tp hp chung c tnh ca mi gi tr.

LNG TRN HY HIN

FIT, HCMUP

(61 61) )

LNG TRN HY HIN

FIT, HCMUP

(62) 62)

CU LNH SELECT HAVING


ngha iu kin dng lc kt qu c chn sau khi gom nhm, thng c dng vi GROUP BY V d Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NamHoc,Diem) Yu cu Lit k tn ca hc sinh c im trung bnh trong tng nm hc ln hn bng 7 SELECT TenHS, NamHoc,AVG(Diem) FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS GROUP BY TenHS, NamHoc HAVING AVG(Diem) >=7

CU LNH SELECT ORDER BY


ngha Dng sp xp kt qu theo tiu chun (cc ct) c chn V d Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) DiemThi(MaHS,HocKy,NamHoc,Diem) Yu cu Lit k danh sch hc sinh theo th t ABC ca tn SELECT * FROM HocSinh ORDER BY TenHS Yu cu Lit k danh sch hc sinh theo th t tng dn ca im thi v tn SELECT Diem,TenHS FROM HocSinh, DiemThi WHERE HocSinh.MaHS = DiemThi.MaHS ORDER BY Diem,TenHS Kt qu: danh sch hc sinh c sp theo th t tng dn ca im thi, nu hai hc sinh c im thi bng nhau thi, s c sp theo th t tn

LNG TRN HY HIN

FIT, HCMUP

(63 63) )

LNG TRN HY HIN

FIT, HCMUP

(64) 64)

CU LNH SELECT HAVING & WHERE


Ch dng mnh HAVING vi mnh GROUP BY tm kim bng nhm. Dng mnh HAVING m khng c mnh GROUP BY l v ngha. C th c trn n 128 iu kin trong mt mnh GROUP BY. Khi c nhiu iu kin th t hp chng li bng cc php ton logic AND, OR, NOT. Trong mnh HAVING, c th tham kho bt k ct no xut hin trong danh sch chn m c cha hm gp. Khng th tham kho hm gp trong mnh WHERE. Mnh HAVING c p ng sau t kha ALL th mnh HAVING c quyn u tin hn t kha ALL v ch tr v nhng nhm tha mn mnh HAVING.
LNG TRN HY HIN FIT, HCMUP (65 65) )

QUI TRNH X L CU LNH SELECT


SELECT FROM WHERE GROUP BY HAVING ORDER BY Col1,Col2,Col3,..ColN TableA, TableB, DK1 AND DK2 AND DK3 ColA, ColB, ColC DKG1 AND DKG2 AND ColX, ColY, ColZ,

LNG TRN HY HIN

FIT, HCMUP

(66) 66)

QUI TRNH X L CU LNH SELECT


BI GING HC PHN LP TRNH WINDOWS

CU LNH INSERT/DELETE/UPDATE
TNG QUAN LP TRNH CSDL
Cu lnh INSERT C php INSERT INTO < TableName> <ColumnList> VALUES < Value1, Value2,... > V d Vd1: Cho quan h HocSinh(MaHS, TenHS, NgaySinh, DiaChi) Yu cu : Thm b sau vo Table hc sinh (001,Nguyen Van A,08/20/2002,a) INSERT INTO HocSinh VALUES (001,Nguyen Van A,08/20/2002,a) Cu lnh UPDATE C php UPDATE < Tn bng> SET Tn ct 1 = gi tr , Tn ct = gi tr , ... WHERE < iu kin> Cu lnh DELETE C php DELETE FROM < Tn bng> WHERE < iu kin>

FROM

CSDL

Tp kt qu 1 WHERE Tp kt qu 2 GROUP BY Tp kt qu 3 HAVING Tp kt qu 4 ORDER BY Tp kt qu 5 KT QU


CUI CNG

SELECT

LNG TRN HY HIN

FIT, HCMUP

(67 67) )

LNG TRN HY HIN

FIT, HCMUP

(68) 68)

SQL Server Object - Views


BI GING HC PHN LP TRNH WINDOWS

SQL Server Object Stored Procedure


Khi nim
Stored Procedure l cc th tc c xy dng thc hin cc x l lin quan n vic d liu. Stored Procedure c lu tr v thi hnh ngay trong Server khi c yu cu.

TNG QUAN LP TRNH CSDL

Cc thao tc lin quan n Stored Procedure


To Stored Procedure M DB cn to table bng cch click vo du + bn tri tn ca DB hin th cc mc con trong DB. V d: Diagrams, Tables, Views, Stored procedure, Click phi chut vo mc Stored procedures Chn chc nng New Stored procedure trong menu s xung, xut hin dialog son tho ni dung ca stored

LNG TRN HY HIN

FIT, HCMUP

(69 69) )

LNG TRN HY HIN

FIT, HCMUP

(70) 70)

SQL Server Object Stored Procedure


BI GING HC PHN LP TRNH WINDOWS

SQL Server Object Stored Procedure


To Stored Procedure t tn Stored trong [PROCEDURE NAME] Vit ni dung stored Sau khi vit xong ni dung x l trong stored Nhn Check Syntax: kim tra c php ca cc cu lnh trong stored Nhn OK: Lu stored Nhn Cancel: hy b thao tc to Sa Stored Procedure Click vo mc Stored procedures hin th danh sch Stored procedure tng ng (bn phi) Chn Stored procedure trong danh sch Stored procedures Click phi chut vo mc Stored procedure cn sa, vd: MyStoredPro Chn mc Properties trong menu context Xut hin mn hnh tng t nh mn hnh Stored procedure Thc hin cc thao tc tng t nh phn to Xa Stored Procedure Click vo mc Stored procedures hin th danh sch Stored procedure tng ng (bn phi) Chn Stored procedure trong danh sch Stored procedure Click phi chut vo mc Stored procedure cn xa, vd: MyStoredPro Chn mc Delete trong menu context

TNG QUAN LP TRNH CSDL

LNG TRN HY HIN

FIT, HCMUP

(71 71) )

LNG TRN HY HIN

FIT, HCMUP

(72) 72)

SQL Server Object Stored Procedure


CREATE PROCEDURE StoredName @Parameter1 DataType [=DefaultValue,] @Parameter2 DataType OUTPUT, @Parameter3 DataType OUTPUT AS BEGIN BEGIN TRANSACTION {T-SQL Statement1} If @Error <> 0 Goto Err_Handle {T-SQL Statement2} If @Error <> 0 Goto Err_Handle COMMIT TRANSACTION Return(0) Err_Handle: ROLLBACK TRANSACTION Return(@Error) END

SQL Server Object Stored Procedure


Cu trc ca mt Stored Procedure bao gm cc phn chnh sau y Phn Tn C php CREATE PROCEDURE StoredName ngha nh ngha th tc ni vi tn l StoredName V d CREATE PROCEDURE DemNhanVien AS SELECT Count(*) FROM NhanVien Phn tham s Tng t nh bt k mt th tc no trong mt ngn ng lp trnh, phn tham s ca mt Stored c khai bo ngay sau phn tn ca n. Tham s nhp C php: @Parameter1 DataType [=DefaultValue] @Parameter1: Tn ca bin s DataType: Kiu d liu ca bin DefaultValue: Gi tr mc nh ca bin

LNG TRN HY HIN

FIT, HCMUP

(73 73) )

LNG TRN HY HIN

FIT, HCMUP

(74) 74)

SQL Server Object Stored Procedure


CREATE PROCEDURE TruyenThamSo @param0 int=NULL, -- Gi tr mc nh l NULL @param1 int=1, -- Gi tr mc nh l 1 @param2 int=2 -- Gi tr mc nh l 2 AS SELECT @param0, @param1, @param2 Vi cu lnh thc thi th tc TruyenThamSo EXEC TruyenThamSo Kt qu (Null) 1 2 EXEC TruyenThamSo 10,20,30 Kt qu 10 20 30 EXEC TruyenThamSo @param2=200, @param1=NULL Kt qu Null Null 200 EXEC TruyenThamSo 0, DEFAULT, 20 Kt qu 0 1 200

SQL Server Object Stored Procedure


Tham s xut
C php: @Parameter1 DataType OUTPUT @Parameter1: Tn ca bin s DataType: Kiu d liu ca bin DefaultValue: Gi tr mc nh ca bin V d: --Khai bo th tc CREATE PROCEDURE count_tables @authorcount int OUTPUT, @titlecount int OUTPUT AS SELECT * FROM authors SET @authorcount=@@ROWCOUNT SELECT * FROM titles SET @titlecount=@@ROWCOUNT RETURN(0) --Thc thi th tc DECLARE @a_count int, @t_count int EXEC count_tables @a_count OUTPUT, @t_count OUTPUT

LNG TRN HY HIN

FIT, HCMUP

(75 75) )

LNG TRN HY HIN

FIT, HCMUP

(76) 76)

KHAI BO BIN

KHAI BO BIN
Khai bo bin
C php DECLARE @Name DataType @Name: l tn ca bin, phi c bt u vi k t @ DataType: kiu d liu ca bin, bao gm tt c cc kiu d liu ca h thng tr cc kiu sau: text, ntext, image. V d --Khai bo bin lu tr s Record trong mt Table no DECLARE @nNumRecord int --Khai bo bin lu tr s tng s tin DECLARE @SumMoney decimal(18,2) --Khai bo bin lu tr tn DECLARE @sName char(30)

LNG TRN HY HIN

FIT, HCMUP

(77 77) )

LNG TRN HY HIN

FIT, HCMUP

(78) 78)

KHAI BO BIN
C php 1: SET @Name = Value @Name: Tn bin Value: Gi tr cn gn cho bin C php 2: SELECT @Name = Value @Name: Tn bin Value: Gi tr cn gn cho bin Hoc SELECT @Name = coloum FROM TableName @Name: Tn bin Column: Tn ct trong Table cn gn cho bin V d C php 1: DECLARE @HoTen char(20) SET @HoTen = Nguyn Cng Ph C php 2: DECLARE @HoTen char(20) SELECT @HoTen = Nguyn Cng Ph hoc --Tm lng ln nht ca tt c cc nhn vin DECLARE @MaxSalary decimal(18,2) SELECT @MaxSalary = MAX(Salary) FROM Employee

SQL Server Object Local Variables


Cc bin c s dng trong cu truy vn nh l cc tham s. -Cho lc CSDL v d liu tng ng nh sau:
HocSinh DiemThi

MaHS

TenHS

NgaySinh

DiaChi

MaHS

HocKy

NH

Diem

01

Hang

10/10/1984

123

01

01

2007

10

02

Phu

11/10/1079

124

03

01

2002

-V d 1: Lit k danh sch hc sinh c ngy sinh vo ngy 10/10/1977 DECLARE @NgaySinh datetime SET @NgaySinh=10/10/1984 SELECT * FROM HocSinh WHERE NgaySinh = @NgaySinh

V d 3: Lit k danh sch cc hc sinh c a ch l 123 v im thi ln hn 10 DECLARE @DiaChi varchar(50), @Diem Decimal SELECT @DiaChi=123, @Diem=10 SELECT * FROM HocSinh JOIN DiemThi ON HocSinh.MaHS = DiemThi.MaHS WHERE DiaChi = @DiaChi AND DiemThi >= @Diem

LNG TRN HY HIN

FIT, HCMUP

(79 79) )

LNG TRN HY HIN

FIT, HCMUP

(80) 80)

Ni dung

ADO.NET
Lng Trn Hy Hin hienlth@hcmup.edu.vn

ADO.NET S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

Gii thiu ADO.NET

Gii thiu ADO.NET


ActiveX Data Object .NET (ADO.NET)
Cng ngh ca MS Pht trin t nn tng ADO Cung cp cc lp i tng v hm th vin phc v cho vic kt ni v x l d liu

M hnh .NET Framework


Microsoft .NET Framework

Web Services

User Interface

Data and XML ADO.NET ADO.NET Base Classes .NET Application Common Language Runtime XML ... ...

Ni dung
ADO.NET

S lc lch s pht trin


Native API
DB API DB API DB API

S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

Application Database

Open Data ataB Base Connectivity


DB API

Driver
ODBC API

DB API DB API

ODBC

Driver Driver

Application
5

Database

S lc lch s pht trin (cont)


OLEDB v ADO
Provider

S lc lch s pht trin (cont)


ADO.NET

ADO OLE DB Application

Provider

Non-Relational Data
Provider Provider

Driver

ODBC Driver
Driver

Relational Data

OLE: Object Linking and Embedding


7 8

Introduction

ADO.NET architecture

Stored into

XML
Database (Oracle, SQL Server)

XML
Database
9 10

ADO.NET
Client Data access technology

ADO.NET (tt)
H tr bi .Net Platform S dng cng ngh XML chuyn i d liu. Tng tc vi tt c cc loi c s d liu. Kh nng thc thi nhanh. S dng cho cc loi ng dng client-server.

Ni dung
ADO.NET S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

11

12

Kin trc
Connected Model

ADO.NET
ADO.NET l mt phn ca .NET Framework
Th vin lp c chc nng x l d liu trong ngn ng MS.NET

ADO.NET l dng Disconnected


Chng trnh

Disconnected Model

Cho php ly c mt cu trc phc tp ca DL t CSDL, sau ngt kt ni ri mi thc hin thao tc x l Trc y ADO lun phi duy tr kt ni trong qu trnh thit k

Chng trnh
13 14

ADO.NET
ADO.NET mnh m
K tha cc u im ca ADO Kt hp vi tng thit k hon ton mi

ADO.NET vs. ADO


c im
DL x l c a vo b nh di dng Duyt d liu

ADO
Recordset : tng ng 1 bng d liu trong database Recordset ch cho php duyt tun t, tng dng mt. Recordset thin v hng kt ni, nn vic h tr ngt kt ni khng mnh Kh nng trao i d liu ADO qua Internet thng c nhiu hn ch. Do dng chun COM

ADO.NET
Dataset : tng ng 1 database

c im ni bt
Thit k hon ton da vo XML
Chun giao tip d liu tt nht trn mi trng Internet hin nay

Dataset : duyt t do, ngu nhin, truy cp thng ti bng, dng ,ct mong mun. Dataset h tr hon ton ngt kt ni

D liu ngt kt ni

Thit k hon ton hng i tng


c trng ca th vin .NET Framework

Trao i d liu qua Internet

ADO.NET trao i d liu qua Internet rt d dng v ADO.NET c thit k theo chun XML, l chun d liu chnh c s dng trao i trn Internet.

15

16

Mi trng connected
Mi user c mt kt ni c nh ti data source u im
Mi trng c bo v tt Kim sot c s ng b D liu lun c mi

Mi trng disconnected
Mt tp con ca d liu trung tm c sao chp v b sung c lp, sau s c merge li vo d liu trung tm. u im
C th lm vic bt c lc no, cng nh c th kt ni bt k vo Data Source Cho php user khc c th kt ni Nng cao hiu sut thc hin ca ng dng

Nhc
Phi c mt kt ni mng c nh Scalability

Khuyt
D liu khng c cp nht mt cch nhanh nht S tranh chp c th xut hin v phi gii quyt
17 18

ADO.NET
Kin trc ca ADO.NET gm 2 phn chnh Phn kt ni i: s dng khi kt ni CSDL v thao tc d liu, phi thc hin kt ni khi thao tc
Connection: qun l vic ng m DB ???Connection: SqlConnection, OleDbConnection Command: lnh truy vn, tng tc d liu khi ang lp kt ni ???Command: SqlCommand, OleDbCommand DataReader: c d liu, ch x l 1 dng d liu ti mt thi im ???DataReader: SqlDataReader, OleDbDataReader DataAdapter: cu ni gia DB v DataSet
19

ADO.NET
Phn ngt kt ni: i l DataSet
DataSet khng quan tm n Database thuc kiu g, v ly d liu t DataAdapter x l DataSet xem nh mt Database trong b nh: bng, quan h DataSet c cc thnh phn con nh
DataTable DataRow DataColumn DataRelation Cc i tng nhm: DataTableCollection, DataRowCollection, DataColumnCollection
20

M hnh i tng ADO.NET

Namespace
System.Data All generic data access classes System.Data.Common Classes shared (or overridden) by individual data providers System.Data.Odbc ODBC provider classes System.Data.OleDb OLE DB provider classes System.Data.ProviderBase New base classes and connection factory classes System.Data.Oracle Oracle provider classes System.Data.Sql New generic interfaces and classes for SQL Server data access System.Data.SqlClient SQL Server provider classes System.Data.SqlTypes SQL Server data types

21

22

Cc lp th vin ADO.NET
System.Data.OleDb: Access, SQL Server, Oracle System.Data.SqlClient: SQL Server System.Data.OracleClient: Oracle c im:
C ba th vin trn v giao tip lp trnh l ging nhau Dng th vin SqlClient truy xut SQL Server nhanh hn OleDb Tng t cho OracleClient

Ni dung
ADO.NET S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

23

24

Database-Specific Classes
IDbCommand Used as wrappers for SQL statements or stored procedure calls. IDbCommandBuilder Used to generate SQL commands (such as INSERT, UPDATE, and DELETE statements) from a SELECT statement. IDbConnection Used to connect to the database. Similar to an ADO Connection. IDbDataAdapter Used to hold select, insert, update, and delete commands, which are then used to populate a DataSet and update the Database. IDbDataReader Used as a forward only, connected data reader. IDbParameter Used to define a parameter to a stored procedure. IDbTransaction Used for a database transaction, wrapped in an object.
25

.NET Data Provider


Cc thnh phn .NET Data Provider

.NET Data Provider


???Connection
???Transaction

???DataAdapter
SelectCommand

???Command
Parameters ???Parameter

InsertCommand

UpdateCommand

???DataReader

DeleteCommand 26

Connected Model
Kt ni vo CSDL Thc hin lnh
Thm/Xa/Sa d liu c d liu t CSDL

Connected Model
Kt ni vo CSDL
Cc lp ph trch kt ni
ODBCConnection OleDBConnection SqlConnection OracleConnection

Thuc tnh quan trng


ConnectionString: xc nh ngun d liu cn kt ni

Phng thc quan trng


Open: m kt ni Close: ng kt ni

27

28

.NET Data Provider - Connection


Connection Application Data Source

.NET Data Provider Connection (cont)


Kt ni vo CSDL Access
OleDbConnection cnn = new OleDbConnection(); cnn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=QLHS.mdb"; cnn.Open(); //Cc lnh cn thc hin cnn.Close();

Cc i tng Connection tun th IDbConnection interface.


ConnectionString: loi Data Source cn kt ni. Open(): thit lp kt ni n Data Source. Close(): ngt kt ni n Data Source.

29

30

.NET Data Provider Connection (cont)


Kt ni vo CSDL SQL Server:
SqlConnection cnn = new SqlConnection(server= HIENLTH-PC\\SQLEXPRESS; database = QLHS; user id=sa; password=sa); cnn.Open(); // Thc hin truy vn d liu cnn.Close();

SQL2005 ConnectionString
Theo c quyn ca SQL Server (c user, pass):
server= HIENLTH-PC\SQLEXPRESS; database = QLHS; user id=sa; password=sa

Theo c quyn ca h iu hnh:


server= HIENLTH-PC\SQLEXPRESS; database = QLHS; Trusted Connection = True; server= HIENLTH-PC\SQLEXPRESS; database = QLHS; Integrated Security = True;

31

32

Tp tin lu tr kt ni
Cho php ngi dng c th cu hnh cc gi tr thuc tnh cho chui kt ni CSDL. Thng c dng *.ini, *.txt. T .NET 1.0 tr ln c th s dng tp tin App.config (nh dng XML) cha khai bo cc tham s cng gi tr v cc ch th khc. V d: Tp tin DBConfig.ini

c thng tin tp tin lu tr kt ni


Loi *.ini, *.txt s dng StreamReader (using System.IO)
StreamReader docfile = new StreamReader(@"DBConfig.ini"); servername = Tach(docfile.ReadLine()); databasename = Tach(docfile.ReadLine()); username = Tach(docfile.ReadLine()); password = Tach(docfile.ReadLine());

33

34

c thng tin tp tin lu tr kt ni


Loi App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SqlServer" connectionString="server=HIENLTHPC\sqlexpress;database=SEQLHS;integrated security=true" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>

c thng tin tp tin lu tr kt ni


Loi App.config:

connectionstring = ConfigurationManager.ConnectionStrings[tn]. ConnectionString;


V d:

con.ConnectionString =
ConfigurationManager.ConnectionStrings[SqlServer "]. ConnectionString;

35

36

.NET Data Provider - Command

.NET Data Provider - Command


Cc i tng Command tun th IDbCommand interface.
Connection: kt ni dng thc hin cu lnh. CommandText: cu lnh SQL cn thc hin trn Data Source. CommandType: loi cu lnh trong CommandText (Text, TableDirect, StoredProc). ExecuteScalar(): thc hin cu lnh trong CommandText, kt qu tr v l mt gi tr n. ExecuteNonQuery(): thc hin cu lnh trong CommandText v khng c kt qu tr v. ExecuteReader(): thc hin cu lnh trong CommandText, kt qu tr v l mt DataReader.

011010011 Connection 011010011 Application Data Source

Command

37

38

Command (cont) SQL Server


SqlConnection cnn = new SqlConnection(server=HIENLTHPC\\SQLEXPRESS; database=QLHS; user id=sa; password=sa); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = SELECT COUNT(*) FROM HocSinh; cmd.CommandType = CommandType.Text; cnn.Open(); int count = (int)cmd.ExecuteScalar(); cnn.Close();
39

Command (cont) SQL Server


SqlConnection cnn = new SqlConnection(server=HIENLTHPC\SQLEXPRESS; database=QLHS; user id=sa; password=sa); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = INSERT INTO HocSinh(Ho, Ten, DienThoai) VALUES(NNguyn Vn, NTrng, 0989366990); cmd.CommandType = CommandType.Text; cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close();

40

Command (cont) MS Access


Thc hin lnh
Thm/Xa/Sa d liu

.NET Data Provider - Parameter


Mc ch s dng:
Mt vi gi tr trong cu lnh ch bit khi thc hin cu lnh. Cn thc hin cu lnh nhiu ln vi cc gi tr khc nhau.

V d:
OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnn; cmd.CommandText = INSERT INTO Hocsinh VALUES(5, 'L Vn Xim','11/12/2006', 'Khnh Ha', '221 Nguyn Vn C')"; cmd.ExecuteNonQuery();

Cc bc thc hin:
Tham s ha cu lnh: ? hoc @[tn tham s]. To cc parameters tng ng cho command. t gi tr cho cc parameter mi khi dng command thc hin cu lnh.

41

42

.NET Data Provider Parameter(cont)


Tham s ha
SQL Data Provider:
cmd.CommandText = SELECT * FROM HocSinh WHERE tenhocsinh = @ten; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(@id, @ten, @dtb);

.NET Data Provider Parameter(cont)


To cc parameter
cmd.Parameters.Add(@id, 5); cmd.Parameters.Add(@ten, Nguyn Vn A); cmd.Parameters.Add(@dtb, 8.5);

t gi tr cho cc parameter
foreach (Student s in studentList) { cmd.Parameters[@id] = i; cmd.Parameters[@ten] = s.studentName; cmd.Parameters[@dtb] = s.studentMarks; cmd.ExecuteNonQuery(); }

Cc provider khc:
cmd.CommandText = SELECT * FROM HocSinh WHERE tenhocsinh = ?; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(?, ?, ?);
43

44

Parameter(cont) MS Access
V d
OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnn; cmd.CommandText = "INSERT INTO Hocsinh VALUES (@Ma,@Ten,@Diachi,@NgaySinh,@Toan,@Van); OleDbParameter para=cmd.Parameters.Add("@Ma",OleDbType.Integer); para.Value=1; para=cmd.Parameters.Add("@Ten",OleDbType.VarWChar); para.Value= N"L Vn A"; para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar); para.Value= N"Nguyn Vn C"; para = cmd.Parameters.Add("@Ngaysinh", OleDbType.Date); para.Value = new DateTime(1982,10,1); para=cmd.Parameters.Add("@Toan",OleDbType.Integer); para.Value=5; para=cmd.Parameters.Add("@Van",OleDbType.Integer); para.Value=7; cmd.ExecuteNonQuery();

.NET Data Provider DataReader


ExecuteReader() Read() DataReader Application 011010011 Connection 011010011 Data Source

Command
MaHS i HoTen HocSinh I DiaChi DiaChi i

45

46

.NET Data Provider DataReader


DataReader l g?
Ch di chuyn ti pha trc, ch c truy cp d liu nhanh, kt ni n ngun d liu (data source) Qun l d liu, hoc rng buc vo iu khin listbound S dng ti nguyn

.NET Data Provider - DataReader


Cc i tng DataReader tun th interface IDataReader.
HasRow: cho bit cn d liu c na khng. Read(): c mt mu tin vo DataReader. Ton t [ i ]: truy xut n ct i trong mu tin c c. Close(): ng DataReader.

Lu :
Truy xut tun t v khng quay lui. Khng cp nht d liu. C ch kt ni.

47

48

.NET Data Provider DataReader (cont)


SqlConnection cnn = new SqlConnection(server=localhost; database=Northwind; user id=sa; password=sa); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = select * from Orders; cmd.CommandType = CommandType.Text; cnn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { MessageBox.Show(dr[CustomerID].ToString()); } dr.Close(); cnn.Close();

DataReader (cont) MS Access


Thc hin lnh
c d liu t CSDL V d OleDbDataReader rd = cmd.ExecuteReader(); while (rd.Read()) { if (!rd.IsDBNull(3)) MessageBox.Show(dr[CustomerID].ToString()); }
49 50

.NET Data Provider - SqlDataAdapter


B c d liu t CSDL ngun (SQLServer) v vo i tng DataSet hay DataTable. Phn trang d liu Phng thc:
Fill(datasource) Fill(datasource, start, number, tablename)

.NET Data Provider - DataAdapter


DataAdapter
SelectCommand

DataSet

InsertCommand UpdateCommand

Data Source
DeleteCommand

Cc i tng DataAdapter tun th interface IDbDataAdapter.


Fill(DataSet): dng SelectCommand ly d liu t Data Source vo DataSet. Update(DataSet): dng InsertCommand, UpdateCommand v DeleteCommand cp nht d liu trong DataSet vo Data Source.

51

52

.NET Data Provider DataAdapter (cont)


SqlConnection cnn = new SqlConnection(server=localhost; database=Northwind; user id=sa; password=sa); SqlDataAdapter da = new SqlDataAdapter(select * from Orders, cnn) DataSet ds = new DataSet(); da.Fill(ds); // Does something on the DataSet. da.Update(ds);

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

53

54

System.Data namespace
DataSet This object is designed for disconnected use and can contain a set of DataTables and include relationships between these tables. DataTable A container of data that consists of one or more DataColumns and, when populated, will have one or more DataRows containing data. DataRow A number of values, akin to a row from a database table, or a row from a spreadsheet. DataColumn This object contains the definition of a column, such as the name and data type. DataRelation A link between two DataTable classes within a DataSet class. Used for foreign key and master/detail relationships. Constraint This class defines a rule for a DataColumn class (or set of data columns), such as unique values.
55

DataSet
DataSet l g?
nh x DataSet Data Source
DataSet l c s d liu c lu tr trong b nh chnh (in-memory database). C ch khng kt ni.

Gm cc i tng
DataTable DataRelation

56

DataSet (cont)
DataSet
Tables
Columns

Cc phng thc ca DataSet


Thm 1 i tng DataTable: ds.Tables.Add(datatable_name); Xa 1 i tng:
ds.Tables.Remove(datatable_name); ds.Table.RemoveAt(datatable_index);

DataTable
DataColumn

Rows

DataRow

Loi b tt c DataTable: ds.Tables.Clear(); Kim tra tn ti: ds.Tables.Contains(datatable_name); Kim tra tn ti v c th xa c: ds.Tables.CanRemove(datatable_name); m s lng DataTable: ds.Tables.Count (thuc tnh)
57 58

Relations

DataRelation

Cc phng thc ca DataSet


Ghi ra file XML: ds.WriteXml(ten_file_xml); c t file XML: ds.ReadXml(ten_file_xml);

DataSet - DataTable
DataTable th hin mt bng trong c s d liu. Gm cc i tng:
DataColumn DataRow

Cc thuc tnh v phng thc:


TableName: tn bng. Columns: danh sch cc ct (DataColumn). Rows: danh sch cc mu tin (DataRow). PrimaryKey: danh sch cc ct lm kha chnh (DataColumn). NewRow(): to mt mu tin mi.

59

60

DataSet - DataColumn
DataColumn th hin mt ct trong bng. Cc thuc tnh v phng thc:
ColumnName: tn ct. DataType: kiu d liu ct.

DataSet - DataRow
DataRow th hin mt mu tin trong bng. Cc thuc tnh v phng thc:
RowState: trng thi ca mu tin (Added, Modified, Deleted, Unchanged, Detach). Ton t [i]: truy xut n ct i ca mu tin. Delete(): nh du xa mu tin.

61

62

DataSet (cont)
DataTable table = new DataTable(SinhVien); table.Columns.Add(new DataColumn(MSSV, Type.GetType(Int32)); table.Columns.Add(new DataColumn(HoTen, Type.GetType(string)); table.PrimaryKey = new DataColumn[] { table.Columns[MSSV] }; DataRow row = table.NewRow(); row[MSSV] = 123; row[HoTen] = Nguyn Vn A; table.Rows.Add(row);
63

DataSet (cont)
SqlConnection cnn = new SqlConnection(server=HIENLTH-PC\SQLEXPRESS; database=Northwind; user id=sa; password=sa); SqlDataAdapter da = new SqlDataAdapter(select * from Orders, cnn) DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) row[OrderDate] = DateTime.Now; da.Update(ds);

64

DataSet (cont)
SqlConnection cnn = new SqlConnection(server=HIENLTH-PC\SQLEXPRESS; database=Northwind; user id=sa; password=sa); SqlDataAdapter da = new SqlDataAdapter(select * from Orders, cnn) DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) if (row[CustomerID].ToString() == Nguyn Vn A) row.Delete(); da.Update(ds);

DataSet (cont)
So snh DataSet v DataReader:
Tc truy xut. B nh lu tr. Thun tin trong thao tc. C ch kt ni v khng kt ni.

65

66

DataSet (cont) MS Access


c d liu t CSDL OleDbDataAdapter da = new OleDbDataAdapter( "select * from HocSinh", cnn); DataSet dsHocSinh=new DataSet(); da.Fill(dsHocSinh, "HocSinh"); for (int i = 0; i < dsHocSinh.Tables["HocSinh"].Rows.Count; i++) { listBox1.Items.Add( dsHocSinh.Tables["HocSinh"].Rows[i]["HoTen"].ToString()); }
67

DataSet (cont) MS Access


X l d liu
Thm d liu DataRow newRow; newRow=dsHocSinh.Tables["HocSinh"].NewRow(); newRow[0] = 10; newRow[1] = "L Th B"; dsHocSinh.Tables["HocSinh"].Rows.Add(newRow); Xo d liu dsHocSinh.Tables["HocSinh"].Rows[0].Delete(); Thay i d liu DataRow row = dsHocSinh.Tables["HocSinh"].Rows[1]; row.BeginEdit(); row[0] = 11; row[1] = "L Th C"; row.EndEdit();
68

DataSet (cont) MS Access


Cp nht d liu xung CSDL
OleDbCommandBuilder buider = new OleDbCommandBuilder(da); da.Update(dsHocSinh, "HocSinh");

Trnh by d liu

69

70

Nhc li SqlDataAdapter
SqlDataAdapter c dng in d liu vo i tng DataSet, DataTable v cp nht d liu t hai i tng ny tr li d liu ngun. Cc trng hp to i tng SqlDataAdapter:
SqlDataAdapter(string SQL, SqlConnection cnn); SqlDataAdapter(SqlCommand cmd);

Cp nht d liu t DataAdapter


Trong Form khai bo cc thuc tnh l i tng DataSet (hay DataTable) Ly d liu: d liu vo DataSet dataAdapter.Fill(dataset); Cp nht d liu: Cp nht d liu t DataSet vo CSDL dataAdapter.Update(dataset);

in d liu:

sqlDataAdapter.Fill(datasetname); sqlDataAdapter.Fill(datatable); sqlDataAdapter(DataSet dataset, int start, int end); sqlDataAdapter(int start, int end, DataTable datatable);
71

Phn trang

72

DataView
Th hin ca 1 DataTable. ng vai tr quan trng trong DataBinding 1 DataTable c th c nhiu View khc nhau Dng trnh by d liu di hnh thc lc, sp xp, tm kim, hiu chnh v iu hng d liu trong DataTable

Khai bo DataView
C th s dng cc c php sau:
dataView = new DataView(); dataView.Table = dataTable; dataView = new DataView(dataTable); dataView = new DataView(dataTable, sortFilter, sortString, DataViewRowState);

DataView

DataView

DataView

DataTable

73

74

DataView
Danh sch cc thuc tnh
Tn AllowDelete AllowEdit AllowNew Item (index) RowFilter Sort Table Count ngha Cho php xa trn th hin Cho php chnh sa Cho php thm mi Ly gi tr value ti column c ch s index Thit lp Expression dng lc row Sp xp tng hoc gim theo column Cho bit view ny c to bi table no Ly s lng mu tin c trong DataView
75

DataView
Danh sch cc phng thc
Tn AddNew Delete(index) ngha Thm mi 1 mu tin Xa mu tin th index

76

DataBinding
Hin th d liu trong DataTable, vo cc control (TextBox, ComboBox, DataGrid, ) Gm 2 loi:
Simple Binding Complex Binding

V d: in ni dung bng TonGiao vo ComboBox Tn Gio


DataTable bang = ketnoi.GetDataTable(SELECT * FROM TonGiao); cboTonGiao.DataSource = bang; cboTonGiao.DisplayMember = bang.Columns[1].ToString();//TenTG cboTonGiao.SelectedValue = bang.Columns[0].ToString();//MaTG
77 78

a d liu vo li DataGridView

in d liu vo DataGridView
datagridview.DataSource = datatable; datagridview.DataSource = dataset.Tables[index];

79

80

DataGridView (tt)
Cc thuc tnh ca DataGridView:
DataSource: in d liu vo DataGridView CurrentRow: ly mu tin ang chn CurrentCell: ly ang chn

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet Hi & p

Cc bin c (Event) ca DataGridView:


SelectionChanged: xy ra khi ngi dng di chuyn vo vng d liu DoubleClick

81

82

Tham kho
Bi ging ADO.NET ca thy Nguyn Minh Huy, H KHTN TpHCM

83

B GIO DC V O TO TRNG I HC S PHM TP.HCM KHOA TON TIN HC


http://www.hcmup.edu.vn

BI TP THC HNH LP TRNH WINDOWS C# 1. Phn 1: Lm quen vi ng dng Form


1.1. Bi 01 Vit chng trnh nhp vo 2 s a v b, cho bit s ln nht v nh nht trong 2 s a,b vi giao din nh sau

Hnh 1: Chng trnh tm Min, Max 2 s

Hng dn gi : s dng cu trc If Else 1.2. Bi 02 Vit chng trnh nhp vo 2 s a, b v c cho bit s ln nht v nh nht trong 3 s a, b v c vi giao din nh sau

Hnh 2: Chng trnh tm Min, Max 3 s

Lng Trn Hy Hin

1/23

Bi tp thc hnh lp trnh Windows Form vi C# 1.3. Bi 03 - Nhp vo mt s nguyn t 0 n 9, hin th bng ch cc k s trn, v d: Nhp 1 Nhp 2 Nhp 3 .. Nhp 9 Mt Hai Ba Chn

Hnh 3: Chng trnh c s

Hng dn gi : s dng cu trc switch case 1.4. Bi 04 - Nhp vo mt s nguyn dng N, hin th bng ch s va nhp trn, v d: Nhp 1 Mt Nhp 12 Mi hai Nhp 123 Mt trm hai mi ba

Hnh 4: Chng trnh c s tng qut

Hng dn gi : s dng cu trc switch case

Lng Trn Hy Hin

2/23

Bi tp thc hnh lp trnh Windows Form vi C# 1.5. Bi 05 - Vit chng trnh nhp vo gi tr nguyn dng N, tnh tng S = 1 + 2 + 3 ++ N vi giao din nh sau

Hnh 5: CT tnh tng N s nguyn lin tip - 1

Hng dn gi : s dng vng lp While, For 1.6. Bi 06- Vit chng trnh nhp vo gi tr nguyn dng N, tnh tng S = 1 + 2 + 3 ++ N vi giao din nh sau

Hnh 6: CT tnh tng N s nguyn lin tip - 2

Tng t tnh tng - S = 1 + 3 + 5 + 7 ++ (2N +1) - S = 2 + 4 + 6 + 8 ++ 2N. 1.7. Bi 07: Vit chng trnh gm 1 form trong c 1 button v 1 label hin th s ln nhn button .

Lng Trn Hy Hin

3/23

Bi tp thc hnh lp trnh Windows Form vi C# 1.8. Bi 08- Vit chng trnh nhp vo gi tr nguyn dng N, v s thc X, tnh tng S = X + X2 + X3 + X4 +..+ XN

Hnh 7: CT tnh tng ly tha

Tng t tnh tng - S = X + X3 + X5 + X5 +..+ X2N+1 - S = X2 + X4 + X6 +..+ X2N 1.9. Bi 09 (BT c hng dn) My tnh n gin thc hin cc chc nng +, -, *, /.

MY TNH N GIN

Hnh 8: Chng trnh my tnh n gin

Lng Trn Hy Hin

4/23

Bi tp thc hnh lp trnh Windows Form vi C# Bc 1: To Project, ghi tiu form, icon form, n nt Minimize, Maximize

Bc 2: Thit k mn hnh v t tn nh hnh sau:

Trong cc phm s t tn t btn0 Bc 3: Khai bo cc bin cn thit


btn9.

string chuoitam = ""; //Dng lu gi tm gi tr ca s nhp vo char toantu; //Dng lu k hiu ton t ca php ton, vd: +, -, *, / double[] toanhang = new double[2];//Lu 2 ton hng (s hng) ca php ton double ketqua; //Dng lu kt qu ca php ton int buoc = 1; //Dng lu gi s bc thc hin php ton

//Khai bo bin string chuoitam = "";

Lng Trn Hy Hin

5/23

Bi tp thc hnh lp trnh Windows Form vi C#


char toantu; double[] toanhang = new double[2]; double ketqua; int buoc = 1;

Bc 4: Vit hm cho chung cho cc phm s (0 9) t tn cho phm va bm l b. Nu b rng, kt thc hm. Ngoi ra chng ta cng loi tr trng hp c rt nhiu s 0 ng trc mt s khc (v d 000000001 chnh l 1). Do b.Text == 0 && chuoitam.Length == 0 th kt thc hm.
//Hm bm phm s private void NumberButtons(object sender, EventArgs e) { Button b = sender as Button; if ((b == null) || (b.Text == "0" && chuoitam.Length == 0)) return; chuoitam += b.Text; txtManHinh.Text = chuoitam; }

Lu : Cho tt c cc phm s gi hm ny ng vi s kin click. Bc 5: Vit hm x l cho nt +/- (dng/m)


//Hm x l cho nt +/- (dng/m) private void btnCongTru_Click(object sender, EventArgs e) { if (chuoitam.Contains('-')) chuoitam = chuoitam.Replace("-", ""); else chuoitam = "-" + chuoitam; txtManHinh.Text = chuoitam; }

Bc 6: Vit hm x l cho phm .


//Hm x l phm chm private void btnCham_Click(object sender, EventArgs e) { if (!chuoitam.Contains('.')) { chuoitam = chuoitam + "."; txtManHinh.Text = chuoitam; } }

Bc 7: Vit hm x l cho nt C
//Hm x l nt C private void btnC_Click(object sender, EventArgs e) { if (chuoitam.Length == 0) { buoc = 1; toanhang[0] = toanhang[1] = 0.0; toantu = ' '; ketqua = 0.0; } else chuoitam = "0";

Lng Trn Hy Hin

6/23

Bi tp thc hnh lp trnh Windows Form vi C#


txtManHinh.Text = chuoitam; }

Bc 8: Vit hm x l cho phm bng1


//Hm bm phm s private void btnBang_Click(object sender, EventArgs e) { if (chuoitam.Length != 0) toanhang[1] = Double.Parse(chuoitam); switch (toantu) { case '+': ketqua = toanhang[0] + toanhang[1]; break; case '-': ketqua = toanhang[0] - toanhang[1]; break; case '*': ketqua = toanhang[0] * toanhang[1]; break; case '/': ketqua = toanhang[0] / toanhang[1]; break; } txtManHinh.Text = ketqua.ToString(); //Gn li gi tr ban u buoc = 1; chuoitam = ""; }

Bc 8: Vit hm x l cc phm thc hin php ton2


//Hm bm phm s private void Operations(object sender, EventArgs e) { Button b = sender as Button; if(buoc == 1) toantu = b.Text[0];//Ly k hiu ton t if (chuoitam.Length == 0) toanhang[buoc - 1] = ketqua; else toanhang[buoc - 1] = Double.Parse(chuoitam); if (buoc == 2) { btnBang_Click(null, null); toantu = b.Text[0]; toanhang[0] = ketqua; buoc = 2; } else { txtManHinh.Text = toanhang[0].ToString(); buoc++; } chuoitam = ""; }

1.10. Bi 10: Chng trnh my tnh ca Windows 7. Thit k my tnh b ti c cc chc nng nh hnh bn. Khng cn thit k menu.
1 2

Sinh vin t hon chnh thm cho trng hp bm nhiu du = lin tip. Sinh vin t hon chnh thm cho trng hp bm nhiu ln 1 ton t.

Lng Trn Hy Hin

7/23

Bi tp thc hnh lp trnh Windows Form vi C# 1.11. Bi 11: Vit chng trnh tnh tin dch v nha khoa vi yu cu sau:

Hnh 9: Chng trnh tnh tin nha khoa

1. Khi chy chng trnh (F5) s xut hin mn hnh nh trn, trong cm thao tc trn tt c cc i tng tr i tng textbox lu tr tn khch hng v nt thot. 2. Nu ngi dng nhp tn khch hng th mi cho php thao tc trn cc control khc (tr textbox tng cng). 3. Nhn vo nt Tnh tin, thc hin tnh tng tin theo la chn ca khch hng v hin th thng bo dng Khch hng: XYZ cn tr s tin ABC vi XYZ l tn nhp vo, ABC l s tin cn tr. 4. Nhn vo nt Xa: a mn hnh tr li trng thi lc khi to. 5. Nhn vo nt Thot: Xut hin thng bo Bn mun c ng chng trnh khng? o Nu ngi dng chn Yes, ng chng trnh. o Nu ngi dng chn No, tr li chc nng trc .

Lng Trn Hy Hin

8/23

Bi tp thc hnh lp trnh Windows Form vi C#

2. Phn 2: Lm quen Combobox, Listbox


2.1. Bi 01: Danh sch tn 2.1.1. To Form theo mu:

2.1.2. Cc thuc tnh: 2.1.2.1.Khng cho php resize form: Property FormBorderStyle Size Text

New Value FixedSingle 370, 225 Add Names

2.1.2.2. Cc Control: Control Type Property Name Button Location Text Name Button Location Text Text Label Text Label Location Text Label Location Name TextBox Location Text Name TextBox Location Text Name ComboBox Items Location MaxDropDownItems Size Lng Trn Hy Hin

New Value closeButton 273, 16 Close addButton 16, 16 Add Title First Name 132, 56 Last Name 248, 56 firstTextBox 132, 80 (blank) lastTextBox 248, 80 (blank) titleComboBox Mr.;Mrs.;Ms.;Miss.;Dr. 16, 80 4 100,21 9/23

Bi tp thc hnh lp trnh Windows Form vi C# ListBox Text Name Location Size (blank) namesListBox 16, 112 336, 69

2.1.3. Cc s kin: 2.1.3.1.S kin cho nt Close:


private void closeButton_Click(object sender, EventArgs e) { this.Close();//thm code ny }

2.1.3.2.S kin cho nt Add:


private void addButton_Click(object sender, EventArgs e) { //add the following code string first = firstTextBox.Text; string title = titleComboBox.Text; string last = lastTextBox.Text; string nameToAdd = title + " " + first + " " + last; namesListBox.Items.Add(nameToAdd); }

2.1.4. Kt qu chng trnh:

Hnh 10: Chng trnh hin th danh sch tn

Ghi ch: Bi tp ny sinh vin t thc hin 2.2. Bi 02: Sercurity Panel 2.2.1. Xy dng ng dng theo yu cu sau: Mt phng lab mun thit lp mt Sercurity Panel t bn ngoi ca. Ch cho php nhng cc c nhn c trch nhim mi c vo v mi ln ng nhp h phi nhp cc sercurity code c cung cp. Nhng sercurity code (hay cn gi l access code) sau c xem l hp l v cung cp cho cc nhm nhn vin nh bng sau: Value Group Technicians 6990 oe 6999 Custodians 0100 Scientist 9998, 1006 1008 Lng Trn Hy Hin 10/23

Bi tp thc hnh lp trnh Windows Form vi C# Mt khi nhp access code th s c hai trng thi: granted hoc denied. Tt c thng tin truy cp s c hin th trong mt khung thng tin bn di keypad. Nu access l granted th ngy, thi gian, group (technician, custodian, scientist) s c hin th khung thng tin. Trng hp access l denied th ngy, gi v thng tin Access denied s hin th khung bn di. Ngoi ra user nu ch nhn mt con s sercurity code th s hin th ra thng bo l ngy, gi v Restricted Access. 2.2.2. Giao din chng trnh:

Hnh 11: Minh ha giao din ca ng dng Security Panel

2.2.3. Yu cu nng cao:3 - B sung chc nng log file: tt c thng tin login d access granted hay denied u c ghi nhn vo file dng text. File ny c lu tr cng vi th mc ca ng dng.

Sinh vin t thc hin sau khi c bi lm vic vi file.

Lng Trn Hy Hin

11/23

Bi tp thc hnh lp trnh Windows Form vi C#

3. Phn 3: Lm quen vi cc control Toolbar, Menu


3.1. Bi 01 Vit chng trnh th hin mn hnh ng nhp (login) chng trnh nh sau

Hnh 12: Mn hnh ng nhp

Khi nhn vo nt ng nhp, thc hin kim tra o Nu tn ngi dng = DHSP v mt khu = tinhoc th hin th thng bo (MessageBox) ng nhp thnh cng o Ngc li: thng bo Khng ng tn ngi dng/mt khu Khi nhn vo nt Thot Kt thc chng trnh

3.2. Bi 02 Vit chng trnh th hin mn hnh ng nhp (login) chng trnh nh sau

Hnh 13: Mn hnh ng nhp

Khi nhn vo nt ng nhp, thc hin kim tra o Nu tn ngi dng = DHSP v mt khu = tinhoc th n mn hnh ng nhp Hin th mn hnh chnh vi hnh thc th hin nh sau

Lng Trn Hy Hin

12/23

Bi tp thc hnh lp trnh Windows Form vi C#

o Ngc li: thng bo Khng ng tn ngi dng/mt khu Khi nhn vo nt Thot hin th thong bo Bn c mun thot chng trnh khng ? o Nu chn Yes Kt thc chng trnh o Ngc li: tr li mn hnh login

Lng Trn Hy Hin

13/23

Bi tp thc hnh lp trnh Windows Form vi C# 3.3. Bi 03 Vit chng trnh qun l hc sinh vi h thng menu v Toolbar nh sau4

Nhn vo chc nng H thng\ng nhp trong menu hoc nt hnh Chm kha trn ToolBar, hin th mn hnh login nh trong bi tp 01. Nhn vo chc nng Qun l hc sinh\Thng tin hc sinh trong menu hoc nt hnh M tt nghip trn ToolBar, hin th mn hnh thng tin sinh vin nh trong bi tp 03. Nhn vo chc nng H thng\Thot: Kt thc chng trnh

Sinh vin c th dng bi thit k ny lm Project Qun l Sinh vin.

Lng Trn Hy Hin

14/23

Bi tp thc hnh lp trnh Windows Form vi C# H thng Menu nh sau: H thng thc n

H thng

Danh mc

Qun l hc sinh

Bo co thng k

Gip

- Hng dn s dng - Tc gi

- Thng k danh sch hc sinh - Bng im

- H s hc sinh - Phn lp - Xem im - im danh - Khen thng - K lut

- Danh mc gio vin - Danh mc qun huyn - Danh mc loi h s

- Cu hnh h thng - Qun l ngi dng - ng nhp - i mt khu - Thot

Lng Trn Hy Hin

15/23

Bi tp thc hnh lp trnh Windows Form vi C# 3.4. Bi 04 Vit chng trnh th hin thng tin sinh vin vi giao din nh hnh v

Nhn vo nt c d liu t file: c d liu t tp tin ThongTinSV.txt vi nh dng nh bn di a vo cc control trn mn hnh. - nh dng tp tin ThongTinSV.txt H v ch lt: Nguyn Vn Tn: Thnh Ngy Sinh: 05/11/2005 Tn gio: Khng a ch: 123 Trng nh Q3 in Thoi: 8234567 Email: nvthinh@hcmup.edu.vn Dn tc: Kinh Gii tnh: Nam Ngoi ng: Anh Vn, Php Vn - Nhn vo nt Lu d liu xung file, ghi d liu thng tin sinh vin trn mn hnh xung tp tin ThongTinSV.txt - Khi nhn vo nt Thot Kt thc chng trnh -

Lng Trn Hy Hin

16/23

Bi tp thc hnh lp trnh Windows Form vi C#

4. Phn 4: ha GDI+
4.1. Hp thoi mu n gin 4.1.1. S dng hp thoi Font: Thit k Form theo mu:

Yu cu: Hin th hp thoi mu (ColorDialog) thay i mu nn, mu ch. 4.1.2. Mt s kin thc: Khi nim c bn: 1 i tng Graphics qun l 1 bi cnh ha Mi phng thc c ngun gc t System.Windows.Forms.Form k tha 1 phng thc virtual OnPaint. Cc i s trong phng thc OnPaint bao gm 1 i tng PaintEventArgs. Graphics g = e.Graphics; FONT Khai bo th vin: System.Drawing v System.Drawing.Text 4 lp c bn lin quan n i tng FONT:FontStyle, FontFamily,GraphicsUnit, Font Hm v chui: void DrawString(string s, Font font, Brush brush, float x, float y); void DrawString(string s, Font font, Brush brush, Point p); Bt v: Pen(Color c); Pen(Color c, float width); Pen(Brush b); Pen(Brush b, float width); Chi t: SolidBrush: Chi t c vi mu chn. SolidBrush(Color c); FontStyle: Thnh phn c t Bold Ch in m Italic Ch in nghing Lng Trn Hy Hin 17/23

Bi tp thc hnh lp trnh Windows Form vi C# Regular StrikeOut Underline Ch bnh thng Ch vi ng gch ngang thn Ch gch chn

FontStyle style = FontStyle.Bold; Font: Font(tn_font, c); Font(tn_font, c, style); Cc hm v V (rng): Draw____ V ng thng: DrawLine V elip: DrawEllipse V hnh ch nht: DrawRectangles V hnh c: Fill____ Hm t hnh ch nht: void FillRectangle(Brush brush, int x, int y, int width, int height); 4.2. Bi tp v hnh Thit k Form theo mu: Panel Button FlatStyle: Flat

NumbericUpDown

S kin v: n chut tri ly im u tin, nh phm chut xc nh im cui cng. Sau thc hin v v t theo mu theo hnh chn trn khung v. Hng dn: //Cc thuc tnh
private private private private private Color fill; //lu tr mu t Color border; //lu tr mu nt v bool mouse_is_down=false; Point start; Graphics g; //i tng ha

//S kin Form_Load g = panel1.CreateGraphics(); border = Color.Black; fill = Color.Red; //S kin Click chn mu cho Border ColorDialog dl = new ColorDialog();

Lng Trn Hy Hin

18/23

Bi tp thc hnh lp trnh Windows Form vi C#


dl.FullOpen = true; dl.AnyColor = true; if (dl.ShowDialog() == DialogResult.OK) { btn_border.BackColor = dl.Color; border = dl.Color; } //S kin nhn chut vo vng v (MouseDown) mouse_is_down = true; start = new Point(e.X, e.Y); //S kin nh chut vo vng v (MouseUp) mouse_is_down = false;

//S kin r (di chuyn) chut trong vng v (MouseMove) if (mouse_is_down ) { g.Clear(panel1.BackColor); Point end = new Point(e.X, e.Y); switch(comboBox1.SelectedIndex) { //line case 0: g.DrawLine(new Pen(border,(int)DoDayNetVe.Value),start, end); break; //empty ellipse. case 1: g.DrawEllipse(new Pen(border,(int)DoDayNetVe.Value), start.X, start.Y,e.X-start.X,e.Y-start.Y); break; //filled ellipse case 2: { g.DrawEllipse(new Pen(border,(int)DoDayNetVe.Value), start.X, start.Y,e.X-start.X,e.Y-start.Y); g.FillEllipse(new SolidBrush(fill),start.X, start.Y,e.Xstart.X,e.Y-start.Y); break; } //empty rectangle case 3: g.DrawRectangle(new Pen(border,(int)DoDayNetVe.Value), start.X, start.Y,e.X-start.X,e.Y-start.Y); break; //filled rectangle case 4: g.DrawRectangle(new Pen(border,(int)DoDayNetVe.Value), start.X, start.Y,e.X-start.X,e.Y-start.Y); g.FillRectangle(new SolidBrush(fill),start.X, start.Y,e.Xstart.X,e.Y-start.Y); break; default: break; } }

Lng Trn Hy Hin

19/23

Bi tp thc hnh lp trnh Windows Form vi C#

5. Thit k chng trnh ta WordPad: RichTextEditor


5.1. Mc tiu Pht trin ng dng Single Document Interface Lm quen vi MenuStrip, ToolStrip, StatusStrip. S dng cc Common Dialog: OpenFileDialog, SaveFileDialog, ColorDialog S dng control RichTextBox. 5.2. Ni dung Xy dng mt ng dng son tho vn bn c cc chc nng sau:

Nhm chc nng c bn:


Cho php son tho trn hai nh dng o C bn: text File (*.txt) o Nng cao: Rich Text Format (*.rtf) Cho php nh dng cc on text o Align: left, right v center. o Format: bold, italic, underline o Chn font ch o Chn mu ch o Chn mu nn ca document Chc nng Cut, copy v paste.

Nhm chc nng nng cao:


Cc chc nng nh sau o Open file: m file RTF hoc TXT o Save file: lu document o New file: to mi document o Chc nng chn nh o Chc nng chn bullet o Indent o Zoom o ...

Lng Trn Hy Hin

20/23

Bi tp thc hnh lp trnh Windows Form vi C#

Hnh 14: Giao din chng trnh RichTextEditor

Chi tit cc Menu:

Lng Trn Hy Hin

21/23

Bi tp thc hnh lp trnh Windows Form vi C# 5.3. Lu : - Sinh vin ch cn lm nhm chc nng c bn l t yu cu - Chc nng nng cao ty chn, sinh vin kh gii nn lm. 5.4. M rng: Sinh vin c th m rng bt c tnh nng no cho ng dng ca mnh, s sng to lun c nh gi cao.

Hng dn c bn:
Sinh vin tm hiu cc thuc tnh c bn ca RichTextBox control nh: - SelectionFont - SelectionFont.Style: m t cc kiu ch o Gm c cc kiu m t trong enumeration FontStyle nh sau

SelectionAlignment: thit lp thuc tnh canh l o Gm c cc kiu m t trong enumeration HorizontalAlignment nh sau

SelectionColor: thit lp mu ca text, s dng struct Color m t mu

- BackColor: thit lp mu nn cho document cha text, s dng struct Color Cc phng thc ca RichTextBox nh: - Cut(): cut on text c chn vo Clipboard - Copy(): copy on text c chn vo Clipboard - Paste(): dn on text trong Clipboard vo document. Hng dn chc nng Bold trn ToolStrip: Lng Trn Hy Hin 22/23

Bi tp thc hnh lp trnh Windows Form vi C#

Sinh vin lm tng t vi cc chc nng: Italic, Underline Hng dn chc nng canh l Thit lp thuc tnh canh l tri cho RichTextBox tn rtbDoc
rtbDoc.SelectionAlignment = HorizontalAlignment.Left;

Hng dn chc nng cut, copy v paste cho RichTextBox tn rtbDoc rtbDoc.Cut(); // cut on text c chn vo clipboard tng t cho copy v paste Hng dn chc nng nng cao Insert nh vo document: Sinh vin t nghin cu on code sau:
OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Bitmap File| *.bmp"; if (dlg.ShowDialog() == DialogResult.OK) { Image img = Image.FromFile(dlg.FileName); Clipboard.SetDataObject(img); DataFormats.Format df; df = DataFormats.GetFormat(DataFormats.Bitmap); if (this.rtbDoc.CanPaste(df)) rtbDoc.Paste(df); }

---Chc cc bn thnh cng---

Lng Trn Hy Hin

23/23

B GIO DC V O TO TRNG I HC S PHM TP.HCM KHOA TON TIN HC


http://www.hcmup.edu.vn

C T YU CU BI TP PROJECT 02
Ni dung yu cu: Vit chng trnh qun l hc sinh vi yu cu nh sau 1.1. C s d liu chng trnh gm c cc Table sau (SQL Server 2005) Table NguoiDung: qun l danh sch ngi dng c php ng nhp vo h thng, vi cu trc & d liu tng ng nh sau: MaND TenND MatKhau HoTen (ID) (UserName) (Password) (FullName) 1 Admin Admin Qun tr h thng 2 DHSP dhsp DHSP DiaChi (Address) 123 Trng nh 280 An Dng Vng 153/2 Hong Vn Th Email admin@yahoo.com dhsp@yahoo.com

Sv01

Sv01

Sinh Vin

Sv01@yahoo.com

Table HocSinh: qun l danh sch hc sinh ca chng trnh, vi cc field nh sau STT Tn field Kiud liu Ghi ch 1. MaHS Numeric M hc sinh, kha chnh, t ng tng 2. Ho nvarchar(50) H v ch lt 3. Ten nvarchar(30) Tn hc sinh 4. NgaySinh DateTime Ngy sinh 5. DiaChi nvarchar(100) a ch 6. DienThoai nvarchar(50) in thoi 7. Email nvarchar(50) 8. TonGiao Numeric Tn gio 9. DanToc Numeric Dn tc 10. Hinh Image Hnh 11. GioiTinh Int Gii tnh 0: N 1: Nam 12. AnhVan Int Anh vn 0: khng c 1: c 13. PhapVan Int Php vn 0: khng c 1: c 14. HoaVan Int Hoa vn 0: khng c 1: c 15. HoTenCha nvarchar(50) H tn cha 1/9

Lng Trn Hy Hin

Bi tp thc hnh project 02 16. 17. 18. 19. 20. NgheNghiepCha DiaChiCha HoTenMe NgheNghiepMe DiaChiMe nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) Ngh nghip ca Cha a ch ca cha H tn m Ngh nghip ca m a ch ca m

Table DanToc: lu tr danh mc dn tc MaDT 1 2 3 4 Ten Kinh Ty Mng HMng

Table TonGiao: lu tr danh mc tn gio MaTG 1 2 3 4 5 Ten Pht gio Khng Thin cha gio Cao i Ha ho

Lc quan h:

Lng Trn Hy Hin

2/9

Bi tp thc hnh project 02 1.2. Vit chng trnh th hin mn hnh ng nhp (login) chng trnh nh sau

Khi nhn vo nt ng nhp, thc hin kim tra o Nu tn ngi dng v mt khu tn ti trong Table NguoiDung th n mn hnh ng nhp Hin th mn hnh chnh vi hnh thc th hin nh hnh mn hnh chnh bn di Nu TenND = Admin th cho php xem tt c cc chc nng trong h thng menu Nu TenND = DHSP th cho php xem tt c cc chc nng trong h thng menu ngoi tr chc nng Qun l ngi dng trong h thng v danh mc Ngc li th cho php xem tt c cc chc nng trong h thng menu ngoi tr chc nng Qun l ngi dng trong h thng, danh mc, Qun l hc sinh o Ngc li: thng bo Khng ng tn ngi dng/mt khu Khi nhn vo nt Thot hin th thong bo Bn c mun thot chng trnh khng ? o Nu chn Yes Kt thc chng trnh o Ngc li: tr li mn hnh ng nhp.

Lng Trn Hy Hin

3/9

Bi tp thc hnh project 02

Lng Trn Hy Hin

4/9

Bi tp thc hnh project 02 H thng Menu nh sau: (c th thm nu thy cn thit) H thng thc n

H thng

Danh mc

Qun l hc sinh

Bo co thng k

Gip

- Hng dn s dng - Tc gi

- Thng k danh sch hc sinh - Bng im

- H s hc sinh - Phn lp - Xem im - im danh - Khen thng - K lut

- Danh mc gio vin - Danh mc qun huyn - Danh mc loi h s

- Cu hnh h thng - Qun l ngi dng - ng nhp - i mt khu - Thot

Lng Trn Hy Hin

5/9

Bi tp thc hnh project 02 Nhn vo chc nng H thng\ng nhp trong menu hoc nt hnh kha trn ToolBar, hin th mn hnh ng nhp cho php ng nhp li. Nhn vo chc nng H thng\Thot: Kt thc chng trnh Nhn vo chc nng H thng\Qun l ngi dng trong menu hoc nt hnh 3 ngi trn ToolBar, hin th mn hnh qun l ngi dng nh hnh bn di.

o Khi mn hnh va c load, khng cho php ngi dng thao tc Cc TextBox Cc nt: Ghi, Khng, Thot o X l nt lnh Thm: thm mi ngi dng Cho php nhp thng trong cc TextBox (tr thng tin ID) Disbale cc nt lnh Thm, Xa, Sa, Thot Enable cc nt lnh Ghi, Khng o X l nt lnh Xa: Nu TenNguoiDung = Admin th hin th thng bo khng c quyn xa user ny Ngc li hin th thng bo hi Bn c mun xa khng?

Lng Trn Hy Hin

6/9

Bi tp thc hnh project 02 Nu chn Yes th thc hin xa v load li danh sch ngi dng Ngi li (chn No): quay li mn hnh qun l ngi dng o X l nt lnh Sa: cho php sa thng tin ngi dng Cho php nhp thng trong cc TextBox (tr thng tin m) Disbale cc nt lnh Thm, Xa, Sa, Thot Enable cc nt lnh Lu, Khng o X l nt lnh Khng: Hy b thao tc thm/sa thng tin ngi dng Hin th thng tin ngi dng chn trc o X l nt lnh Ghi: cp nht CSDL (thm/sa) thng tin ngi dng v load li danh sch ngi dng Nhn vo chc nng Qun l hc sinh\Thng tin hc sinh trong menu hoc nt hnh thng ngi c c vt trn ToolBar, hin th mn hnh thng tin sinh vin.

Lng Trn Hy Hin

7/9

Bi tp thc hnh project 02

o Khi mn hnh va c load, khng cho php ngi dng thao tc Cc TextBox Cc nt: Ghi, Khng, Thot o X l nt lnh Thm: thm mi hc sinh Cho php nhp thng trong cc TextBox (tr thng tin ID) Disbale cc nt lnh Thm, Xa, Sa, Thot Enable cc nt lnh Lu, Khng o X l nt lnh Xa: Hin th thng bo hi Bn c mun xa khng ? Nu chn Yes th thc hin xa v load li danh sch hc sinh Ngi li (chn No): quay li mn hnh qun l hc sinh o X l nt lnh Sa: cho php sa thng tin hc sinh Cho php nhp thng trong cc TextBox (tr thng tin ID) Disbale cc nt lnh Thm, Xa, Sa, Thot Enable cc nt lnh Lu, Khng o X l nt lnh Khng: Hy b thao tc thm/sa thng tin hc sinh Hin th thng tin hc sinh chn trc o X l nt lnh Lu: cp nht CSDL (thm/sa) thng tin hc sinh v load li danh sch hc sinh

Lng Trn Hy Hin

8/9

Bi tp thc hnh project 02

1.3. S dng Crystal Report to cc Report sau In danh sch th sinh theo dn tc

In danh sch th sinh theo tn gio

Lng Trn Hy Hin

9/9

HNG DN TO USER LOGIN VO SQL 2005 VI DATABASE MNH CHN

1. CHUYN SANG NG NHP BNG TI KHON SQL


Trong Object Explorer, right click vo [tn my]\SQLEXPRESS, chn Properties. V d: .\ SQLEXPRESS

Trong dialog "Server Properties", chn Security Phn "Server Authentication", chn option th 2: "SQL Server and Windows Authentication mode"

Bm OK. Restart li SQL Express Service (hoc restart li my nu cn). Login li vo SQL 2005 Express bng user ca bn. 2. TO USER LOGIN VO DATABASE Trong Object Explorer, right click vo phn Security New Login.

Login, chn

TO USER LOGIN VO DATABASE

in cc thng tin v User:

(Enforce password policy: Mt khu tun theo quy tc ca SQL ch, s)

TO USER LOGIN VO DATABASE

Gn quyn trn database m bn cn thao tc:

2 quyn c bn: db_datawriter (ghi), db_datareader (c). Bm OK hon tt qu trnh to User Login. (Ch quyn trn Database no). Chc cc bn thnh cng!

TO USER LOGIN VO DATABASE

Hng dn Backup v Restore Database trong SQL2005


Mc ch: Dng di chuyn CSDL n Server mi. To bn sao lu (backup) d phng.

1. Backup:
Bc 1: Trong ca s ca MSSQL Server Management Studio, chut phi trn Database cn Backup, chn Tasks, chn tip Backup

GV: Lng Trn Hy Hin

Bc 2: Chn ni lu Database Backup, mc nh s lu ti C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup. Sau bm .

Bc 3: Bm

hon tt qu trnh Backup.

GV: Lng Trn Hy Hin

2. Restore:
Bc 1: Trong ca s ca MSSQL Server Management Studio, chut phi trn mc Databases, chn Restore Database

Bc 2: Chn ni cha Database backup bng cch click chn

v click

GV: Lng Trn Hy Hin

Bc 3: Click

, sau chn file backup. Sau bm

GV: Lng Trn Hy Hin

Bc 4: Bm

Bc 5: Click chn ( database (

) database tng ng. Sau chn tn Database cn Restore phn To ).Sau bm .

GV: Lng Trn Hy Hin

Bc 6: Click

hon tt qu trnh Restore.

GV: Lng Trn Hy Hin

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

HNG DN THC HNH CRYSTAL REPORT


Trong VS2005, bn to 1 ng dng dng Windows Form mi vi tn l QuanLyNhanVien ( lm cc phn khc).

1/ To CSDL cho ng dng:


Gi s CSDL bao gm 2 bng NhanVien v PhongBan vi cu trc nh sau:

Hnh 1: Bng Nhn Vin (NhanVien)

Hnh 2: Bng Phng Ban (PhongBan)

Gia 2 bng NhanVien v PhongBan c lin kt thng qua kha ngoi MaPB trong bng NhanVien

Hnh 3: Relationship

Crystal Report vs 2005 SQL Server

1/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

2/ Thm 1 report mi vo ng dng:


T Solution Explorer, right-click, chn Add New Item, thm 1 Report mi vo ng dng vi tn l reportNhanVien

Hnh 4: Mn hnh thm Item Crystal Report

Trong mn hnh Crystal Report Gallery, chn Blank Report:

Hnh 5: Mn hnh chn loi Report

Crystal Report vs 2005 SQL Server

2/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

3/ Thit k report:
3.1/ Cu trc 1 report Mt report bao gm 5 phn chnh: - Report header: phn thng tin u tin ca report. Mt bo co report thng s gm nhiu trang, report header chnh l phn xut hin ch mt ln trang u tin ca ton report. - Page header: phn hin th thng tin xut hin u mi trang ca report. V d nh mt bo co dng bng c nhiu ct nh: STT, Tn, a ch, ST th u mi trang cn lp li nhng tiu ct ngi c nhn bit d dng ngha mi ct. - Details: phn hin th thng tin chi tit ca report. Mt report thng bao gm nhiu mc vi vai tr nh nhau tng ng vi cc record ca database m report s dng. Phn details s lit k nhng record . - Report footer: phn hin th thng tin xut hin ch mt ln cui report. V d thng tin nh ngi lp bo co l ai, ti u, hm no s c t report footer. - Page footer: phn thng tin xut hin cui mi trang. V d s trang c t page footer.

Hnh 6: Cu trc Report 1 trang

Hnh 7: Cu trc Report nhiu trang

Crystal Report vs 2005 SQL Server

3/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

2.2/ Kt ni report n CSDL: T Field Explorer, chn Database Fields, right-click, chn Database Expert:

Hnh 8: Mn hnh chn Database Expert

Trong hp thoi Data Expert, chn node Create New Connection | OLEDB | Make New Connection, right-click chn Make New Connection.

Hnh 9: Mn hnh to mi 1 Connect

Crystal Report vs 2005 SQL Server

4/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Chn Microsoft OLEDB Provider for SQL Server

Hnh 10: Mn hnh chn Provider cho SQL Server

Thit lp kt ni n CSDL QuanLyNhanVien:

Hnh 11: Mn hnh khai bo thng tin Connect

Chn Next, Finish tr v hp thoi Data Expert. Trong hp thoi Data Expert, danh sch bn tay phi s l cc thng tin s c hin th ln report.
Crystal Report vs 2005 SQL Server 5/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Hnh 12: Chn Table cho Report

Chng hn, ta cn hin th thng tin bng NhanVien ln report, click chn bng NhanVien v click button phi, click OK. a bng ny sang danh sch bn tay

Hnh 13: Hng dn chn Table (dng >)

Trn Field Explorer s hin th danh sch cc field trong table NhanVien.

Hnh 14: Fields Explorer

Crystal Report vs 2005 SQL Server

6/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

thng tin ta a ln Field Explorer l kt qu ca 1 cu truy vn, ta tr li hp thoi Data Expert, b node NhanVien danh sch bn tay phi

Chn Add Command, click button

Hp thoi Add Command To Report xut hin, nhp cu lnh sql vo textBox bn tay tri:

Crystal Report vs 2005 SQL Server

7/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Kt qu ca qu trnh dng lnh SQL truy vn ly d liu:

Hnh 15: Mn hnh kt qu chn field t Command

Trn Field Explorer, danh sch cc thuc tnh c th c hin th trn report s l kt qu ca cu truy vn trn:

Bn c th chn v ko r vo report hoc c th thit k bng Wizard.

Crystal Report vs 2005 SQL Server

8/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Dng Wizard:

Hnh 16: Chn field hin th trn Report

Hnh 17: Chn field gom nhm

Crystal Report vs 2005 SQL Server

9/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Hnh 18: Chn field gom nhm

Hnh 19: Chn ct sp xp theo tn nhm

Crystal Report vs 2005 SQL Server

10/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Crystal Report vs 2005 SQL Server

11/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Hnh 20: Cn kiu Report

2.3/ Thit k cc thnh phn ca report Sau khi ly c thng tin t CSDL, ta s thit kt report hin th ni dung ca cc thng tin ny. a/ Thit k Report Header: Report Header, gi s ta s hin th logo ca cng ty v 1 dng vn bn th hin ni dung report. - Thm 1 hnh nh vo report: Ti Report Header, right-click, chn Insert | Picture, xc nh ng dn n file hnh nh s c chn ln report. nh chn vo c th thay i v tr, kch thc ph hp vi kch thc ca report.

Crystal Report vs 2005 SQL Server

12/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Thm 1 on vn bn vo report: Right-click, chn Insert | Text Object , nhp ni dung vn bn cn chn. thay i nh dng hin th ca on vn bn ny, click chn i tng, right-click, chn Format Object. - Thm 1 ng k vo report Right-click, chn Insert | Line , ko th ng k cn v

b/ Thit k ni dung bo co ( Details ) T Field Explorer, drag drop cc Database field cn hin th ln report vo vng Details trn report Khi drag drop mt Database field vo vng Details, 1 vn bn c t ng thm vo vng Page Header vi ni dung l tn ct ca field d liu ny, thay i tn ct, double click vo i tng object ny hay right-click, chn Edit Text Object.

Crystal Report vs 2005 SQL Server

13/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Tip tc drag drop ln vng Details cc Database field thng tin khc m cn hin th ln report.

Sau khi thit k xong, click vo tab Main Report Review xem kt qu.

Crystal Report vs 2005 SQL Server

14/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

c/ Hon thin report: - Chn s th t ca tng record trong bo co: Trn vng Details, right-click, chn Insert | Special Fields | Record Number

Crystal Report vs 2005 SQL Server

15/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Crystal Report vs 2005 SQL Server

16/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

nh s trang cho tng trang ca report: Thng tin v s trang s c hin th vng Page Footer ca report Trn vng Page Footer, right-click, chn Insert | Special Field | Page Number

2.4/ Np report ln ca s ng dng: T tab Crystal Reports trn thanh toolBox, ko th 1 control Crystal Report Viewer vo Form

Thit lp thuc tnh ReportSource ca Crystal Report Viewer

Chy ng dng xem kt qu. 2.5/ Gom nhm vic hin th thng tin: Gi s ta c nhu cu cn gom nhm danh sch nhn vin theo tng Phng ban hin th theo dng sau:

Crystal Report vs 2005 SQL Server

17/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Phng A STT 1 2 Phng B STT 3 4

H tn ABC DEF H tn GHK MNO

Ngy sinh 1/1/1990 1/1/1988 Ngy sinh 1/1/1990 1/1/1988

Lng 2000000 2100000 Lng 2000000 2100000

Trn Fields Explorer, ti node Group Name Fields, right-click chn Insert Group Trn hp thoi Insert Group, chn thuc tnh dng gom nhm (trong trng hp ny l gom nhm theo tn phng ban ).

Khi ta Insert mt Group vo Report, Group Header v Group Footer s c thm vo Thit k li report vi cu trc nh sau:

Crystal Report vs 2005 SQL Server

18/19

Lng Trn Hy Hin

Email: hienlth@hcmup.edu.vn

Kt qu:

2.3/ Hin th report t ngun d liu ly bng lnh SQL Bc 1: Thit k report vi ngun d liu thit k bng tay (kt ni to bng Wizard tc phi thc hin kt ni). Bc 2: Xy dng form hin th Report (trong c i tng crystalReportViewer1) Bc 3: Thc hin kt ni file report thit k ln form hin th report //Ly d liu SqlConnection con = new SqlConnection(Server=.\\SQLEXPRESS; Database=QuanLyNhanVien; User Id = sa; Password = sa;); con.Open(); SqlCommand cmd = new SqlCommand(Chui lnh SQL, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); con.Close(); ReportDocument rd = new ReportDocument(); rd.Load(ten_file_report); rd.SetDataSource(ds); crystalReportViewer1.ReportSource = rd; Khai bo th vin cho ReportDocument: using CrystalDecisions.CrystalReports.Engine; ----o0o---

Crystal Report vs 2005 SQL Server

19/19

You might also like