2 Lap Trinh Windows Form Voi C# PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 309

L U

Giáo trình L p trình Windows Forms v i C#.NET s d ng cho sinh viên ngành
Công ngh thông tin. Giáo trình giúp sinh viên có cái nhìn t ng quan v ng d ng
Windows Application trong b công c Visual Studio .NET c a Microsoft. Ngoài ra
giáo trình còn cung c p nh ng ki n th c v u khi n mà Windows Application
h tr các ví d c mô t c th sinh viên có th c và
hi u m t cách nhanh chóng nh t.
N i dung c a giáo trình g m 11
i thi u t ng quan v ngôn ng C#, C u trúc c a m
trình C#, các ki u d li n, c u trúc l p và c u trúc r nhánh, l p String và cách
t n DLL.
i thi u v ng d ng Windows Form, t o form v i hình d ng
khác nhau, các s ki c c a form.
i thi u v cách s d ng c a u khi
Label, Button, Textbox, ComboBox, ListBox, CheckBox và RadioButton.
i thi u v cách s d u khi c bi
HelpProvider, ErrorProvider, ProgressBar, Timer, ListView, TreeView,
DateTimePicker và MonthlyCalendar.
i thi u v cách s d ng c u khi n t
MenuStrip, ContextMenuStrip. Cách s d u khi n: ImageList, NotifyIcon,
ToolStrip, StatusStrip.
i thi u v u khi n có th ch u khi
GroupBox, FlowLayoutPanel, TableLayoutPanel, TabControl, SplitContainer.
i thi u v các s d ng c u khi n d ng h p tho i:
MessageBox, ColorDialog, FontDialog, OpenFileDialog, SaveFileDialog,
FolderBrowseDialog.
i thi u v u khi n làm vi c v i in n:PageSetupDialog,
PrintPreviewDialog, PrintPreviewControl, PrintDialog, PrintDocument.
i thi u v cách xây d ng và s d ng UserControl.
i thi u v các l ng làm vi c v i màn hình và h th ng
p SystemInformation, l p Screen, l p Sendkeys, l p PowerStatus, L p
Application, l p Clipboard, l p Cursor.
p t ng h p ki n th c.
M CL C

L i u

i thi u v C# ............................................................................................ 1
1.1. Gi i thi u v Microsoft .NET Framework ............................................................. 1
1.1.1. .NET Framwork là gì ..................................................................................... 1
1.1.2. Các thành ph n c a Microsoft .NET Framework .......................................... 1
1.2. T ng quan ............................................................................................................... 2
1.3. C u trúc t ng quát c a m .......................................................... 4
1.3.1. So n thào b ng Notepad ................................................................................ 4
1.3.2. So n th o b ng Microsoft Visual Studio 2010 .............................................. 5
1.4. Bi n và ki u d li u ................................................................................................ 8
1.4.1. Bi n ................................................................................................................ 8
1.4.2. Ki u d li u .................................................................................................... 9
1.4.2.1. Ki u giá tr ........................................................................................ 9
1.4.2.2. Ki u tham chi u .............................................................................. 10
1.4.2.3. So sánh s khác bi t gi a ki u giá tr và ki u tham chi u .............. 11
1.4.2.4. Chuy n ki u d li u ........................................................................ 11
1.5. Câu l nh phân nhánh............................................................................................. 13
1.5.1. Câu l nh if .................................................................................................... 13
1.5.2. Câu l nh switch ............................................................................................ 13
1.6. Câu l nh l p .......................................................................................................... 14
1.6.1. L nh l p while .............................................................................................. 14
1.6.2. L nh l p do/ while ........................................................................................ 15
1.6.3. L nh l p for .................................................................................................. 15
1.6.4. L nh l p foreach ........................................................................................... 16
1.7. L p String ............................................................................................................. 17
1.7.1. Gi i thi u v chu i ký t ............................................................................. 17
1.7.2. c và thu c tính l p String .......................................................... 18
1.8. M ng ..................................................................................................................... 31
1.8.1. M ng m t chi u ........................................................................................... 31
1.8.2. M ng hai chi u ............................................................................................ 32
1.9. T o và s d ng DLL trong C# ........................................................................... 33
1.9.1. m khi s d ng DLL .................................................. 33
1.9.2. t o t p tin DLL ........................................................................ 34
1.9.3. s d ng t p tin DLL ................................................................ 36
1.10. Bài t p cu ............................................................................................ 39

i thi u v Windows Forms .................................................................... 40


2.1. Gi i thi u .............................................................................................................. 40
2.1.1. ng d ng Windows Forms .......................................................................... 40
2.1.2. Không gian tên (namespace) ........................................................................ 44
2.1.3. Thanh công c (Toolbox)............................................................................. 46
2.1.4. nh d ng mã C# ......................................................................................... 48
2.2. Các lo i Form........................................................................................................ 48
2.2.1. Thu c tính Form ........................................................................................... 48
2.2.2. Các lo i Form ............................................................................................... 53
2.2.3. Các hình d ng c a Form .............................................................................. 55
2.2.4. Bi n c c a Form ......................................................................................... 57
2.2.5. c ................................................................................................. 60
2.3. Bài t p cu .............................................................................................. 64

u khi ng ...................................................................... 65
3.1. u khi n Label ................................................................................................... 66
3.2. u khi n Button ................................................................................................. 70
3.3. u khi n TextBox .............................................................................................. 73
3.4. u khi n ComboBox và ListBox ....................................................................... 77
3.4.1. ListBox ......................................................................................................... 78
3.4.2. ComboBox ................................................................................................... 82
3.4.3. c và s ki n c a ComboBox và ListBox ................................... 85
3.5. u khi n CheckBox và RadioButton ................................................................. 89
3.5.1. CheckBox ..................................................................................................... 89
3.5.2. RadioButton ................................................................................................. 93
3.6. Bài t p cu .............................................................................................. 97

u khi c bi t ............................................................................. 102


4.1. u khi n Tooltip, HelpProvider, ErrorProvider .............................................. 103
4.1.1. u khi n Tooltip ..................................................................................... 103
4.1.2. u khi n HelpProvider ........................................................................... 107
4.1.3. u khi n ErrorProvider ........................................................................... 110
4.2. u khi n ProgressBar và Timer....................................................................... 115
4.2.1. u khi n ProgressBar ............................................................................. 115
4.2.2. u khi n Timer ....................................................................................... 116
4.3. u khi n ListView ........................................................................................... 120
4.4. u khi n TreeView .......................................................................................... 130
4.5. u khi n DateTimePicker, MonthCalendar .................................................... 136
4.5.1. u khi n DateTimePicker ....................................................................... 136
4.5.2. u khi n MonthCalendar ........................................................................ 138
4.6. Bài t p cu ............................................................................................ 142

u khi xây d ng Menu ......................................................... 146


5.1. u khi n ImageList.......................................................................................... 146
5.2. u khi n MenuStrip ......................................................................................... 149
5.3. u khi n ContextMenuStrip ............................................................................ 159
5.4. u khi n NotifyIcon ........................................................................................ 164
5.5. u khi n ToolStrip .......................................................................................... 167
5.5.1. u khi n ch a trong ToolStrip ............................................................... 170
5.5.2. ToolStripContainer ..................................................................................... 172
5.6. u khi n StatusStrip ........................................................................................ 178
5.7. Bài t p cu ............................................................................................ 180

u khi n ch u khi n khác ........................................................ 185


6.1. u khi n GroupBox ......................................................................................... 185
6.2. u khi n Panel ................................................................................................. 190
6.3. u khi n FlowLayoutPanel ............................................................................. 191
6.4. u khi n TableLayoutPanel ............................................................................ 197
6.5. u khi n TabControl ....................................................................................... 200
6.6. u khi n SplitContainer .................................................................................. 211
6.7. Bài t p cu ........................................................................................... 218

u khi c Message ............................................ 222


7.1. L p MessageBox ................................................................................................ 223
7.2. u khi n ColorDialog ...................................................................................... 228
7.3. u khi n FontDialog........................................................................................ 231
7.4. u khi n OpenFileDialog ................................................................................ 234
7.5. u khi n SaveFileDialog ................................................................................. 238
7.6. u khi n FolderBrowserDialog ....................................................................... 243
7.7. Bài t p cu ............................................................................................ 248

cv u khi n in n ................................................................... 253


8.1. u khi n PageSetupDialog .............................................................................. 254
8.2. u khi n PrintPreviewDialog .......................................................................... 258
8.3. u khi n PrintPreviewControl......................................................................... 261
8.4. u khi n PrintDialog ....................................................................................... 266
8.5. u khi n PrintDocument ................................................................................. 273

u khi i dùng t t o
9.1. User Control ........................................................................................................ 280
9.2. Xây d ng User Control ....................................................................................... 280
9.2.1. Thêm m i User Control ngay trong d án ................................................. 280
9.2.2. T o l p và khai báo th a k t l p Control ............................................... 285
9.2.3. T o d án m i b ng cách ch n lo i d án là Windows Control Library ... 288
9.3. S d ng User Control ......................................................................................... 291
9.4. Cách s d ng nh nt os thi t k giao di n ............................... 294
9.5. Bài t p cu ............................................................................................ 294

c v i màn hình và h th ng ........................................................ 298


10.1. L p SystemInformation ...................................................................................... 298
10.2. L p Screen .......................................................................................................... 301
10.3. L p SendKeys ..................................................................................................... 304
10.4. L p PowerStatus ................................................................................................. 309
10.5. L p Application .................................................................................................. 310
10.6. L p Clipboard ..................................................................................................... 312
10.7. L p Cursors ........................................................................................................ 316

p t ng h p ...................................................................................... 318

Tài li u tham kh o ....................................................................................................... 325


C I THI U V C#
1.1. .NET Framework
1.1.1. .NET Framework là gì ?
.NET Framework là n n t ng phát tri n hoàn h o c a Microsoft, cung c p cho l p
trình viên các n dùng chung h tr cho vi c phát tri n các ki u ng d ng khác
nhau bao g m:

ng d ng ASP.NET
ng d ng Windows Form
Web Services
Windows Services
ng d ng m ng và các ng d ng u khi n truy c p t xa

1.1.2. Các thành ph n c a Microsoft .NET Framework


.NET Framework g m hai thành ph n chính là: Common Language Runtime
(CLR) và t n l p.
CLR: là n n t ng c a .NET Framework, giúp Microsoft có th tích h p nhi u
ngôn ng l .NET, ASP.NET, công
c l ng th i giúp các ng d ng vi t trên các ngôn
ng này có th ch c chung trên n n t ng h u hành Windows. S
Microsoft có th u này, b i vì các ngôn ng l c biên
d ch ra m t ngôn ng trung gian (Intermediate Language IL) và s d ng chung
ki u d li u h th ng (Common Type System). CLR s d ng m t trình
biên d ch g i là Just-in-Time (JIT) Compiler chuy n mã IL thành mã
máy và th c thi.
Ngoài ra CLR còn làm các thành ph
- Garbage Collection (GC): G i là b ph n thu gom rác; có ch t
ng qu n lí b nh . T i m t th m nh nh s n, GC s ti n
hành th c hi n vi c thu h i nh ng vùng nh c s d ng.
- Code Access Security (CAS): Cung c p quy n h
tùy thu c vào các thi t l p b o m t c a máy. Ch ng h n, thi t l p b o m t
c c s a hay t o file m i,
n mã, không
cho phép chúng làm trái v nh này.
- Code Verification: B ph n ch ng nh n mã. B ph n này m b o
cho vi c ch m b o an toàn ki u d li u.

ï
n mã ho t quy n p vào các vùng
nh c phép.
n l p: là m t t p h p l n các l c vi t b i Microsoft, nh ng l p này
c xây d ng m t cách tr c quan và d s d ng; cho phép l p trình viên thao
tác r t nhi u các tác v s n có trong Windows.
- Base class library n các l n nh c dùng trong
khi l p trình hay b n thân nh i xây d ng .NET Framework
ph xây d ng các l M ts n l p base class
: String, Interger,
- ADO.NET và XML: B n này g m các l x lý d
li u. ADO.NET thay th ADO trong vi c thao tác v i các d li u thông
ng. Các l ng XML c cung c x lý các d li u theo
nh d ng m i XML. M t s n trong ADO.NET và XML :
sqlDataAdapter, SqlCommand,
- Windows Forms: B n v l p trình Windows Forms g m các l p
ng dành cho vi c xây d ng các ng d ng Windows n. M t s
Form, UserControl, TextBox, Label, Button,
ComboBox, ListBox, ListView, TreeView,
- Web Services: là các d ch v c cung c p qua Web (hay Internet). D ch
v c coi là Web Service không nh m i dùng mà nh m vào
i xây d ng ph n m m. Web Services có th cung c p các d
li u hay m t ch
- ASP.NET: ng d ng Web xây d ng b ng ASP.NET t n d c toàn
b kh a .NET Framework. ASP.Net cung c p m t b các Server
Control l p trình viên b t s ki n và x lý d li u c a ng d
c v i ng d ng c a Windows. M t s :
WebControl, HTML Control,

1.2. T ng quan v C#
Vào ngày 12/2/2002, Microsoft chính th c cho ra m t Visual Studio 2002 cùng
v i b n .NET Framework 1.0. V i n n t ng .NET Framework thì các ng d ng v
Windows F u có th c xây d ng trên n n t ng .NET. Hai ngôn ng
chính mà Microsoft s d phát tri n các ng d ng trên là C# và Visual
Basic.NET.
c phát tri n b id u
là Anders Hejlsberg và Scott Wiltamult. Vì là ngôn ng i sau các ngôn ng khác

î
có nh m n i tr i và
m nh m n.
m c a C#:
Microsoft thêm vào nh m m i vào C# d s d :
- C# là ngôn ng n: Các cú pháp, bi u th c, toán t u gi ng v i C,
C++. Ngoài ra C# lo i b m t s khái ni m ph c t p khó hi ,
th a, template, l o.
- C# là ngôn ng hi i: Có t t c c tính c a m t ngôn ng hi i
x lý ngo i l , thu gom b nh t ng, ki u d li u m r ng, và b o
m t mã ngu n.
- C# là ngôn ng ng: Là m t ngôn ng thu ng,
at tc có th l ng: S
(Encapsulation), s th a k (Inheritance), và s hình
(Polymorphism).
- C# là ngôn ng m nh m và m m d o: Có th s d ng cho nh ng d án khác
n, ng d h a, b ng tính,
- C# là ngôn ng có ít t khóa: là ngôn ng s d ng gi i h n các t khóa, ch
kho ng 80 t 10 ki u d li c xây d ng s n ng 1.1.
B ng 1.1: B ng mô t các t khóa c a C#
abstract default foreach object sizeof unsafe

as delegate goto operator stackalloc ushort

base do if out static using

bool double implicit override string virtual

break else in params struct volatile

byte enum int private switch void

case event interface protected this while

catch explicit internal public throw decimal

char extern is readonly true for

checked false lock ref try null

class finally long return typeof short

const fixed namespace sbyte uint unchecked

í
continue float new sealed ulong

1.3. C u trúc t ng quát c a m


n mã C# có th c so n th o trong m t trình so n th nb tk ,
sau khi biên so n xong c p tin v

1.3.1. So n th o b ng Notepad
Trong quá trình so n th o c C# là m t ngôn ng thu ng.
tc n mã c u ph i thu c l p.
Ví d 1.1: So n th o m Hello World ra màn hình
c 1:

Gi i thích:
- nc c khai báo là static. Vi c khai báo
này cho bi t hàm Main có th c s d ng mà không c i
ng
- Hàm WriteLine n m trong l p Console, u s d ng ph i khai báo
thêm dòng l Using System; phía trên cùng vi c gõ l c nhanh
Console.WriteLine . N u không khai báo Using
System; thì bu c ph i vi t cú pháp: System.Console.WriteLine
v i System là m t namespace.
- C# phân bi t ch ng và ch nh writeline khác l nh
WriteLine.
c 2: Khi so n th p tin v i tên: ChaoMung.cs
c 3: Th c thi i th c hi c:
- M c a s Command Line và biên d ch t p tin ChaoMung.cs v a t o ra
sang mã máy (t biên d ch dùng trình
biên d ch dòng l c chép vào máy

́
trong quá trình cài .NET Framework. N u cài Framwork 4.0 thì ti n hành
ng d n:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

Hình 1.1: Biên d ch t p tin hello.cs

- Th c thi t p tin :

Hình 1.2: Th c thi t p tin Hello.exe

1.3.2. So n th o b ng Microsoft Visual Studio 2010


c 1: M Microsoft Visual Studio 2010 và t o 1 d án m i

ë
c 1: Ch n th c c 2: Ch n m c
Project

Hình 1.3: T o d án m i
c 2: T o m t lo i d minh h a b ng
ngôn ng

c 1: Ch n lo i
d án. N u l p trình
ng Console
thì ch n lo i d án
là Console
Application. N u
l ng
Windows Forms thì
ch n Windows
Forms Application

Hình 1.4: T o lo i d t tên cho d án


c 3: So n th o mã C# trong trình biên d ch

ê
Hình 1.5: Giao di n so n th o mã l nh

c 4: Biên d n Build > Build Solution


ho c n t h p phím Ctrl + Shift + B.

Hình 1.6: Biên d


c 5: Th n Debug > Start Debugging
ho c phím F5.

é
Hình 1.7: Th

1.4. Bi n và Ki u d li u
1.4.1. Bi n

Bi n là d li u c li u c a bi n n m trong b nh
v t lý c a Ram và có th c. Mu n s d ng bi c tiên l p trình ph i
ch nh bi n có m t ki u d li u c th
Cú pháp khai báo bi n:

<Ki u d li u> <Tên bi n>

n ph t phù h p v i quy t t tên


Cú pháp kh i t o giá tr cho bi n:

<Tên bi n> = <giá tr >

= là phép toán gán giá tr


Quy t t tên: Các tên bi n, tên h ph
v i quy t c sau:

M t tên bi n có th b u b ng ch hoa hay ch ng. Tên có th ch a ký t


hay s và ký t g i (_).
Ký t u tiên c a bi n ph i là ký t c là s .
Trong C# phân bi ng.

è
Các t khóa không th s d t tên cho bi n. N u mu n dùng t t
tên thì ta thêm ký t c.
Ví d 1.2:
Employee: H pl
student: H pl
_Name: H pl
Emp_Name: H pl
@goto: H pl
static: Không h p l , trùng t khóa
4myclass: Không h p l , không th b u b ng ký t s
Student&Falculty: Không h p l c ch a ký t c bi t

1.4.2. Ki u d li u
l p trình C++ hay Java, C# chia thành hai t p ki u d li u
chính:
Ki u giá tr
Ki u tham chi u
M i ki u d li u trong C# s thu c m t trong hai ki u giá tr ho c ki u tham
chi u. Ki u giá tr u tham chi
Stack: m t vùng b nh d li u v i chi u dài c nh.
Ví d 1.3: s nguyên ki u int luôn chi m d ng 4 bytes.
M cc
không truy c p t c
Heap: m t vùng b nh d li i.
Ví d 1.4 u string, khi ta t ng thu c l p string, ng s c
nh b i hai thành ph a ch stack, còn giá tr ng thì s
heap.

1.4.2.1. Ki u giá tr
Ki u giá tr ng là các ki n bao g m: double, char, int,

Bi n c a ki u giá tr m t giá tr th c, giá tr trong


stack, không th mang giá tr null và ph i ch a giá tr nh.
B ng 1.2: B ng mô t các ki u d li u giá tr trong C#
Ki u C# S Byte Ki u .NET Mô t
byte 1 Byte S nguyên n 255
char 2 Char Ký t Unicode
bool 1 Boolean Giá tr logic true/ false
sbyte 1 Sbyte S nguyên có d u: - n 127
short 2 Int16 S nguyên có d u: - n 32.767

ç
ushort 2 Uint16 S nguyên không d n 65.535
int 4 Int32 S nguyên có d u: - n
2.147.483.647
uint 4 Uint32 S nguyên không d n
4.294.967.295
float 4 Single Ki u d u ch ng, giá tr x p x t
3,4E- n 3,4E+38; v i 7 ch s có

double 8 Double Ki u d u ch ng, giá tr x p x t


1,7E- n 1,7E+308; v i 15, 16 ch
s
decimal 8 Decimal n 28 con s và giá tr
th c dùng trong tính toán tài
chính, ki i ph i có h u t

long 8 Int64 Ki u s nguyên có d u có giá tr trong


kho ng:
- n-
9.233.372.036.854.775.807
ulong 8 Uint64 S nguyên không d u t n
0xfffffffffffffff

Ki u s th c: Trình biên d ch luôn hi u b t c m t s th t s ki u


double tr khi khai báo rõ ràng, gán m t s ki u float thì s ph i có ký t f
theo sau.
ví d 1.5: float a=0.15f;
Ki u giá tr bool trong C# nh t thi t ph i là true ho c false.

1.4.2.2. Ki u tham chi u


Bi n có ki u d li u tham chi a ch c a bi n khác trên b nh heap.
y các l c hi u d li u tham
chi u. Ngoài ra các ki u d li u i dùng xây d c g i là ki u
tham chi u.
Ví d 1.6:
string A
Stack Heap

@
a ch bi n str Giá tr c a bi n
str

ïđ
1.4.2.3. B ng so sánh s khác bi t gi a ki u giá tr và ki u tham
chi u
B ng 1.3: B ng so sánh s khác bi t gi a ki u giá tr và ki u tham
chi u
Ki u giá tr Ki u tham chi u
Bi n l Giá tr c a bi n a ch c a bi n
V giá tr Stack Heap
Giá tr m nh 0 Null
Phép toán gán Sao chép giá tr a ch

1.4.2.4. Chuy n ki u d li u
Vi c chuy i ki u d li u trong C# có th th c hi n b ng m t trong các cách
sau:
S d ng l p Convert:
tl c C# xây d ng s n ph c v cho vi c chuy i t ki u d
li u này sang ki u d li u khác c trong l p Convert ph n l u là

- ToInt32(<Tham s >)
- ToInt64(<Tham s >)
- ToString(<Tham s >)
- ToDouble(<Tham s >)
- ToBoolean(<Tham s >)
- ToByte(<Tham s >)
-
<Tham s >: có th là chu i ký t , h ng s , bi n s nguyên, s th c ho c ki u
bool. N u trong quá trình chuy n ki t tham s là null thì hàm Convert s tr v giá
tr m c nh.
Ví d 1.7:
int a = Convert.ToInt32("10");
bool b = Convert.ToBoolean(27);
bool a = Convert.ToBoolean("hello"); //
int b = Convert.ToInt32("123456787654");
double d = Convert.ToDouble(null);
S d c Parse:
cs d chuy i chu i sang m t ki u d
li u c th M i ki u d li u xây d ng s u có h tr c
chuy i chu i sang ki u d li ng:

ïï
- Double.Parse(<chuoi>): Chuy n chu i v ki u Double
- Int32.Parse(<chuoi>): Chuy n chu i v ki u Int32
- Int64.Parse(<chuoi>): Chuy n chu i v ki u Int64
- Boolean.Parse(<chuoi>): Chuy n chu i v ki u Boolean
- Single.Parse(<chuoi>): Chuy n chu i v ki u Single
-
Ví d 1.8:
int a = Int32.Parse("123");
float b = Float.Parse("20.7");
bool c = Boolean.Parse("true");
int a = Int32 Hello
byte b = Byte 10000000000
bool c = Boolean.Parse(null);

S d c TryParse:
cs d chuy i chu i sang m t ki u d
li u c th u d li u xây d ng s c
TryParse. Tuy nhiên, s khác bi t c a TryParse và Parse là:
- Cú pháp s d ng có s khác bi t: Có hai tham s truy n vào TryParse;
Tham s th nh t là chu i c n chuy i và tham s th hai là bi n ch a
giá tr chuy i (bi n truy n vào ph i truy n d ng tham chi u)
- Giá tr tr v c a TryParse s là true n u chuy n ki u thành công và tr v
false n u chuy n ki u không thành công.
Ví d 1.9:

int a;
Int32 123 out a);
bool b;
Boolean false out b);
int a;
Int32.TryParse("hello", out a);
bool b;
Boolean.TryParse("", out b);

Casting (ép ki u):


n ki c s d ng khi mu n chuy i gi a nh ng ki u d
li u g nhau. ng áp d ng v i ki u s .

ïî
Ví d 1.10:
int x= 10;
float y = x; //chuy n i ng m nh, y = 10
int z = (int)y; //chuy n i rõ ràng, z = 10
int x = 10;

Trong quá trính chuy n ki u có th x y ra l i do chuy n gi a các ki u d li u


thích: Ki u chu i sang ki u s , ki u bool sang ki

1.5. Câu l nh phân nhánh


Vi c phân nhánh có th c t o ra b ng các t khóa: if, else, switch, case. S
phân nhánh ch c th c hi n khi bi u th u ki nh là
.

1.5.1. Câu l nh if
Cú pháp:
if (bi u th u ki n)
<Câu l nh th c hi u ki
[else
<Câu l nh th c hi u ki n sai> ]

N u các câu l nh trong thân c a if hay else mà l t l nh thì các l nh này


ph c bao trong m t kh i l nh, t c là ph i n m trong d u kh i { }:
Cú pháp:

if (bi u th u ki n)
{
<l nh 1>; < l
}
[else
{
<l nh 3>; < l
}]

1.5.2. Câu l nh switch


Khi có quá nhi u ki ch n th c hi n thì dùng câu l nh if s r t r i r m
và dài dòng, Các ngôn ng l p trình c u cung c p m t d ng câu l nh switch
li t kê các giá tr và ch th c hi n các giá tr thích h p.

ïí
Cú pháp:
switch (bi u th c u ki n)
{
case <giá tr >:
<Các câu l nh th c hi n>
<l nh nh y>
[default:
<Các câu l nh th c hi n m nh>]
}

- <l nh nh y>: Là l nh ch nh vi c k t thúc m t case, l nh nh y trong switch


là break ho c goto; ng h p trong case không có l nh nh y thì trình biên
d ch s tu n t th c hi n các câu lênh trong t ng case c a switch theo th t t
trên xu ng.
- ng h p switch s d ng nhi u case, có th nh y tr c ti n case c
th ng goto; ho c thoát kh i switch s d ng break.
- <giá tr >: là h ng nguyên ho c bi n; N u là bi n b t bu c ph i là bi n ki u s
nguyên.

1.6. Câu l nh l p
C# k th a cú pháp câu l nh c a C/C++:
L nh l p while
L nh l p do/ while
L nh l p for
Ngoài ra 3 l nh l n trên, C# còn có thêm l nh l p foreach làm
vi c v i m ng, t p h p.
p các l nh nh d ng k t
h p v i l nh l p

1.6.1. L nh l p while
a vòng l p while u ki c hi n các công
vi c này
Cú pháp:

while (Bi u th c)
{
<Câu l nh th c hi n>
}

ḯ
Bi u th c c a vòng l p while u ki các l c th c hi n, bi u th c
này b t bu c ph i tr v m t giá tr ki u bool là true/false
Ví d 1.11: Vi ng các s l >0 và nh
static void Main(string[] args)
{
int i = 1, tong = 0;
while (i < 10)
{
tong = tong + i; i = i+2;
}
}

1.6.2. L nh l p do/ while


a vòng l p do/ while u ki n v n còn

Cú pháp

do
{
<Câu l nh th c hi n>
}while u ki n );
S khác bi t t i quan tr ng c a while và do..while là t i thi u s có m t l n các
câu l nh trong do...while c th c hi n
Ví d 1.12: Vi ng các s l >0 và nh

static void Main(string[] args)


{
int i = 1, tong = 0;
do
{
tong = tong + i;
i = i+2;
}while(i<10);

1.6.3. L nh l p for
Vòng l p for bao g m ba ph n chính:
Kh i t o bi m vòng l p
Ki u ki n bi m, n th c hi n các l nh bên trong
vòng for

ïë
c l p.
Cú pháp:

for ( [ph n kh i t o] ; [bi u th u ki c l p])


{
<Câu l nh th c hi n>
}

Ví d 1.13: Vi ng các s l >0 và nh

static void Main(string[] args)


{
int i, tong = 0;
for(i=1; i < 10; i=i+2)
tong = tong + i;
}

1.6.4. L nh l p foreach
Vòng l p foreach cho phép t o vòng l p thông qua m t t p h p hay m t m ng.
Cú pháp:
foreach ( <ki u t p h p> <tên truy c p thành ph n > in < tên t p h p>)
{
<Các câu l nh th c hi n>
}

Do l p d a trên m t m ng hay t p h p nên toàn b vòng l p s duy t qua t t c


các thành ph n c a t p h p theo th t c s p. Khi duy n ph n t cu i cùng
trong t p h thoát ra kh i vòng l p foreach
Ví d 1.14: Tính t ng các s l trong m ng A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

static void Main(string[] args)


{
int[] intArray = {0,1,2,3,4,5,6,7,8,9,10}, tong = 0;
foreach( int item in intArray)
{
if (item % 2 != 0)
tong = tong + item;
}
}

ïê
1.7. L p String
1.7.1. Gi i thi u v chu i ký t
C# xem nh ng chu ng ki u d li n , vi c s d ng chu i trong
C# r t linh ho t, m nh m , và quan tr ng nh t là d s d ng. Ch m c trong chu i
c tính t s 0.
làm vi c v i chu i, C# cung c p l p System.String. Khi khai báo m t chu i
C# b ng cách dùng t khóa string, i vi i dùng t
ng c a l p System.String.
Ví d 1.15:
string hello
Ngoài vi kh i t o chu i t 1 m ng char:
Ví d 1.16:
// Kh i t o m ng ký t
char[] chars = {'c', 's', 'h', 'a', 'r', 'p'};
// Kh i t o chu i t m ng ký t
string str = new string(chars);
:
Khi gán giá tr trong chu i có th ch a ký t \ \ \
Ví d 1.17:
string la chuoi \n trich dan

Ký t xu ng

ng h p mu ng d c vào m t chu i:
Ví d 1.18:
string c:\baitap

Trình biên d ch báo l i, vì


không hi u ký t \

n trình biên d ch hi u \ ng ký t i
dùng ph i thêm m t ký t \ c:
Ví d 1.19:
string c:\\baitap
Ngoài vi c s d ng d u \ gi nguyên các ký t trong chu
khai báo chu b c chu i.
Ví d 1.20:
string D:\soft\VMWare

ïé
1.7.2. c và thu c tính l p String
B ng 1.4: B ng t ng h c l p String
System.String
th c/ Thu c tính
Empty Thu Th hi n chu i r ng
Compare() So sánh hai chu i
CompareOrdinal() i không
n th t
Concat() o ra chu i m i t m t hay
nhi u chu i khác
Copy() o ra m t chu i m i b ng
cách sao chép t chu i khác
Equal() m tra xem hai chu i có
cùng giá tr hay không
Insert() Tr v chu i m c chèn m t chu i xác
nh
LastIndexOf() Ch ra v trí xu t hi n cu i cùng c a m t chu i
nh trong chu u
PadLeft() Canh l ph i nh ng ký t trong chu i, chèn vào
bên trái kho ng tr ng hay các ký t nh
PadRight() Canh l trái nh ng ký t trong chu i, chèn vào
bên ph i kho ng tr ng hay các ký t nh
Remove() t s ký t nh
Split() Tr v chu nh b i nh ng ký t
nh trong chu i
StartWith() Xem chu i có b u b ng m t s ký t xác
nh hay không
SubString() L y m t chu i con
ToCharArray() Sao chép nh ng ký t t m t chu n m ng
ký t
ToLower() Tr v b n sao c a chu i ki u ch ng
ToUpper() Tr v b n sao c a chu i ki u ch hoa
Format() nh d ng m t chu i dùng
ký t l nh d nh
Join() t n i các chu nh
gi a m i thành ph n c a m ng chu i
Length Tr v chi u dài c a chu i
CompareTo() So sánh hai chu i
CopyTo() Sao chép m t s các ký t n m t
m ng ký t Unicode
EndsWith() Ch ra v trí c a chu nh phù h p v i
chu
Trim() Xóa b t t c s xu t hi n c a kho ng tr ng
trong chu i
TrimEnd() Xóa các kho ng tr ng v trí cu i
TrimStart() Xóa các kho ng tr ng v u

ïè
Thu c tính Empty: i di n cho 1 chu i r ng. S d ng khi mu n khai báo 1
chu i là r ng.
Ví d 1.21:
string chuoi = string.Empty;
i khai báo:
string
Thu c tính Length: nh chi u dài c a chu i.
Ví d 1.22:
static void Main(string[] args)
{
string str = "pham phuong nguyen";
int chieudai = str.Length;
}
//K t qu : chieudai = 18
c so sánh chu i: Compare, CompareOrdinal,
CompareTo, Equal
- c Compare i
Cách s d ng:
int gt = String.Compare(<chuoi1>, <chuoi2>, [true]);
N u gt = 0: hai chu i b ng nhau
N u gt = 1: chu i 1 l i2
N u gt = -1: chu i 1 nh i2
N us d c không có tham s true, thì s phân bi t
ch ng, ch hoa. N u có tham s true thì s không bi t ch
ng hay ch hoa.
Ví d 1.23:
public static void Main(string []args)
{
int gt = String abDb , abdb ); //gt = 1
int gt1= String.Compare( abDb , abdb , true); //gt1 = 0
int gt2= String.Compare( abdaF , abdb ); //gt2 = -1
}

- c so sánh chu i CompareOrdinal: So sánh chu i tr v m t giá


tr ki u int; L t tìm t u chu n cu i chu i n u th y có ký t
khác bi t gi a hai chu i. Tính hi u mã ASCII c a hai ký t này và tr k t
qu v a tính c.

ïç
Cách s d ng:

int gt = String.CompareOrdinal(<chuoi1>,<chuoi2>);

Ví d 1.24:

public static void Main(string []args)


{
int gt1 = String.CompareOrdinal abcd aBcd //gt1=32
int gt2 = String.CompareOrdinal abcd aBcdefg //gt2=32
int gt3 = String.CompareOrdinal Abcd aBcdefg //gt3=-32
int gt4 = String.CompareOrdinal abcd abcd //gt4=0
}

- c so sánh chu i CompareTo: c thành viên l p, giúp


so sánh 2 chu i và tr v 1 giá tr ki u int.
Cách s d ng:

int gt = <chuoi1>.CompareTo(<chuoi2>);

N u gt = 0: hai chu i b ng nhau


N u gt = 1: chu i 1 l i2
N u gt = -1: chu i 1 nh i2
- c so sánh chu i Equal: cn so sánh các
chu i ký t có gi ng nhau hay không. N u 2 chu i ho c ký t gi ng nhau
s tr v giá tr t c l i tr v giá tr false.
Cách s d ng:

bool gt = String.Equal(<str1>,<str2>, [StringComparisonType]);

N us d c không ch nh tham s StringComparisonType


thì s so sánh t ng ký t m t gi a hai chu i và phân bi ng.
N u mu n không phân bi t ch ng thì thêm tham s
StringComparison.OrdinalIgnoreCase

îđ
Ví d 1.25:

public static void Main(string []args)


{
string str1 = "ITlab";
string str2 = "itlac";
if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase))
MessageBox.Show("Chuoi giong nhau ");
else
MessageBox.Show("Chuoi khong giong nhau ");
}

Nhóm c n i chu i và chèn chu i: Concat, Join, Inser


- c Concat: c n i hai hay nhi u
chu i l i v i nhau và tr v 1 chu i m i
Cách s d ng:

string <chuoiKQ> = String.Concat(<chuoi1>,<chuoi2>);


Ví d 1.26:
public static void Main(string []args)
{
string abc
string aBc
string kq = String.Concat(chuoi1,chuoi2);
}
- n i 1 m ng chu i l i v i nhau, gi a các ph n
t có th chèn thêm 1 chu i phân cách.
Cách s d ng:
string <chuoiKQ> = String.Join(<chu i phân cách>,<M ng chu i>);
Ví d 1.27:

public static void Main(string []args)


{
string[] chuoi = { "mot", "hai", "ba" };
string str = String.Join("---", chuoi);
}
---hai---ba

- c thu c l p, giúp chèn 1 chu i vào 1 v trí


nh trong chu i khác.

îï
Cách s d ng:

string <chuoiKQ> = ng>.Join(<v trí chèn>,<Chu i chèn vào>);


Ví d 1.28:
public static void Main(string []args)
{
string mot hai bon
string str = chuoi.Insert(3, hai );
}

c ki nh v : Contain, StartsWith, EndsWith,


IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny
- c Contain: c thu c l p, giúp các tìm m t t ho c
m t chu i b t k trong m t chu i khác. N u tìm th y tr v true, không
tìm th y tr v false
Cách s d ng:

bool gt= <chuoi1>.Contain(<chuoi2>)


Chuoi2: có th là m t ký t ho c 1chu c Contain s ki m tra
chuoi2 có trong chuoi1 không, vi c tìm ki m này có s phân bi t gi a ký
t hoa và ký t ng.
Ví d 1.29:

public static void Main(string []args)


{
string str = null;
str = "Di công ngh và gi i pháp";
if (str.Contains("công ngh ") == true)
MessageBox.Show("Chu i trên có ch a t 'công ngh ' ");
else
MessageBox.Show("Chu i trên không ch a t 'công
ngh '");
}//Hi n th Messagebox: Chu i trên có ch a t

- c StartsWith: c thu c l p, ki m tra xem chu i có


b u b i 1 s ký t c này có ki u tr v là
Boolean: true/false.

bool gt= <chuoi1>.StartsWith(<chuoi2>)


Chuoi2: Là chu i c n ki m tra xem có là chu i b u c a chuoi1 không.
Vi c ki m tra này có phân bi t ký t hoa và ký t ng.

îî
Ví d 1.30:
public static void Main(string []args)
{
string str = null;
str = "Di và gi i pháp";
if (str. StartsWith ("di ") == true)
MessageBox.Show("Chu i str b uv ");
else
MessageBox.Show("Chu i str không b u v n
");
}//Hi n th Messagebox: Chu i str không b uv

N u mu n vi c tìm ki m không phân bi t ký t hoa và ký t ng c n


thêm tham s StringComparisonType c:
Cách s d ng:
bool gt= <chuoi1>.StartsWith(<chuoi2>, [StringComparisonType])
Ví d 1.31:

public static void Main(string []args)


{
string str = null;
str = "Di và gi i pháp";
if (str.StartsWith("di ",StringComparison.OrdinalIgnoreCase)
== true)
MessageBox.Show("Chu i str b uv ");
else
MessageBox.Show("Chu i str không b uv n ");
}//Hi n th Messagebox: Chu i str b uv
- c EndsWith: c thu c l p, ki m tra xem chu i có
k t thúc b i 1 s ký t c này có ki u tr v là
Boolean: true/false.
bool gt= <chuoi1>.EndsWith(<chuoi2>)
Chuoi2: Là chu i c n ki m tra xem có là chu i k t thúc c a chuoi1 không.
Vi c ki m tra này có phân bi t ký t hoa và ký t ng.

îí
Ví d 1.32:
public static void Main(string []args)
{
string str = null;
str = "Di công ngh và gi i pháp";
if (str. EndsWith ("gi i pháp") == true)
MessageBox.Show("Chu i str k t thúc v gi i pháp ");
else
MessageBox.Show("Chu i str không k t thúc v gi i
pháp ");
}//Hi n th Messagebox: Chu i str k t

- c thu c l p, tr v ch s c a ký t u
tiên mà chu i xu t hi n, n u không tìm th y s tr giá tr -1.
Cách s d ng:

int vitri= <chuoi1>.IndexOf(<chuoi2>)


Chuoi2: là chu i c n tìm ki m trong chuoi1.
Ví d 1.33:

public static void Main(string []args)


{
string str1 = "Chao ngay ngay moi";
string str2 = "ngay";
int vitri = str1.IndexOf(str2));
}
//vitri = 5

- c LastIndexOf: c thu c l p, tìm ki m b ut


cu i chu i v u, tr v ch s c a ký t u tiên mà chu i xu t hi n. N u
không tìm th y s tr giá tr -1.
Cách s d ng:
int vitri= <chuoi1>.LastIndexOf(<chuoi2>)
Chuoi2: là chu i c n tìm ki m trong chuoi1.
Ví d 1.34:

public static void Main(string []args)


{
string str1 = "Chao ngay ngay moi";
string str2 = "ngay";
int vitri = str1.LastIndexOf(str2));
}
//vitri = 10

î́
- c IndexOfAny: c thu c l p, tìm ki m ch s xu t
hi n c a t ng ký t trong chu i so v i m ng ký t u vào, n u không tìm
th y s tr giá tr -1.
Cách s d ng:
int vitri= <chuoi1>.LastIndexOf(<m ng các ký t >)
T ng ký t trong chuoi1, b u t ký t u tiên c a chuoi1 s l t
i các ký t trong m ng ký t u vào, n u tìm th y m t
ký t t hi n trong m ng ký t s tr v v trí c a
ký t
Ví d 1.35:

public static void Main(string []args)


{
string str1 = "Chao ngay ngay ngay moi";
char[] mangkytu = {'n','g','a','y'};
int vitri = str1.IndexOfAny(mangkytu); //vitri = 2
}

- c LastIndexOfAny: c thu c l p, tìm ki m ch s


xu t hi n c a t ng ký t trong chu i so v i m ng ký t u vào, n u
không tìm th y s tr giá tr -1.
Cách s d ng:
int vitri= <chuoi1>.LastIndexOf(<m ng các ký t >)
T ng ký t trong chuoi1, b u t ký t cu i chuoi1 s l
sánh v i các ký t trong m ng ký t u vào, n u tìm th y m t ký t nào
trong chuoi1 xu t hi n trong m ng ký t s tr v v trí c a ký t
trong chuoi1.
Ví d 1.36:
public static void Main(string []args)
{
string str1 = "Chao ngay ngay ngay moi";
char[] mangkytu = {'n','g','a','y'};
int vitri = str1.LastIndexOfAny(mangkytu); //vitri = 18
}

c trích ch n xâu con t chu i: Substring, Split.


- c Substring: Trích m t chu i con t m t chu i có s n, tr v
m t chu i m i.
Cách s d ng:

string kq = <chuoi1>.Substring(start, len);

îë
start: V trí ký t b u trích trong chuoi1
len: S ký t s trích ra trong chuoi1
Ví d 1.37:
public static void Main(string []args)
{
string str1 = "Chao ngay moi";
string str=str1.Substring(5, 4);

}
Ngoài ra có th trích ch n chu i con t v trí ch n cu i chu i b ng
cách b c Substring.
Cách s d ng:

string kq = <chuoi1>.Substring(start);
start: V trí ký t b u trích trong chuoi1
Ví d 1.38:
public static void Main(string []args)
{
string str1 = "Chao ngay moi";
string str=str1.Substring(5);

- c thành viên c a l p. S d ng tách chu i


l n thành các chu i con.
Cách s d ng:
string []kq = <chuoi1>.Substring(<danh sách ký t >);
<danh sách ký t >: Là m t ký t ho c m t m ng các ký t s d làm
tiêu chí tách chuoi1 thành các chu i con.
Ví d 1.39:

public static void Main(string []args)


{
string str1 = "Son,Tung,Tuan";
string[] ten = str1.Split(',');
}
//K t qu c m ng tên g m các ph n t

- th c Remove: c thu c l p, s d xóa chu i


Cách s d ng:
string kq = <chuoi1>.Remove(<V trí>, [<S ký t >]);

îê
<V trí>: Là v trí c a ký t trong chuoi1 b u xóa.
<S ký t >: Là s ng ký t s xóa trong chuoi1
Ví d 1.40:

public static void Main(string []args)


{
string mothaibabonnam";
string str1 = str.Remove(3,8);
}
//

Ngoài ra, Remove còn có th s d xóa t m t v trí ch n


cu i chu i.
Cách s d ng:

string kq = <chuoi1>.Remove(<V trí>);


<V trí>: V trí ký t b u xóa trong chuoi1.
Ví d 1.41:
public static void Main(string []args)
{
string mothaibabonnam";
string str1 = str.Remove(8);
}
//

c sao chép chu i: Copy, ToCharArray, CopyTo


- th c Copy: c giúp tr v 1 chu i n m trên 1 vùng
nh i dung v i chu i u.
Cách s d ng:

string kq = String.Copy(<chuoi>);

Ví d 1.42:

public static void Main(string []args)


{
string str1 = "Chao ngay moi";
string str = String.Copy( str1);
}
//T o ra vùng nh m i c ng th i sao chép n i dung chu i str
//vào str1. K t qu

îé
- c ToCharArray: c thu c l p, chuy n 1 chu i v 1
m ng ký t và tr giá tr v là m ng ký t .
Cách s d ng:
char[] <tên m ng ký t > = <chuoi>.ToCharArray();

<chuoi>: Là chu i ký t c n chuy i v m ng các ký t .


<Tên m ng ký t >: ch a các ký t chuy n t <chuoi>
Ví d 1.43:
public static void Main(string []args)
{
string str1 = "Chao";
char []chars =str1.ToCharArray();
}
//m ng ký t
- c CopyTo: c thu c l p, giúp sao chép các ký t
trong m t chu i vào m t m ng ký t , có th c v trí và s
ng ký t trong chu i s copy vào m ng ký t ng th i ch nh copy
vào v trí th m y trong m ng ký t .
Cách s d ng:
void CopyTo(int sourceIndex, char[] destination, int destinationindex,
int count)
Ví d 1.44:

public static void Main(string []args)


{
string chao mung mot ngay moi
char []chars = new char[10];
str.CopyTo( 5, chars, 0, 8);
}
//m ng ký t

nh d ng chu i: Padleft, PadRight, ToLower,


ToUpper, Trim, TrimStart, TrimEnd.
- th c PadLeft: c thu c l p, canh l ph ng th i thêm
vào bên trái chu i m t s ký t c bi t.
Cách s d ng:
string <chuoi> = <chuoi> . PadLeft(len, [ký t ])
[ký t ]: Ký t s thêm, n u trong hàm PadLeft không có tham s [ký t ]
thì m nh s thêm kho ng tr ng vào.

îè
Ví d 1.45:
public static void Main(string []args)
{
string str1 = "Chao";
str1= str1.PadLeft(7);
string hello
str2=str2.PadLeft * );
}

- c PadRight: c thu c l p, canh l ng th i


thêm vào bên ph i chu i m t s ký t c bi t.
Cách s d ng:

string <chuoi> = <chuoi> . PadRight(len, [ký t ])

[ký t ]: Ký t s thêm, n u trong hàm PadRight không có tham s [ký t ]


thì m nh s thêm kho ng tr ng vào.
Ví d 1.46:
public static void Main(string []args)
{
string str1 = "Chao";
str1= str1.PadRight(7);
string hello
str2=str2.PadRight(8, * ***
}

- c thu c l p, tr v m t chu i in hoa


Cách s d ng:

string <chuoi1> = <chuoi2> . ToUpper()

Ví d 1.47:
public static void Main(string []args)
{
string str1 = "Chao";
string str2= str1.ToUpper(); //str2 HAO
}
- c ToLow c thu c l p, tr v m t chu i in ng
Cách s d ng:

string <chuoi1> = <chuoi2> . ToLower()

îç
Ví d 1.48:
public static void Main(string []args)
{
string str1 = "Chao";
string str2= str1.ToLower(); //str2 chao
}

- c thu c l p, tr v 1 chu kho ng


tr u chu i và cu i chu i.
Cách s d ng:

string <chuoi1> = <chuoi2> . Trim()

Ví d 1.49:

public static void Main(string []args)


{
string str1 = " Chao ngay moi ";
string str2= str1.Trim(); //str2 Chao ngay moi
}

- c thu c l p, tr v 1 chu
kho ng tr ng u chu i.
Cách s d ng:

string <chuoi1> = <chuoi2> . TrimStart()

Ví d 1.50:
public static void Main(string []args)
{
string str1 = " Chao ngay moi ";
string str2= str1.TrimStart(); //str2 Chao ngay moi
}
- c thu c l p, tr v 1 chu
kho ng tr ng cu i chu i.
Cách s d ng:
string <chuoi1> = <chuoi2> . TrimEnd()

Ví d 1.51:
public static void Main(string []args)
{
string str1 = " Chao ngay moi ";
string str2= str1.TrimEnd(); //str2 Chao ngay moi
}

íđ
1.8. M ng
M ng là m t t p h p có th t c a nh ng, c ng này cùng m t
ki u. Cú pháp khai báo m ng c k t h p gi a cú pháp khai báo m ng c nh
p c a C#, d ng c a m ng có th truy c p nh c và
thu c tính c a l p System.Array.

1.8.1. M ng m t chi u

Cú pháp:
<ki u d li u> [] <tên m ng> = new <ki u d li u>[<s pt>];

Ví d 1.52: Khai báo m ng s nguyên có 100 ph n t


int [] mang = new int[100];

Ho c có th khai báo m ng th i kh i t o giá tr cho các ph n t mang:


Cú pháp:
<ki u d li u> [] <tên m ng> = ;

i t o m ng b ng toán t new thì các ph n t c a m ng s mang giá tr


m b ng 1.5 sau:
B ng 1.5: B ng mô t các giá tr m nh c a ki u d li u
Ki u d li u Giá tr m nh
0
bool false
char \
enum 0
reference null

Truy c p các ph n t c a m ng:


truy c p các thành ph n trong m ng ph i s d ng toán t ch m c []. V i
ph n t u tiên trong m ng mang ch s s 0.
Ngoai ra C# h tr thu nh chi u dài c a mang.
Ví d 1.53: Tính t ng các ph n t c a m ng A = {1, 2, 3, 4, 5}
public static void Main(string []args)
{ int[] mang={1,2,3,4,5,6};
int tong = 0;
for(int i=0; i<mang.Length; i++) {
tong = tong + mang[i];
}
}

íï
1.8.2. M ng hai chi u

Trong C#, ngoài vi c khai báo m ng m t chi c 1.8.1 thì l p trình viên
có th khai m ng hai chi u ho c nhi u chi u tùy thu c vào m d ng. Và m i
m ng khi khai báo l i có th khai báo theo hai d ng khác nhau là m u cùng
c ho c m c.
M ng hai chi c: Là m ng c t ch c thành các dòng và các
c c tính theo hàng ngang và c c tính theo hàng d c
c a m ng. Trong m ng hai chi c thì s ng ph n t trên
m i dòng là b ng nhau.
- Cú pháp:
<kieu du lieu> [,] <ten mang> = new <kieu du lieu>[<dòng>,<c t>];

Ví d 1.54: Khai báo m ng hai chi c ki u s nguyên có 3 dòng


4 c t.
int [,] M = new int[3,4];
4c t

M[0,0] M[0,1] M[0,2] M[0,3]


3 dòng
M[1,0] M[1,1] M[1,2] M[1,3]

M[2,0] M[2,1] M[2,2] M[2,3]

Ví d 1.55: Khai báo m c 2 dòng, 3 c t v i các ph n t

1 2 3

4 5 6

Tính t ng các ph n t trong m ng M


public static void Main(string []args)
{ int[,] M = new int[2,3];
int tong = 0, i, j, k=1;
for(i=0; i<2; i++)
for(j=0; j<3; j++) {
M[i, j] = k;
k = k+1;
}
for(i=0; i<2; i++)
for(j=0; j<3; j++)
tong = tong + M[i, j];
}

íî
M ng hai chi c: Là m c t ch c thành các dòng
và các c c tính theo hàng ngang và c c tính theo
hàng d c c a m ng. Trong m ng hai chi c thì s ng
ph n t trên m i dòng có th khác nhau.
- Cú pháp:
Khi khai báo m ng hai không chi c ph i khai báo s dòng
c am c

<kieu du lieu> [][] <Ten mang> = new <kieu du lieu>[<dòng>][];

i t o s dòng c a m ng, c n khai báo s c t trên t ng dòng


c a m ng:
<ten mang> [0] = new <kieu du lieu>[<S c t 0>];
<ten mang> [1] = new <kieu du lieu>[<S c t 1>];

<ten mang> [dòng] = new <kieu du lieu>[< S c t n>];

Ví d 1.56: Khai báo m ng hai chi u có 3 dòng, dòng 1 có 3 c t, dòng hai


có 4 c t, dòng 3 có 5 c t.
Gán ph n t v trí dòng 0 và c t 1 giá tr 10
Gán ph n t v trí dòng 1 và c t 0 giá tr 5
Gán ph n t v trí dòng 2 và c t 4 giá tr 15

public static void Main(string []args)


{
int[][] M = new int[3][];
M[0] = new int[3];
M[1] = new int[4];
M[2] = new int[5]; 0 10 0
M[0][1] = 10;
M[1][0] = 5; 5 0 0 0
M[2][4] = 15;
0 0 0 0 15
}

1.9. T o và s d ng DLL trong C#

DLL là t vi t t t c a Dynamic linking library, g n liên k ng, là


các module ch c và d li c và d li u trong Module
này s

1.9.1. m khi s d ng DLL

M ts m khi s d ng DLL:

íí
Gi m không gian s d ng b nh d ng DLL s
làm gi c c a ng d ng: Do mã l nh c a các hàm trong DLL s
a ng d ng. ng
d ng ch c g tin c a hàm trong DLL, và khi c n h u hành s
t i các hàm này vào b nh ng d ng s d ng. Khi không còn s d ng,
có th gi i phóng DLL kh i b nh , khi c n nâng c p, ch c n thay th file
ng
T o ra kh a các ngôn ng l p trình: M t ng d ng có
th s d ng các DLL vi t b ng b t c ngôn ng l p trình nào. Các nhà phát
tri n ph n m m ch vi module c a mình vào trong m t DLL
v i ngôn ng c s d ng trong các
ng d ng vi t b ng C++ hay Visual Basic
M ts m khi s d ng DLL:
Tuy nhiên khi s d ng DLL th nh tho ng s g p m t l i sau:

The ordinal abc could not be located in the dynamic-link library xyz.dll

L i này phát sinh do t không ki m tra phiên b n c a các DLL


c h th ng. Khi m t DLL m i thay th m t DLL
n, và n u DLL m i này có m t s i l n làm cho nó không th
cl iv d ng phiên b làm r i lo

1.9.2. t o t p tin DLL

c 1: T o m i d án: Ch n th 1.8.

Hình 1.8: T o m i d án

í́
c 2: Ch n lo i d án là t tên p tin DLL.

c 1: Ch n
lo i d án

t tên d
án

Hình 1.9: Ch n lo i d t tên d án

c 3: Giao di n so n th o mã l c hi n th , ti n hành vi t mã l
hình 1.10.

Hình 1.10: Giao di n so n th o mã l nh

c 4: Nh n F5 biên d ch d án t o t p tin DLL ng t p tin DLL


ct os n c Bin c a d án hoàn thành công vi c t o t p tin
DLL

íë
1.9.3. s d ng t p tin DLL
c 1: T o d án m

c 1:Ch n
lo i d án
Windows
Forms
Application

t tên d
án và ch ng
d

Hình 1.11: T o d án m i

c 2: Bên c a s Solution Explorer, nh p ph i chu t vào References và ch n


thêm *.DLL vào d án này
c 2: Trên c a s Add
Reference ch n tab Browse

n
c 4: ng d n ch a
ch n t p t p tin DLL c 1: Nh p ph i chu t
tin DLL vào References và ch n
Add References

c 5: Ch n OK

Hình 1.12: Thêm t p tin DLL vào d án

c 3: S d ng t p tin DLL.

íê
Khai báo không gian
tên c a DLL

ng
và s d
th c trong DLL

Hình 1.13: S d ng DLL

Ví d : Xây d ng t p tin DLL h tr gi c hai.


c 1: Tao d án lo t tên là Giai_phuong_trinh_bac_hai

Hình 1.14: T o d án Class Library

íé
c 2: Vi t mã l u khi n
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Giai_phuong_trinh_bac_hai
{
public class PhuongTrinhBacHai
{
int a, b, c;
public int C {
get { return c; } set { c = value; }
}
public int B {
get { return b; } set { b = value; }
}
public int A {
get { return a; } set { a = value; }
}
public string TimNghiem()
{
string ketqua = "";
double x1=0, x2=0;
double delta = b * b - 4 * a * c;
if (a != 0)
{
if (delta < 0)
ketqua = m";
else
if (delta == 0)
{
x1 = -b / (2.0 * a);
ketqua = m kép: " + x1;
}
else
{
x1 = (-b - Math.Sqrt(delta)) / (2.0 * a);
x1 = (-b + Math.Sqrt(delta)) / (2.0 * a);
ketqua = "x1 = " + x1 + " và x2 = " + x2;
}
}
else
ketqua = c hai";
return ketqua;
}
}
}

íè
1.10. Bài t p cu

Bài 1: T o t n tên ToaDo.DLL, h tr c ng và tr hai t


Bài 2: T o t n tên PhanSo.DLL, h tr c ng, tr , nhân, chia hai phân
s
Bài 3: T o t n tên PTB1.DLL, h tr i s d ng gi
b c nh t: ax + b = 0
Bài 4: T o t n tênPTB4.DLL, h tr i s d ng gi
4 2
+ bx + c = 0
Bài 5: T o t n tên HePTB1.DLL, h tr i s d ng gi i h
trình b c nh t hai n s :

íç
2: GI I THI U V WINDOWS FORMS

2.1.
2.1.1. Forms

Windows Forms ; Windows Forms cho phép


form
(Components) giúp l
form nhanh chóng f
trên form
.
Ngoài ra, Windows Forms

Forms: Forms
:
c 1: Sau khi cài xong Micorsoft Visual Studio 2010, ti n hành b t ng
d ng Visual Studio 2010 lên b ng cách nh p vào bi

Hình 2.1: M ng d ng Visual Studio 2010

́đ
B c 2: n bi ng Visual Studio 2010 giao di n
s c hi n th :

Hình 2.2: Giao di n ng d ng Visual Studio 2010

c 3: Ch n Menu File > New > Project

Hình 2.3: Giao di n t o d án m i

c 4: Sau khi th c hi c 3, c a s New Project s xu t hi n, t i c a


s này l p trình viên có th ch n ngôn ng l p trình s d ng và ch n lo i ng
d ng mu n vi t. C th n ngôn ng Visual C#, và lo i ng d ng là
Windows Forms ã ch n xong lo i ng d t, l p trình viên c n
t tên cho d án (n u không mu n s d ng tên m nh c a Visual Studio) và
ng d n s

́ï
Ch n ngôn ng l p trình

Ch n lo i
ng d ng

t tên cho
d án

Ch n
ng d n
án

Hình 2.4: C a s New Project

o xong d án, m t form m i có tên Form1 m nh s c thêm


vào d án v a t p trình viên có th thi t k giao di n c a
Form1 b ng cách thêm các thành ph n c n thi t phù h p v i nhu c u c a ph n m m.

Thanh menu

Thanh titlebar

Giao di n ban
u c a form

Hình 2.5: Giao di n chính c a d án Windows Forms

́î
Thêm form m i vào d án:
Ph n l n các d án ph n m u ch a r t nhi u form p trình viên có
th thêm m t form m i vào d án và thi t k f t i th m thi t k ho c l p
trình viên có th thêm form m i b ng cách vi n mã t o form và form m i s
c t o ra t i th m th c thi c .
thêm m t form m i vào d án t i th m thi t k , trên menu Project, ch n
Add Windows Form. M t h p tho cm nm c
t tên cho form m hoàn t t vi c thêm
form m i vào d án ph n m m.

Ch n Windows Form

t tên cho form m i

Hình 2.6: C a s Add New Item

thêm m t Form m c thi t k giao di n, l p trình


viên s ph i vi of form m i s ct o
và hi n th trong c th c thi.
ng thu c l
Form form1;
form1 = new Form();
Hi n th Form khi t i th c thi c n s d
th c Show() ho c ShowDialog():
form1.Show();

́í
2.1.2. Không gian tên (namespace)

Namespace c g i là không gian tên. n c a vi c s d ng không gian


tên là tránh s t tên l p (class) trong m t d án (project). Ngoài ra, không gian
tên còn giúp phân nhóm nh ng l p có cùng ch m giúp d dàng qu n lý mã
ngu n. C th , làm vi c v o ra m t l p Console, l p
này ch a nh ng thu c ch dành riêng làm vi c v ng
Console, l t trong không gian tên System;
Không gian tên t ch c d ng phân c c phân c p c c.
Trong m t không gian tên có th ch a nhi u l p, các l p trong cùng m t không gian
tên c trùng tên. Hình 2.7 cho th y s phân c p c a không gian tên:
Không gian tên System ch a không gian tên Data;
Không gian tên Data ch a không gian tên Oracle và SqlClient;
Trong không gian tên SqlClient ch a nhi u l p
SqlCommand, l p SqlConnect

System
Console

Data
Oracle SqlCommand
SqlClient SqlConnection

Hình 2.7: T ch c phân c p c a không gian tên trong C#

S d ng không gian tên:


C# xây d ng s n nhi u l p ng t trong các không gian tên khác nhau
ph c v cho vi c l p trình. s d ng không gian tên trong C#, c n s d ng t khóa
using.
Ví d 2.1:
using System;
using System.Windows.Forms;
Khi t o m t d án ki u Windows Application, m nh d án s s d ng 8
không gian tên sau:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

́́
using System.Linq;
using System.Text;
using System.Windows.Forms;

- Không gian tên System: Ch a các l p và các ki u d li (int, double,

- Không giam tên System.Data: Ch a các l p c a ADO.NET, các l p giúp


k t n i ho c thao tác v d li u (SQL Server, Oracle, Microsoft
Access).
- Không gian tên System.Drawing: Ch a các l p làm vi c v h a.
- Không giam tên System.ComponentModel: Ch a các l và giao di n
giúp th c thi chuy i ki u, thu c tính, liên k t v i các d li u ngu n và
các thành ph n c p phép
- Không gian tên System.Collections.Generic: Ch a các l p h tr cho vi c
thi t l p các t p h p d ng chung m
ArrayList List<T>: T p h p chung m u có th c
khi v n hành.
Queue Queue<T>: T p h p chung m c ra
c(FIFO).
Stack Stack<T>: T p h p chung m c
(LIFO)

- Không gian tên System.Text: Cung c p các l p giúp mã hóa các ký t Ascii
ho c Unicode.
- Không gian tên System.Linq: Cung c p các l p h tr cho vi c s d ng
ngôn ng truy v n tích h p (Language-Integrated Query LinQ).
- Không gian tên System.Windows.Forms: Là không gian tên chính cung c p
các l xây d ng ng d ng ki u Windows Application. Không gian tên
System.Windows.Forms chia thành các nhóm sau:
Control, UserControl, Form
Menu, toolbar: ToolStrip, MenuStrip, ContextMenuStrip,
StatusStrip
Controls: TextBox, ComboBox, ListBox, ListView, WebBrowser,

Layout:
u khi n trên form.

́ë
Data và DataBinding: G m các công c BindingNavigator,
liên k t d li u t d li n các
u khi n Dataset ho c DataGridView.
Command Dialog Boxes: G u khi n OpenFileDialog,
SaveFielDialog, ColorDialog, FontDialog, PrintDialog làm vi c v i
t p tin, màu s c, phông ch , in n.

2.1.3. Thanh công c (Toolbox)

Cung c c li t kê theo nhóm, cho phép


l p trình viên s d ng thao tác kéo th vào form thi t k giao di
Khi t o xong d án, thì giao di n chính c a d c hi n th
Phía bên tay trái hình 2.8 là thanh công c .
Ngoài nh u khi n hi n th m nh trong thanh công c , l p trình viên
có th thêm các thành ph n m i vào b ng các ch n Project/AddReference.

H p công c

Hình 2.8: Giao di n chính v i thanh công c bên trái

N u giao di n chính không hi n th thanh công c , l p trình viên có th hi n th


b ng cách ch n View/ Toolbox

́ê
Hình 2.9: Hi n th thanh công c
Thanh công c b u khi n thành nh ng nhóm riêng bi

Ch a u khi n thông
Ch u khi n giúp trình bày
d
u khi n khác trên form
Ch u khi n giúp
t o thanh th
Ch u khi n
tr ng thái: MenuStrip,
giúp làm vi c v
StatusStrip
s d li u
Ch u khi n giúp
Ch u khi n ki m tra d li u nh
giúp làm vi c v i vi c ErrorProvider, HelpProvider
in n: PrintDialog,
PrintReviewDialog Ch u khi n làm
vi c v i t p tin
Ch u khi n cho
Ch u khi n làm
u khi n
vi c v i báo cáo
c a WPF trong c a
s Windows Form:
Ch u khi n cho phép v các hình ô
ElemenHost
vuông, hình tròn, ..trên form, ho c in form.

Hình 2.10: Thanh công c


V i vi c phân lo u khi n theo nhóm giúp cho l p trình viên d dàng tìm
ki u khi n c n s d

́é
2.1.4. nh d ng mã C#

nh d ng mã l nh khi l p trình. L p trình viên c a th tùy ch nh l nh


d ng mã trong c a s u tiên b t c a s Option b ng cách ch n Tools/
Options :

Hình 2.11: Giao di n c a s Option

c a s Option, ch n m c Evir
nh d ng l i mã l nh:

c hi n th

Font ch hi n th

M c mu nh d ng
Màu n n mã l nh
i
n, t

Màu c a mã l nh

Hình 2.12: Giao di nh d ng mã l nh

2.2.Các lo i Form
2.2.1. Thu c tính Form

Thi t l p giá tr thu c tính form trong c a s Properties:

́è
Windows Forms h tr nhi u thu c tính cho vi c tùy ch nh form. L p trình viên
có th i giá tr các thu c tính này trong c a s u
ch c, màu s c, font ch a form cho phù h p.

Hình 2.13: Giao di n c a s Properties

B ng 2.1 mô t m t s thu ng s d ng trong vi c thi t k form


B ng 2.1: B ng mô t thu c tính Form
Thu c tính Mô t
Name t tên form
AcceptButton Giá tr thu c tính này nh n là tên c a m t
p
chu th i
dùng có th n phím Enter trên bàn phím
Backcolor Thi t l p màu n n c a form
BackgroundImage Thi t l p hình n n cho form
BackgroundImageLayout Thi t l p vi c hi n th hình v a thêm trong
thu c tính BackgroundImage s hi n th
trên form d ng (None),
gi
CancelButton Giá tr thu c tính này nh n là tên c a m t
p
chu th i
dùng có th n phím Escape trên bàn phím
ControlBox Mang giá tr true ho c false. N u thi t l p

́ç
thu c tính là false thì s lo i b các nút
minimize và nút maximize trên form
Cusor Thi t l p hình d ng con tr khi di chuy n
con tr vào form
Enable Mang giá tr true ho c false; N u thi t l p
thu c tính u khi n trong
form s i dùng thao
tác.
Font Thi t l n hi n th u khi n
ForeColor Thi t l p màu m nh cho chu i c a các
u khi n trên form
FormBorderStyle Thi t l p ng vi n c a form và hành vi
c a form khi ch
HelpButton Mang giá tr true ho c false; N u thi t l p
thu c tính là true thì trên thanh titlebar s
hi n 1 nút có d u ? (nút này ch hi n khi
hai thu c tính MinimizeBox và
c thi t l p là false)
Icon Bi ng hi n th bên trái trên thanh
titlebar c a form
KeyReview Mang giá tr true ho c false: n u thi t l p
thu c tính là true cho phép các s ki n bàn
phím c a form có hi u l c
Location Khi thu c thi t l p
là Manual, thì thu c tính Location có tác
d ng thi t l p v trí hi n th c a form trên
màn hình
MaximizeBox Mang giá tr true ho c false: n u thi t l p
thu c tính là false thì nút maximize form
trên thanh titlebar s m
MaximumSize Thi t l c l n nh t c a form
(chi u r ng x chi u cao)
MinimizeBox Mang giá tr true ho c false: n u thi t l p
thu c tính là false thì nút minimize form
trên thanh titlebar s m
MinimumSize Thi t l p c nh nh t c a form
(chi u r ng x chi u cao)

ëđ
Opacity Thi t l trong su t cho form
Size c form
StartPosition V trí hi n th c a form trên màn hình
Text Chu i v n hi n th trên titlebar c a
form
TopMost Mang giá tr true ho c false: n u thi t l p
thu c tính là true thì form s luôn hi n th
trên các c a s khác
Visible Mang giá tr true ho c false: n u thi t l p
thu c tính là true thì form s c hi n th
trên màn hình, n u là false s không hi n
th trên màn hình
WindowState Có 3 giá tr : Normal: hi n th form bình
ng; Minimized: khi ch
form s b thu nh i thanh taskbar;
Maximized: form hi n th c
y màn hình
IsMDIContainer Mang giá tr True ho c False.
- N u là True: Form d ng MDI Form
- N u là False: Form d ng bình
ng
MdiParent mang giá tr ng MDI Form. Khi
thi t l p giá tr cho thu c tính MdiParent
thì form s tr thành Child Form

Thi t l p giá tr thu c tính form b ng mã l nh:


Ngoài vi c thi t k form b ng vi t thi t l p các giá tr trong c a s properties.
L thi t l p giá tr thu c tính c a form b ng mã l
- i chu n hi n th trên titlebar b ng cách thi t l p giá tr cho
thu c tính Text:
Form1.Te

- Thi t l c form: Có th thi t l p giá tr cho thu c tính Width và


thu c tính Height nh chi u r ng và chi u cao cho form.
Form1.Width = 300;
Form1.Height = 400;

ëï
ho c:
Form1.Size = new Size(300, 400);

u thu c tính StartPosition c thi t l p là WindowsDefaultBounds, thì form


s c thi t l cm nh. StartPosition c thi t l p giá tr khác thì kích
c form s c thi t l nh thu c tính Size.
- Thi t l trong su t cho form:
Form1.Opacity = 0.5;

- Thi t l p v trí hi n th c a form: S d ng thu c tính StartPosition thi t l p


v trí hi n th b u c a form trên màn hình. Giá tr thi t l p c a thu c tính
StartPosition là m t trong các giá tr nh s n trong bi n ki u li t kê
FormStartPosition:
B ng 2.2: Mô t các giá tr c a FormStartPosition
Giá tr Mô t
Manual N u StartPosition mang giá tr Manual thì v trí
form hi n th s là v trí thi t l p t i thu c tính
Size.
CenterScreen Form hi n gi a màn hình
WindowsDefaultLocatio Form hi n th t i v trí m nh v i c
n form s c thi t l p t i thu c
tính Size
WindowsDefaultBounds Form hi n th t i v trí m nh v c
form s cm nh
CenterParent Form hi n th v trí gi a form cha

Ví d 2.2: Hi n th Form1 v trí gi a màn hình


Form1.StartPosition = FormStartPosition.WindowsDefaultLocation;

Thi t l p form hi n th :
Trong C#, l p trình viên có th thi t l p form hi n th u tiên khi d c
th c thi b ng cách s a l i mã l nh trong hàm main c a l

ëî
L p Program m c
c tao ra
trong d án

n mã m nh
trong l p Program

Hình 2.14: L p Program

L p Program ch a m t hàm bên trong là hàm Main. Khi d c th c thi, thì


mã l nh trong hàm Main s th c. C th t i dòng:

Application.Run(new Form1());

Dòng l nh trên ch ra r u tiên s hi n th p trình


viên ch c n s a l i mã l nh ch nh m t form khác mu n hi n th b ng cách thay tên

Ví d 2.3: Hi n th form có tên Form2 trong d án


Application.Run(new Form2());

2.2.2. Các lo i Form

Trong ng d ng Windows Forms, có 3 lo ng (Normal


Form), form cha (Mdi Form), form con (Child Form).
Mdi Form:
Mdi Form là form có th ch c công vi c
c thi t l p thu c tính:
IsMdiContainer = True;
L p trình viên có th thi t l p thu c tính IsMdiContainer trong c a s Properties
trên màn hình thi t k form, ho c b ng mã l nh. t l p thu c tính
IsMdiContainer là True thì hình d ng form s

ëí
Hình 2.15: Hình d ng form khi chuy n t Normal Form sang Mdi Form

Child Form:
Child Form là d ng form n m bên trong vùng làm vi c c a Mdi Form hay nói
c ch a bên trong Mdi Form. M t form mu n tr thành
Child Form c n ph i khai báo thu c tính MdiParent có giá tr ng Mdi Form.
Thu c tín c bi u di n trên c a s p
trình viên b t bu c ph i thi t l p giá tr MdiParent b ng mã l nh.
Ví d 2.4: Vi u di

Hình 2.16: Mdi Form và Child Form

ng d n:
c 1: T o m t d án m i b ng C#, lo i d án là Windows Forms Application.
Giao di u tiên c n th

ë́
Hình 2.17: Giao di n Form1 khi t o d án

c 2: Vi t mã l
T i s ki n Load c a Form1 vi t các dòng l nh sau:
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Mdi Form";
this.IsMdiContainer = true;
Form frm = new Form();
frm.Text = "Child Form";
frm.MdiParent = this;
frm.Show();
}

c 3: Nh biên d ch mã ngu n và nh th c thi

Normal Form:
Normal Form là form ho c l p v i t t c các form khác
s không ch a ho c ch a b i m t form nào khác ng khi t o m i d
án Windows Forms Application thì form m c t o và hi n th u tiên là
Normal Form. Giao di n c

2.2.3. Các hình d ng c a Form

Windows Forms m c t o ra u d ng hình ch nh t. N u


l p trình viên mu n t o form v i hình d c hình thì
c n thi t l p l i thu c tính Region c a form trong s ki n Form_Load. Tuy nhiên, l p
trình viên không th th c hình d ng m i c a form trong lúc thi t k mà ch có th

ëë
th c hình d ng khác c c th c n ph i
th ul c form phù h p v i nhu c u thi t k .
Ví d 2.5: Thi t k form có hình ellipse có chi u r ng là 300 và chi u cao là 200
c 1: T o s ki n Form_Load b ng cách nh t vào màn hình thi t
k 8:

Nh t vào
màn hình thi t k
c a form

Hình 2.18: Màn hình thi t k form

c 2: Sau khi t o ra s ki n Form_Load, ti n hành vi t các dòng l nh trong s


ki n Form_Load sau:

private void Form1_Load(object sender, EventArgs e)


{
System.Drawing.Drawing2D.GraphicsPath path = new
System.Drawing.Drawing2D.GraphicsPath();
path.AddEllipse(0, 0, 300, 200);
Region myRegion = new Region(myPath);
this.Region = myRegion;
}

c 3: th c th c thi s c
9:

ëê
Hình 2.19: Form hình Ellipse

2.2.4. Bi n c c a Form
Bi n c c a form hay có th g ng ho c s ki n
form. ng d ng Windowns Forms c h tr nhi u s ki n mã t o ra
các s ki c sinh ra m t cách t ng. s d ng các s ki n c a form l p
trình viên c n th c hi n các thao tác sau:
c 1: Nh p chu t trái vào form
c 2: Trên c a s ng, nh p chu t trái vào bi ng
m h p tho i các s ki n 20.
c 3: H p tho i hình 2.20 ch a nhi u s ki
form, m form, di chuy n chu p trình viên mu n s d ng s
ki n nào ch c n nh t trái vào s ki

Danh sách các


s ki n c a form

Hình 2.20: Danh sách s ki n form

ëé
Ví d 2.6: Mu n s d ng s ki n nh p chu t c a form ch c n nh t vào s
ki n Click thì m c nh p chu t c a form s ct ng phát sinh mã
l nh:

private void Form1_Click(object sender, EventArgs e)


{
//Mã l nh khi nh p chu t vào form
}

B ng mô t các s ki n ng s d ng c a form:
B ng 2.3: B ng mô t các s ki n c a form
S ki n Mô t
AutoSizeChanged X y ra khi thu c tính Autosize c a Form chuy n t
True c l i là False sang True
BackColorChanged X y ra khi thu c tính BackColor c i
Click X i dùng Click chu t vào vùng làm
vi c thu c Form
ControlAdded X y ra khi m u khi c Add vào Form
ControlRemoved X y ra khi m u khi n b xóa kh i Form
CursorChanged X y ra khi thu c tính Cursor c i
DoubleClick X i dùng DoubleClick vào vùng làm
vi c c a Form
FontChanged X y ra khi thu c tính Font c a Form có s i
ForeColorChanged X y ra khi thu c tính ForeColor c a Form có s thay
i
FormClosed X
trên titlebar)
FormClosing X ki n FormClosed
và ng dùng trong l p trình CSDL:
khi x y ra s ki t n i CSDL)
KeyDown X i dùng nh n m t phím hay m t t
h p phím
KeyPress X i dùng nh n m t phím
KeyUp X i dùng nh m t phím
MouseClick X i dùng nh n chu t (m t trong 3 l a
ch n: Trái, gi a, ph i)
MouseDoubleClick X i dùng nh t vào m t
vùng làm vi c c a Form (m t trong 3 l a ch n: Trái,

ëè
gi a, ph i)
MouseDown X i dùng nh n chu t
MouseHover X i dùng di chuy n vào các vùng làm
vi c Form
MouseLeave X y ra khi di chuy n chu t ra kh i vùng làm vi c
c a Form
MouseMove X y ra khi di chuy n chu t trên m t vùng làm vi c
thu c Form (n u Form có ch a m u khi n nào
chuy n chu u khi n này thì không
x y ra s ki n MouseMove c a Form)
MouseUp X i dùng nh nh n chu t (có th là
chu t trái, chu t ph i, chu t gi a - chu t cu n)
Move X y ra khi di chuy n Form (có s i v trí
c a Form)
StyleChanged X y ra khi thu c tính FormBorderStyle c a Form
thay i
TextChanged X y ra khi thu c tính Text c i.

S ki n FormClosed: S ki cg
private void frmForm_FormClosed(object sender,
FormClosedEventArgs e)
{
MessageBox S ki n FormClosed c g i
}

S ki n FormClosing: X

private void frmForm_FormClosing(object sender,


FormClosingEventArgs e)
{
DialogResult kq = MessageBox.Show("B n mu
Form l i không?", "FormClosing",
,MessageBoxButtons.YesNo,
MessageBoxIcon.Information);
if ( kq == DialogResult.Yes)
e.Cancel = false; i
else
e.Cancel = true; a
}

ëç
S ki n KeyPress: X y ra khi n phím, n u không ch c nh n thì
khi nh n b t c phím nào c a s ki n KeyPress c u x y ra.
private void frmForm_KeyPress(object sender,
KeyPressEventArgs e)
{

if (e.KeyChar = 'a') //nh n phím a trên bàn phím


MessageBox.Show("S ki c g i");
}
S ki n KeyDown:

private void frmForm_KeyDown(object sender,


KeyEventArgs e)
{
// Nh n Ctrl+F g i s ki n KeyDown
if (e.KeyCode == Keys.F &&
e.Modifiers == Keys.Control)
MessageBox.Show("S ki c g i");
}

S ki n MouseClick: X y ra khi nh n m t trong 3 nút: chu t trái, gi a ho c


chu t ph i.
private void frmForm_MouseClick(object sender,
MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) //nh n chu t trái
MessageBox.Show("S ki n MouseClick c g i");
else
if (e.Button==MouseButtons.Middle)//nh n chu t gi a
MessageBox.Show("S ki n MouseClick c g i");
else
if(e.Button==MouseButtons.Right)//nh n chu t ph i
MessageBox.Show("S ki c g i");
}

2.2.5. c

M ts ng s d ng c a form: Show(), ShowDialog(), Hide(),


Close().
c Show c Show() s d hi n th form trên màn
hình.

êđ
Ví d 2.7: Thi t k 2.21:

Giao di n Form1
v i: Màu n n
form màu xanh,
form là
n Form
, v trí hi n th
form gi a màn
hình

Hình 2.21: Giao di n Form1

Yêu c u khi nh p chu 21 thì s hi n th Form2 gi a màn


22:

Giao di n Form2
v i: Màu n n
form màu vàng,
form là
n Form
2 , v trí hi n th
form gi a màn
hình

Hình 2.22: Giao di n Form2

ng d n:
c 1: T o D án Windows Forms m i v i form m u tên
Form1.
c 2: Thi t l p các thu
- Thi t l , màu n n và v trí hi n th cho Form1: Trên c a s
Properties thi t l p thu c tính Text, thu c tính BackColor và thu c tính
StartPosition hình 2.23:

êï
V trí hi n th c a
Form1

hi n th
trên titlebar
c a Form1
Thi t l p màu n n
Form1
Hình 2.23: Thi t l p thu c tính Form1

Sau khi thi t l p xong 3 thu 3s c Form1 có giao di n


21.
c 3: T o s ki n Click c a Form1 và thêm các mã l nh sau cho s ki n
Click:
private void Form1_Click(object sender, EventArgs e)
{
//T ng l p Form
Form Form2 = new Form();
//Thi t l trên titlebar c a form
Form2.Text = "Giao di n Form 2";
//Thi t l p v trí hi n th form
Form2.StartPosition = FormStartPosition.CenterScreen;
//Thi t l p màu n n cho form
Form2.BackColor = Color.CadetBlue;
c Show() giúp hi n th Form2
Form2.Show();
}

c 3 th c hi n xong và nh th và Click chu t


vào Form1 thì s 22.
c ShowDialog c ShowDialog ng hi n
th c Show c
Show() giúp hi n th form m i dùng v n có th quay l i thao
tá n th c ShowDialog() s
hi n th form m i dùng s ch có th thao tác trên form v a hi n
th i dùng mu n
thao tác lên forn hi n th c thì ph n hành b c

êî
ShowDialog(). M m khác n c ShowDialog() là
c tr v hai giá tr là DialogResuilt.OK và DialogResuilt.Cacel.
- c ShowDialog() tr v DialogResuilt.OK
hi n th .
- c ShowDialog() tr v DialogResuilt.Cacel
Ví d 2.8: Trong s ki n Click c c 3 trên, ti n hành thay
c Show c ShowDialog c
th i dùng ch có th thao tác v i Form2 mà không th quay tr
v c.
private void Form1_Click(object sender, EventArgs e)
{
//T ng l p Form
Form Form2 = new Form();
//Thi t l p tiêu trên titlebar c a form
Form2.Text = "Giao di n Form 2";
//Thi t l p v trí hi n th form
Form2.StartPosition = FormStartPosition.CenterScreen;
//Thi t l p màu n n cho form
Form2.BackColor = Color.CadetBlue;
c ShowDialog() giúp hi n th Form2
Form2.ShowDialog();
}

c Hide c giúp n m n th
trên màn hình. Vi c n form c c Hide(0 th c ch t là thi t l p
thu c tính Visible = false.
Ví d 2.9: Trong s ki n Click c c 3, th c hi n yêu c u là
khi nh p chu t vào Form1 thì Form1 s s hi n lên.

private void Form1_Click(object sender, EventArgs e)


{
//this là con tr i di n cho Form hi n hành, Form
/hi n hành
this.Hide();
Form Form2 = new Form();
Form2.Text = "Giao di n Form 2";
Form2.StartPosition = FormStartPosition.CenterScreen;
Form2.BackColor = Color.CadetBlue;
Form2.ShowDialog();
}

êí
c Close(): S d
Ví d 2.10: Trong s ki n Click c c 3, th c hi n yêu c u là

private void Form1_Click(object sender, EventArgs e)


{
//T ng l p Form
Form Form2 = new Form();
//Thi t l trên titlebar c a form
Form2.Text = "Giao di n Form 2";
//Thi t l p v trí hi n th form
Form2.StartPosition = FormStartPosition.CenterScreen;
//Thi t l p màu n n cho form
Form2.BackColor = Color.CadetBlue;
//Ki m tra giá tr tr v c c ShowDialog()
//n u giá tr tr v là DialogResult.Cancel thì Form2
c
//Close()
if (Form2.ShowDialog() == DialogResult.Cancel)
{
this.Close();
}
}

2.3. Bài t p cu
Câu 1: Trong các dòng mã l nh nào cho phép t o và hi n th m i
ng Windows Form m i có tên là Form1
a) Form1 frm = new Form1;
frm.Show();
b) Form Form1 = new Form();
Form1.Show();
c) Form1 frm ;
frm.Show();
d) Form frm;
frm.Show();
e) Form Form1 = new Form();
Form1.ShowDialog();
Câu 2: Trong các thu c tính sau, thu thi t l p n i dung hi n th trên
thanh title bar và thu thi t l p màu n n c a form.
a) Thu c tính Text và ForeColor
b) Thu c tính Display và BackColor
c) Thu c tính Text và BackColor

ế
d) Thu c tính Display và ForeColor
Câu 3: Các thu c tính sau, thu c tính nào cho phép thi t l p form tr thành Mdi Form
a) IsMdiContainer
b) MdiParent
c) MdiContainer
d) ParentForm
Câu 4: Các thu c tính sau, thu c tính nào cho phép thi t l p form tr thành Child Form
a) IsMdiContainer
b) MdiParent
c) MdiContainer
d) ParentForm
Câu 5: Trong các s ki n sau, s ki n nào s
a) FormClosed
b) FormClosing
c) ClosedForm
d) ClosingForm
e) Load
f) Click
Câu 6: Xây d ng form có d ng

Hình 2.21: Form hình d ng tam giác

êë
3: U KHI NG

3.1.

Label ng dùng hi n th thông tin ch ng s d ng kèm v i các u


khi n mô t ch . Label t trong nhóm Common Controls c a c a
s Toolbox

u khi n Label

u khi n Label trong c a s Properties

M t s thu ng dùng c a Label:


B ng 3.1: B ng mô t thu c tính Label
Thu c tính Mô t
BorderStyle Thi t l ng vi n
Font c và ki u ch hi n th trên Label
Text N i dung hi n th trên Label
Backcolor Màu n n c a Label
Name Tên c a Label
Locked Khóa không cho di chuy n
Enabled ánh d ng s tr ng thái ho t
ng
Cursor i hình tr chu Label
ForeColor Thi t l p màu ch hi n th trên Label
TextAlign C l ch hi n th trên Label
Visible n ho c hi n Label

êê
Ví d 1: Thi t k form hi n th

Hình 3.2: Giao di n hi n th thông tin sinh viên

ng d n:
c 1: T o d án Windows Forms m i, Form1 m nh t o s n trong d t

c 2: Kéo th các Label trong c a s Toolbox

Hình 3.3: Giao di n sau khi kéo Label vào Form1

c 3: Thi t l p giá tr thu c tính cho label1


Nh p chu t trái vào Form1 và thi t l p thu c tính Fonttrong c a s
Properties

Thi t l p
ki u ch

Thi t l p ch Thi t l p kích


m c ch 18

Hình 3.4: C a s thi t l p thu c tính Font

êé
Thi t l p thu c tính Text

Hình 3.5: Thi t l p thu c tính Text cho label1

Thi t l p thu c tính ForeColor

Hình 3.6: Thi t l p thu c tính ForeColor

Sau khi thi t l p xong thu c tính Text, giao di hình 3.7:

Hình 3.7: Giao di n Form1 sau khi thi t l p xong thu c tính cho label1

êè
c 4: Thi t l p các thu c tính Font cho label2, label3, label4, label5, label6

Hình 3.8: Thi t l p thu c tính Font cho label2, label3, label4, label5, label6

Thi t l p thu c tính Text

Hình 3.9: Thi t l p thu c tính Text cho label2

Thi t l p thu c tính Text

Hình 3.10: Thi t l p thu c tính Text cho label3

êç
Thi t l p thu c tính Text

Hình 3.11:Thi t l p thu c tính Text cho label4

Thi t l p thu c tính Text

Hình 3.12:Thi t l p thu c tính Text cho label5

Thi t l p thu c tính Text

Hình 3.13: Thi t l p thu c tính Text cho label5

c 5: Nh n F5 th 3.2.

3.2. u khi n Button

Button u khi n t o giao di n nút l i dùng nh n chu t


vào nút l th c hi n m Button t
trong nhóm Common Controls c a c a s Toolbox

éđ
u khi n Button

u khi n Button trong c a s Properties

M t s thu ng dùng c a Button:


B ng 3.2: B ng mô t thu c tính Button
Thu c tính Mô t
Name t tên cho nút l nh
Text N i dung hi n th trên nút nh n
Visible n/ hi n nút nh n
Enable i nút
l nh
Font Ch nh ki u ch , kích c ch hi n th
ForeColor Màu ch hi n th trên nút l nh
Image Hình nh hi n th trên nút l nh
BackColor Màu c a nút l nh
TabIndex Ch nh th t tab c a các Button trên form
M t s s ki ng dùng c a Button:
B ng 3.3: B ng mô t s ki n Button
S ki n Mô t
Click S ki n nh n chu tvào Button
MouseEnter Chu t n m trong vùng th c c a Button
MouseHover Rê chu t vào vùng c a Button
MouseLeave Rê chu t ra kh i vùng c a Button
MouseMove Chu c di chuy n trên Button.
Ví d 2: Thi t k form x lý nút l nh u: Khi nh p chu t vào nút
l Hi nth thì in s hi n th ch Xin chào iv ---n i dung hi n th ---
khi nh p chu t vào nút l Thoát

éï
Hình 3.15: Giao di n form x lý nút l nh
ng d n:
u khi n t c a s Toolbox vào form

Hình 3.16: Giao di u c a form x lý nút l nh


c 2: Thi t l p thu u khi n trong c a s Properties:
- label1:
Thu c tính Font: kích c ch 18;
Thu c tính ForeColor ;
Thu c tính Text: KHOA CÔNG NGH THÔNG TIN
- label2:
Thu c tính Name: lblNoiDung;
Thu c tính Font: kích c ch 20;
Thu c tính Text: ----n i dung hi n th ----
- button1:
Thu c tính Name: btnHienThi
Thu c tính Text: Hi n th
- button2:
Thu c tính Name: btnThoat
Thu c tính Text: Thoát
c 3: Vi t mã l nh cho các nút l nh:
- S ki n Click c a nút l nh btnHienThi:

éî
privatevoid btnHienThi_Click(object sender, EventArgs e)
{
LblNoiDung.Text = "Xin chao"
}

- S ki n Click c a nút l nh btnThoat:

privatevoid btnThoat_Click(object sender, EventArgs e)


{
Close();
}

3.3. u khi n TextBox

TextBox u khi nh p chu i làm d li u vào cho ng d ng


ho c hi n th chu i i dùng có th nh p nhi u dòng, ho c t o m t n nh p m t
kh u.TextBox t trong nhóm Common Controls c a c a s Toolbox
3.14.

u khi n TextBox

u khi n TextBox trong c a s Properties

éí
M ts ng dùng c a TextBox:
B ng 3.4 : B ng mô t c c a TextBox
c Mô t
Clear() Xóa t t c chu i hi n th trong TextBox
Cut() Di chuy n ph n n en c a chu i
Past() Dán ph n n c ch n c a chu i
Copy() Sao chép ph n n a chu i
Undo() Khôi ph c
Select() Ch n m t ph n n i dung c a chu i trong
TextBox
SelectAll() Ch n t t c n i dung c a chu i trong TextBox
DeselectAll() B ch n chu i trong TextBox

M t s thu ng dùng c a TextBox:


B ng 3.5: B ng mô t các thu c tính c a TextBox
Thu c tính Mô t
Name Tên c a TextBox g i vi t l nh
Text N i dung hi n th
ch y
Font Ch n ki u ch c ch cho TextBox
ForeColor Ch n màu ch cho TextBox
BackColor Ch n màu n n cho TextBox
Enable Cho phép/Không cho phép thao tác trên
TextBox
Mutiline Cho phép TextBox có nhi u dòng hay không
PasswordChar Ký t thay th khi nh p vào TextBox
ReadOnly Cho phép/Không cho phép s a d li u trên
TextBox
Visible n/ hi n TextBox
TextAlign Canh l d li u trong TextBox
MaxLength Q nh chu i Max s nh p vào TextBox, m c
nh là 32767
ScrollBars Các lo i thanh cu n (d c, ngang, c hai)
WordWrap C nt ng xu
t quá chi u ngang c a TextBox
BorderStyle nh ki ng vi n cho TextBox
TabIndex Ch nh th t tab c a các TextBox trên form

é́
Focus TextBox s is
d ng
CanUndo Mang giá tr True ho c False, n u là True thì
cho phép th c hi cUndo(), mang
giá tr True khi TextBox c hi n thao tác
thêm, s a hay xóa n i dung.
SelectedText L y ra ph n n i dung chu
SelectionStart V trí b u ch n n i dung c a chu i
SelectionLength Chi u dài chu i s ch n trong TextBox
HideSelection Mang giá tr True ho c False, n u là True thì
không cho phép s d ng thu c tính
SelectionStart, n u là giá tr False thì chó phép
s d ng SelectionStart

M t s s ki ng dùng c a TextBox:
B ng 3.6: B ng mô t các s ki n c a TextBox
S ki n Mô t
KeyDown Th c hi n công vi c
nh n xu ng
KeyUp Th c hi n công vi khi m c
nh ra
KeyPress X i s d ng nh n m t phím và
nh ra, ta dùng s ki l c các phím
không mu n nh p s n 9)
không cho nh p chu i. M i s ki n KeyPress
cho ta m t c p s ki n KeyDown và KeyUp
Click Nh p chu t vào TextBox
DoubleClick Nh t vào TextBox
MouseEnter Chu t n m trong vùng th c c a TextBox
MouseHover Chu t n m trong vùng hi n th m t quãng th i
gian
MouseLeave Chu t ra kh i vùng nh p li u c a TextBox
MouseMove Chu c di chuy n trên TextBox
TextChanged Giá tr c a thu c tính Text b i

éë
Ví d 3: Thi t k form và th c hi n các yêu c
Khi nh p chu t
trái vào nút
Thoát s

trình

Nh p chu i c n
Nh p chu Tìm Ki m trình s tìm
tìm
ki chu i c n tìm i dung hay
không, n u tìm th y s hi n chu i tìm th y trên
MessageBox, n u không tìm th y s hi n chu i
Không tìm th y

Hình 3.15: Giao di n form x lý TextBox

ng d n:
c 1: Thi t k

TextBox1

TextBox2
Hình 3.16: Giao di u c a form x lý TextBox

c 2: Thi t l p các thu c tính c u khi n trong c a s Properties:


- label1:
Thu c tính Text = N i dung:
- label2:
Thu c tính Text = Nh p chu i:
- textbox1:
Thu c tính Name = txtNoiDung
Thu c tính Text= Qu cau nho nh mi ng tr u cay

éê
Này c tr i
Có ph i duyên nhau thì th m l i

Thu c tính Multiline = true; S d ng chu u ch c textbox1


.
- textbox2:
Thu c tính Name = txtTimKiem
- button1:
Thu c tính Name = btnTimKiem
Thu c tính Text = Tìm ki m
- button2:
Thu c tính Name = btnThoat
Thu c tính Text = Thoát
c 3: Vi t mã l nh cho các nút l nh:
- S ki n Click c a nút l nh btnThoat:
privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

- S ki n Click c a nút l nh btnTimKiem:


privatevoid btnTimKiem_Click(object sender, EventArgs e)
{
int i;
i=txtNoiDung.Text.IndexOf(txtchuoitk.Text);
if (i >= 0)
{
txtNoiDung.SelectionStart = i;
txtNoiDung.SelectionLength =
txtchuoitk.Text.Length;
MessageBox.Show(txtNoiDung.SelectedText);
}
else
MessageBox.Show("Không tìm th y");
}
3.4. n ComboBox và ListBox

ComboBoxvàListBox là hai u khi n có nhi u s d ng


ch a d li i dùng l a ch n.

éé
3.4.1. ListBox

T i m i th m có th ch n m t ho c nhi u dòng d li u, không cho nh p


m i. u khi n ListBox t trong nhóm Common Controls c a c a s Toolbox
7

u khi n ListBox

Hình 3.17 u khi n ListBox trong c a s Properties

M t s thu ng dùng c a ComboBox:


B ng 3.7: B ng mô t các thu c tính c a ComboBox
Thu c tính Mô t
SelectionMode Cho phép ch n m t ho c nhi u dòng d li u
trên ListBox, bao g m:
One: ch ch n m t giá tr .
MultiSimple: cho phép ch n nhi u, ch n
b ng cách click vào m c ch n, b ch n
b ng cách click vào m n.
MultiExtended: ch n nhi u b ng cách nh n
k t h p v i Shift ho c Ctrl
SelectedItems c s d ng khi SelectionModelà MultiSimple
ho c MultiExtended. Thu c
tínhSelectedItemsch a các dòng d li c
ch n.
SelectedIndices c s d ng khi SelectionModelà MultiSimple
ho c MultiExtended. Thu c
tínhSelectedItemsch a các ch s c a các dòng
d li c ch n.
FormatString Chu nh d ng. T t c các m c ch n trong
ListBox s nh d ng theo chu i này. Vi c

éè
nh d ng này ch th c hi n khi thu c tính
FormattingEnabled c thi t l p là True
FormatingEnable Mang hai giá tr True và False. N u là True thì
cho phép các m c ch n trong ListBox có th
nh d ng l i. N u là False thì không th nh
d ng.
Items Tr v các m c ch a trong ListBox
DataSource Ch n t p d li n vào ListBox. T p d li u
có th là m ng chu i, ArrayList, ..
SelectedIndex L y ch s m c ch n, ch s m c ch u
tiên là 0
SelectedItem Tr v m c ch n
SelectedValue Tr v giá tr c a m c ch n n u ListBox có liên
k t d li u. N u không liên k t d li u ho c
thu c tính ValueMember c thi t l p
thì thì giá tr thu c tính SelectedValue là giá tr
chu i c a thu c tính SelectedItem
ValueMember Thu c tính này ch nh d li u thành viên s
cung c p giá tr cho ListBox
Ví d 4: Xây d i ListBox ch a danh sách tên c a các sinh viên
hình 3.18

ListBox cho
Hi n th các sinh phép ch n
c ch n nhi u sinh
trên ListBox viên
thông qua
MessageBox
Thoát

Hình 3.18: Giao di n ví d 4

éç
ng d n:
c 1: Thi t k giao di

Hình 3.19: Giao di u ví d 4

c 2: Thi t l p giá tr các thu u khi n


- label1:
Thu c tính Text Danh sách sinh viê
Thu c tính Size = 16
- button1:
Thu c tính Text n th
Thu c tính Name = btnHienThi
- button2:
Thu c tính Text
Thu c tính Name = btnThoat
- listBox1: listBox1 ch a danh sách tên sinh viên, danh sách tên sinh viên có
th ng cách thi t l p thu c tính Items c a listBox1 trong
c a s Properties

èđ
Hình 3.20: Thi t l p thu c tính Items cho listBox1

c 3: Vi t mã l nh cho các nút l nh:


- S ki n Click c a nút l nh btnHienThi:
privatevoidbtnHienThi_Click(object sender, EventArgs e)
{

string str="";
foreach(string item in listBox1.SelectedItems)
{
str=str+item+"; ";
}
MessageBox.Show(str);
}
- S ki n Click c a nút l nh btnThoat:
privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

èï
3.4.2. ComboBox

M i l n ch có th ch n m t giá tr , có th nh p m i d li u vào. u khi n


ComboBox t trong nhóm Common Controls c a c a s Toolbox 21

u khi n ComboBox

Hình 3.21 u khi n ComboBox trong c a s Properties

M t s thu ng dùng c a ComboBox:


B ng 3.8: B ng mô t thu c tính c a ComboBox
Thu c tính Mô t
Text Tr v n i dung dòng d li n th trên ComboBox
DropdownStyle Q nh d ng c a ComboBox, nh n m t trong các giá tr :
DropDown: giá tr m nh, có th ch n ho c nh p
m i m c d li u vào ComboBox.
Simple: hi n th theo d ng ListBox + TextBox có th
ch n d li u t ListBox ho c nh p m i vào TextBox.
DropDownList: ch cho phép ch n d li u trong
ComboBox
DropDownHeight Thi t l p chi u cao t xu ng c a ComboBox
DropDownWidth Thi t l r ng c a m c ch n trong ComboBox
FormatString Chu nh d ng. T t c các m c ch n trong ComboBox s
nh d ng theo chu i này. Vi nh d ng này ch
th c hi n khi thu c tính FormattingEnabled c thi t l p
là True
FormatingEnable Mang hai giá tr True và False. N u là True thì cho phép
các m c ch n trong ComboBox có th nh d ng l i. N u
là False thì không th nh d ng.
Items Tr v các m c ch a trong ComboBox

èî
DataSource Ch n t p d li n vào ComboBox. T p d li u có th
là m ng chu i, ArrayList, ..
SelectedIndex L y ch s m c ch n, ch s m c ch u tiên là 0
SelectedItem Tr v m c ch n
SelectedText L y chu i hi n th c a m c ch n
SelectedValue Tr v giá tr c a m c ch n n u ComboBox có liên k t d
li u. N u không liên k t d li u ho c thu c tính
ValueMember c thi t l p thì thì giá tr thu c tính
SelectedValue là giá tr chu i c a thu c tính SelectedItem
ValueMember Thu c tính này ch nh d li u thành viên s cung c p giá
tr cho ComboBox

Ví d 5: Xây d i giao di n g m ComboBox ch a


t Label hi n th dòng ch Hoàng Sa,
ng Sa là c a Vi t Nam u khi ch n màu trong ComboBox thì màu c a
dòng ch trên Label s ng.

u khi n ComboBox

Hình 3.22: Giao di n ví d 5

ng d n:
c 1: Thi t k giao di n

Hình 3.23: Giao di u ví d 5

c 2: Thi t l p giá tr thu u khi n


- label1:

èí
Thu
- button1:
Thu c tính Name = btnDoiMau
Thu c tính
- button2:
Thu c tính Name = btnThoat
Thu
- label2:
Thu c tính Name = lblHienThi
Thu ng Sa, Hoàng Sa là c a Vi
- comboBox1: comboBox1ch a danh sách 4 màu g
Danh sách màu này có th ng cách thi t l p thu c
tính Items c a comboBox1 trong c a s Properties

Hình 3.24: Thi t l p thu c tính Items c a comboBox1

c 3: Vi t mã l nh cho các nút l nh:


- S ki n Click c a nút l nh btnDoiMau:
privatevoidbtnDoiMau_Click(object sender, EventArgs e)
{
if (comboBox1.Text == "Vàng")
lblHienThi.ForeColor = Color.Yellow;
if (comboBox1.Text == ")
lblHienThi.ForeColor = Color.Red;
if (comboBox1.Text == )
lblHienThi.ForeColor = Color.Black;
if (comboBox1.Text == "Xanh")
lblHienThi.ForeColor = Color.Blue;
}

è́
- S ki n Click c a nút l nh btnThoat:
privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

3.4.3. c và s ki n c a ComboBox và ListBox

M t s c và thu ng dùng c a ComboBox.Items ho c


ListBox.Items:
B ng 3.9: B ng mô t c và thu c tính c a ComboBox.Item và
ListBox.Item
c Mô t
Add(<M c m i>) Thêm m t m c <M c m i> vào cu i danh sách
ComboBox ho c ListBox
AddRange(<M ng m c ch n>) Thêm m t m ng các m c
Insert( i, <M c m i> ) Chèn thêm m c ch n <M c m i> vào v trí i
Count Tr v s m c ch n hi
Item( i ) Tr v m c ch n v trí th i
Remove(<M c c n xóa>) Xóa m c ch n <M c c n xóa> kh i ComboBox
ho c ListBox
RemoveAt( i ) Xóa m c ch n có ch s i kh i ComboBox ho c
ListBox
Contains(<M c c n tìm>) Tr v True n u có m c ch n <M c c n tìm>
trong danh sách, tr v False n u không có m c
ch n trong ComboBox ho c ListBox
Clear() Xóa t t c các m c ch n
IndexOf(<M c c n tìm>) Tr v ch s m c ch n <M c c n tìm> trong
ComboBox ho c ListBox, n u không tìm th y s
tr v -1

S ki n ng dùng c a ComboBox và ListBox:


C ComboBox và ListBox u s d ng s ki n SelectedIndexChange ki m tra
s i m c ch n c i dùng.
Ví d 5: Thi t k form qu n lý danh sách s n ph i CboViTri là
u khi n ComboBox ch a danh sách ch s c a danh sách s n ph m trong ListBox
Li_DSSanPham. Yêu c u ch

èë
- Khi nh n nút btnThem thì s thêm s n ph m m i vào cu i danh sách trong
ListBox Li_DSSanPham.
- Khi nh n nút btnThemVT thì s thêm s n ph m m i vào danh sách t i v trí
nh.
- Khi nh n nút btnTimKiem s hi n th m t MessageBox thông báo có tìm
th y s n ph m trong danh sách không.
- Khi nh n nút btnXoa s xóa s n ph c ch n trong danh sách.
- Khi nh n nút btnXoaDS s xóa t t c s n ph m trong danh sách.

Li_DSSanPham btnThem CboViTri

btnThemVT

btnTimKiem

btnXoa btnXoaDS

Hình 3.25: Giao di n form qu n lý s n ph m

ng d n:
c 1: Thi t k giao di

Hình 3.26: Giao di u form qu n lý s n ph m

c 2: Thi t l p thu u khi n trong c a s Properties


- listBox1:
Thu c tính Name: Li_DSSanPham
- label1:
Thu c tính Text n ph

èê
- label2:
Thu c tính Text n ph
- label3:
Thu c tính Text n ph
- label4:
Thu c tính Text p s n ph m c
- label5:
Thu c tính Text
- textbox1:
Thu c tính Name: txtThemSP
- textbox2:
Thu c tính Name: txtThemSPViTri
- textbox3:
Thu c tính Name: txtTimSP
- button1:
Thu c tính Text
Thu c tính Name: btnThem
- button2:
Thu c tính Text
Thu c tính Name: btnThemVT
- button3:
Thu c tính Text
Thu c tính Name: btnTimKiem
- button4:
Thu c tính Text n ph
Thu c tính Name: btnXoa
- button5:
Thu c tính Text n ph
Thu c tính Name: btnXoaDS
- combobox1:
Thu c tính Name: cboViTri
c 3: Vi t mã l nh
- S ki n Form_Load cho Form1 :
privatevoid Form1_Load(object sender, EventArgs e)
{
ThietLapViTriComboBox();
}

èé
- Vi t mã l nh cho hàm ThietLapViTriComboBox:
privatevoid ThietLapViTriComboBox()
{ cboViTri.Items.Clear();
int chiso = DSSanPham.Items.Count;
for (int i = 0; i < chiso; i++)
cboViTri.Items.Add(i.ToString());
}

- S ki n Click nút l nh btnThem


privatevoid btnThem_Click(object sender, EventArgs e)
{
if (txtThemSP.Text.Trim() != "")
{
DSSanPham.Items.Add(txtThemSP.Text);
txtThemSP.Text = "";
ThietLapViTriComboBox();
}
else
MessageBox.Show("Ph i nh p tên s n ph m");
}

- S ki n Click nút l nh btnThemVT


privatevoid btnThemVT_Click(object sender, EventArgs e)
{
if (txtThemSPViTri.Text.Trim() != "" )
{
if (cboViTri.Text != "")
{
DSSanPham.Items.Insert(Convert.ToInt32(cboViTri.Text),
txtThemSPViTri.Text);
txtThemSPViTri.Text = "";
ThietLapViTriComboBox();
}
else
MessageBox.Show("Ph i ch n v trí thêm h p l ");
}
else
MessageBox.Show("Ph i nh p tên s n ph m ");
}

- S ki n Click nút l nh btnXoaDS


privatevoid btnXoaDS_Click(object sender, EventArgs e)
{
if (DSSanPham.Items.Count > 0)
DSSanPham.Items.Clear();
else
MessageBox.Show("Danh sách s n ph );
}

èè
- S ki n Click nút l nh btnXoa
privatevoid btnXoa_Click(object sender, EventArgs e)
{
if (DSSanPham.SelectedIndex < 0)
MessageBox.Show("Ch n s n ph m mu n xóa ");
else
{
DSSanPham.Items.Remove(DSSanPham.SelectedItem);
MessageBox.Show("Xóa s n ph m thành công");
}
}

- S ki n Click nút l nh btnTimKiem


privatevoid btnTimKiem_Click(object sender, EventArgs e)
{
if(txtTimSP.Text != "")
{
if(DSSanPham.Items.Contains(txtTimSP.Text) == true)
MessageBox.Show("Tìm th y s n ph m");
else
MessageBox.Show("Không Tìm th y s n ph m ");
}
else
MessageBox.Show("Nh p tên s n ph m c n tìm");
}

3.5. ckBox và RadioButton


3.5.1. CheckBox

CheckBox u khi n cho phép trình bày các giá tr l a ch n trên form,
i dùng có th ch n m t ho c nhi u giá tr cùng lúc. u khi n CheckBox t
trong nhóm Common Controls c a c a s Toolbox

u khi n CheckBox

u khi n CheckBoxtrên c a s Toolbox

èç
M t s thu ng dùng c a CheckBox:
B ng 3.10: B ng mô t các thu c tính c a CheckBox
Thu c tính Mô t
AutoCheck Mang giá tr True ho c False, n u là giá tr True thì cho phép
i dùng nh p chu ch n, n u là False thì không cho
i dùng nh p chu t ch n.
Checked Thi t l u khi n CheckBox c l a ch n ho c
không. Thi t l p giá tr u khi c ch n, n u
thi t l u khi c ch n.
CheckState ki m tra tình tr ng CheckBox c ch n
hay không. Mang 3 giá tr Unchecked, Checked, và
Indeterminate.
Checked u khi c ch n
UnChecked u khi c ch n
Indeterminate: u khi n tr ng thái không ho ng
Text Chu n hi n th bên c nh CheckBox
ThreeState Mang giá tr True ho c False; N u là True thì cho phép
CheckBox có 3 tr ng thái: Checked, UnChecked,
Indeterminate.
RightToLeft Mang giá tr Yes ho c No; Cho bi t chu n hi n th
(thu c tính Text) n m bên trái hay bên ph i c a CheckBox

S ki ng s d ng c a CheckBox:
S ki n quan tr ng xuyên s d ng c a CheckBox là s ki n Clickvà
CheckedChange.Hai s ki n này c a CheckBox cho bi t khi nh p chu t ch n thì
CheckBox s tr ng thái ch n (Checked) hay tr ng thái không ch n (UnChecked).
L p trình viên có th ki m tra CheckBox tr ng thái nào b ng cách ki m
tra thu c tính Checked ho c UnChecked c a CheckBox.
Ví d 6: Thi t k c hi n các yêu c u ch

çđ
Hình 3.28: Giao di n form Thông tin sinh viên ví d 6
Yêu c u:
- Khi nh xu t hi n MessageBox hi n th thông tin g m: H
tên sinh viên, l p, và các môn h c sinh viên ch n.
- Khi nh
ng d n:
c 1: Thi t k giao di

Hình 3.29: Giao di u form Thông tin sinh viên ví d 6

çï
c 2: Thi t l p thu u khi n cho form trong c a s Properties
- label1:
Thu c tính
Thu c tính Size: 16
- label2:
Thu ph
- label3:
Thu
- label4:
Thu c t ch
- textBox1:
Thu c tính Name: txtHoTen
- textBox2:
Thu c tính Name: txtLop
- checkBox1:
Thu
Thu c tính Name: chkCSharp
- checkBox2:
Thu
Thu c tính Name: chkMang
- checkBox3:
Thu lý
Thu c tính Name: chkXLAnh
- checkBox4:
Thu
Thu c tính Name: chkWeb
- button1:
Thu
Thu c tính Name: btnLuu
- button2:
Thu
Thu c tính Name: btnThoat
- S ki n Click c a nút l nh btnThoat:
privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

çî
c 3: Vi t mã l nh u khi n
- S ki n Click nút l nh btnLuu
privatevoid btnLuu_Click(object sender, EventArgs e)
{
string str = "";
str = str + "H tên: " + txtHoTen.Text + "\nL p: "
+ txtLop.Text + "\nDanh sách môn: ";
if (chkCSharp.Checked == true)
str = str + "L p trình C#, ";
if(chkMang.Checked==true)
str = str + "M ng máy tính, ";
if(chkWeb.Checked==true)
str = str + "L p trình Web, ";
if (chkXLAnh.Checked == true)
str = str + "X lý nh, ";
MessageBox.Show(str);
}

3.5.2. RadioButton

RadioButton u khi n cho phép trình bày các giá tr l a ch n trên form.
m khác bi t c a RadioButtonv i CheckBox i dùng ch có th có m t s l a
ch n v i các RadioButton RadioButtoncó th phân vào nh ng
nhóm khác nhau; V i nh ng RadioButtoncùng nhóm, i dùng nh p ch n m t
RadioButtonthì ng th i các RadioButtonkhác trong nhóm s l p t c b ch n. u
khi n RadioButton t trong nhóm Common Controls c a c a s Toolbox
hình 3.30

u khi n RadioButton

Hình 3.30 u khi n RadioButtontrên c a s Toolbox

M t s thu ng dùng c a RadioButton:

B ng 3.11 B ng mô t các thu c tính c a RadioButton


Thu c tính Mô t
Checked Thi t l u khi n RadioButton cl a

çí
ch n ho c không. Thi t l p giá tr True u
khi c ch n, n u thi t l u
khi c ch n.
Text Chu n hi n th bên c nh RadioButton
RightToLeft Mang giá tr Yes ho c No; Cho bi t chu
b n hi n th (thu c tính Text) n m bên trái hay
bên ph i c a RadioButton

Ngoài viêc thi t l p thu c tính Checked i tình tr ng c a RadioButton,


l s d ki m tra tình tr ng c a RadioButton. N u
RadioButton c ch n thì thu c tính Checked s là True, n u RadioButton không
c ch n s là False.
T t c RadioButton c ch u khi n thu c nhóm Containers t o
thành m t nhóm ng s d u khi nPanel hay GroupBox 3.31.
u này i dùng ch có th ch n duy nh t m t RadioButton trong nhóm.

u khi n Panel u khi n GroupBox

Hình 3.31 u khi n GroupBoxtrên c a s Toolbox

S ki ng s d ng c a RadioButton:
CheckBox, s ki ng dùng c a RadioButton
ki n Click và CheckedChange. S ki n Click th c hi i dùng nh p chu t vào
RadioButton, còn s ki n CheckedChang th c hi n khi tình tr ng c a RadioButton b
i t tr ng thái ch n (Checked) sang tr ng thái không ch n (UnChecked) và
c l i.
Ví d 7: Thi t k form Thông tin sinh viên c hi n yêu c u ch c

ḉ
txtNoiDung

Hình 3.32: Giao di n form thông tin sinh viên ví d 7

Yêu c u:
- Khi nh i dùng nh p s hi n th trong
u khi n TextBox có tên là txtNoiDung. Ví d : nh p h n
i tính ch
ngành h ph n m hi n th trên TextBox là:
H tên: Nguy
Khoa: Công ngh thông tin
Gi i tính: Nam
Chuyên ngành: Công ngh ph n m m
- Khi nh i
ng d n:
c 1: Thi t k giao di

Thu c tính Multiline là True

Hình 3.33: Giao di u tiên form Thông tin sinh viên ví d 7

çë
c 2: Thi t l p thu u khi n trong c a s Properties
- label1:
Thu c tính Text
Thu c tính Size: 16
- label2:
Thu c tính Text
- label3:
Thu c tính Text
- textBox1:
Thu c tính Name: txtHoTen
Thu c tính Text
- textBox2:
Thu c tính Name: txtKhoa
Thu c tính Text
- textBox3:
Thu c tính Name: txtNoiDung
Thu c tính Text
Thu c tính Multiline: True
- groupBox1:
Thu c tính Text
- groupBox2:
Thu c tính Text n ngành h
- groupBox3:
Thu c tính Text
- button1:
Thu c tính Name: btnDangKy
- button2:
Thu c tính Name: btnThoat
- radioButton1:
Thu c tính Name: radNam
Thu c tính Checked: True
- radioButton2:
Thu c tính Name: radNu
- radioButton3:
Thu c tính Name: radCNPM
Thu c tính Checked: True
- radioButton4:

çê
Thu c tính Name: radKTMT
- radioButton5:
Thu c tính Name: radMMTTT
- radioButton6:
Thu c tính Name: radHTTT
c 3: Vi t mã l u khi n
- S ki n Click nút l nh btnDangKy:
privatevoid btnDangKy_Click(object sender, EventArgs e)
{
txtNoiDung.Text = "";
string str = "";
str = "H tên: " + txtHoTen.Text + "\r\nKhoa: " +
txtKhoa.Text + "\r\n";
if (radNam.Checked == true)
str = str + "Gi i tính: Nam\r\n";
if (radNu.Checked == true)
str = str + "Gi i tính: Nu\r\n";
str = str + "Chuyên ngành: ";
if (radKTMT.Checked == true)
str = str + " K thu t máy tính";
if (radMMTTT.Checked == true)
str = str + "M ng máy tính và truy n thông";
if (radHTTT.Checked == true)
str = str + " H th ng thông tin";
if (radCNPM.Checked == true)
str = str + " Công ngh ph n m m";
txtNoiDung.Text = str;
}

- S ki n Click c a nút l nh btnThoat:


privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

3.6.
Câu 1: Vi t m s t c a chu i trong TextBox có giao di
3.34.

çé
TextBox

Hình 3.34: Giao di mt

- Button m s t s cho bi t chu i dùng nh p vào có bao nhiêu t (xem


các t cách nhau b i m t kho ng tr ng).
- Button Ti p t c xóa tr ng các textbox v tr u.
Câu 2: Vi ng kê t n su t xu t hi n
các t nh p vào.

TextBox
ListBox

Hình 3.35: Giao di m t n su t xu t hi n c a t


- Button m s t s hi n th t n su t xu t hi n c a t bên ListBox (xem các t
cách nhau b i m t kho ng tr ng).
- Button Ti p t c xóa tr ng cácTextBox và ListBox v tr u.
Câu 3: Vi c hai bao g i u khi n: Label,
giao di

çè
Hình 3.36: Giao di c hai

- Button s hi n th k t qu c ------
hi n th k t qu các TextBox s c thi t l p r i dùng có th nh p h
s c i.
- Thoát s .
Câu 4: Vi m s chính t dãy s nh p trong
TextBox (các s cách nhau b i kho ng tr ng). Giao di n g u khi n:

Hình 3.37: Giao di ms


- Button s hi n th các s ó trong dãy s nh p trong
TextBox.
- Thoát s
Câu 5: Vi t s thành các th a s nguyên t . Giao di n g m
u khi

çç
TextBox

Label

Hình 3.38: Giao di phân tích th a s nguyên t

- Button s phân tích s i dùng trong TextBox thành th a s


nguyên t hi n th trong Label.
Câu 6: Vi i dùng l a ch làm thành th
g ngày mà c a hàng th ng u khi n:

ListBox1 ListBox2

Hình 3.39: Giao di ch n th


- ListBox1: Hi n th danh sách t t c
- chuy n m c ch n t ListBox1 qua ListBox2
- n t t c các món t ListBox1 qua ListBox2
- c ch n trong ListBox2
- tc

ïđđ
- Button In th s hi n th h p tho i MessageBox v i n i dung là các món
n hi n th trong ListBox2
-
Câu 7: Vi p có giao di

txtTen

txtMatKhau
chkHienThi

Hình 3.40: Giao di i dùng

Yêu c u:
i dùng nh p tên tài kho n và m t kh u trên TextBox txtTen và txtMatkhau.
- N c ch n thì TextBox txtMatkhau s hi n
d u * v i m i ký t i dùng gõ.
- N u c ch n thì TextBox txtMatkhau s hi n th
các ký t
Sau khi nh p và m t kh i dùng nh n Button
- N t kh t hi n
MessageBox v i n
- N u tên tài kho n và m t kh u không ph t hi n
MessageBox v i n
i dùng nh
Câu 8: Vi
Yêu c u:
- Khi nh b u th n th messageBox ch a thông tin:
H tên sinh viên mã s sinh viên. Khi nh n ch n Button OK trên messageBox
thì hi n th form Máy tính. Khi nh n ch n Button Cancel trên messageBox thì
.
- X lý ON/OFF

ïđï
o nh n ch n Button ON/OFF (ho c s l n nh n ch n là ch n) thì t t
ng lên các thành ph n còn l i trên form Máy
tính.
o Nh n ch n m t l n Button ON/OFF (ho c s l n nh n ch n là l ) thì m
ng lên các thành ph n còn l i trên form Máy tính,
ng th i xu t hi n cursor nh p nháy l ph i khung hi n th s n sàng làm
toán.
- X lý khung hi n th
o Không hi n th s c gõ t bàn phím c a máy tính mà ch hi n th s khi
nh n ch n vào các Button s trên form Máy tính. Nh n ch n Button nào thì
hi n th s ng v i nhãn c a Button Button nh p
d u cách ph n th p phân c a s th gõ d ng
c s th c A và B.
- X lý tính toán + , - , x , /
o Th c hi n phép toán gi a 2 s th c A và B. S A là s nh c khi nh n
ch n Button phép toán, n u khung hi n th tr ng thì hi u s A có giá
tr 0. S B là s nh p sau khi nh n ch n Button phép toán.
- nh n ch n But xu t k t qu phép toán lên khung hi n th .
- M i l n nh n ch n xoá m t kí s , xóa t bên ph i sang.
- nh n ch n C: xoá t t c trong khung hi n th .

Hình 3.41: Giao di n Calculator

ïđî
4: U KHI N C BI T

4.1. ip, HelpProvider, ErrorProvider


4.1.1. u khi n Tooltip

Tooltip
Tooltip Tooltip
Toolbox

u khi n Label

u khi n Tooltip

M t s thu ng dùng c a Tooltip:


B ng 4.1: B ng mô t các thu c tính c a Tooltip
Thu c tính Mô t
Active Mang giá tr True ho c False, n u thi t l p True
thì Tooltip có hi u l c hi n th thông báo, n u
mang giá tr False thì Tooltip không hi n th
c thông báo.
AutomaticDelay Thi t l p th i gian xu t hi n Tooltip khi v a
u khi n, th i gian tính b ng
mili giây
AutoPopDelay Th i gian hi n th Tooltip n khi k t thúc
n u khi n,
th i gian tính b ng mili giây
IsBalloon nh ki u hi n th c a Tooltip.
N u thi t l p False ki u hi n th Tooltip:

N u thi t l p True ki u hi n thi Tooltip:

ïđí
ReshowDelay Th i gian mà Tooltip t t t
chu t ra kh u khi n, th i gian tính b ng
mili giây
ShowAlways
ToolTipIcon Bi ng xu t hi n bên c nh chu i khai báo
trong thu c tính TooltipTitle
ToolTipTitle Chu i hi n th bên c nh bi ng TooltipIcon
UseAnimation Thi t l p hi u ng c bi u di n khi
c hi n th
UseFading Thi t l p hi u ng m d c bi u di n khi
Tooltip hi n th

M ts ng dùng c a Tooltip:
B ng 4.2: B ng mô t c c a Tooltip
c Mô t
SetTooltip() Thi t l p chu i hi n th c u
khi n
GetTooltip() L y n i dung chu i hi n th trên Tooltip
Clear() Lo i b t t c u khi n
trên form

Ví d 4.1: Vi o giao di p và th c hi n yêu c u ch c

TextBox1

TextBox2

Hình 4.2: Giao di p ví d 4.1

ïđ́
Yêu c u:
- Khi rê chu t vào TextBox1: hi n th p chu i ký không d u,
không kho ng tr
- Khi rê chu t vào TextBox2: hi n th p ít nh t 6 ký t , nhi u
nh t 10 ký t
- Khi nh n th MessageBox v i n

- Khi nh
ng d n:
c 1: Thi t k giao di Tooltip t
c a s Toolbox th vào Form1

Hình 4.3: Giao di p ví d 1


c 2: Thi t l p giá tr thu c tính tính u khi n trong c a s Properties
- Form1:
Thu c tính Text
- label3:
Thu c tính Text
Thu c tính Size: 16
- label1:
Thu c tính Text
- label2:
Thu c tính Text t kh

ïđë
- button1:
Thu c tính Name: btnDangNhap
Thu c tính Text
- button2:
Thu c tính Name: btnThoat
Thu c tính Text
- toolTip1:
Thu c tính Name: ttpDangNhap
- toolTip2:
Thu c tính Name: ttpMatKhau
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnDangNhap:

privatevoid btnDangNhap_Click(object sender, EventArgs e)


{
MessageBox.Show("B p thành công");
}

- S ki n Click c a nút btnThoat:


privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

- S ki n Load c a Form1:

privatevoid Form1_Load(object sender, EventArgs e)


{
ttpDangNhap.SetToolTip(txtDangNhap,
"Nh p chu i ký không d u, không kho ng tr ng");
ttpMatKhau.SetToolTip(txtMatKhau,
"Nh p ít nh t 6 ký t , nhi u nh t 10 ký t ");
}

4.1.2. u khi n HelpProvider

u khi n HelpProvider cung c p c a s tr u khi n. V i nh ng


ng d ng có s d ng HelpProvider i dùng có th g i s tr giúp b ng cách n
phím F1. HelpProvider
Toolbox

ïđê
u khi n HelpProvider

u khi n HelpProvider

M t s thu ng dùng c a HelpProvider:


B ng 4.3: B ng mô t các thu c tính c a HelpProvider
Thu c tính Mô t
HelpNamespace Ch nh tên t p trình tr nh d ng chm
ho c html.

c bi t u khi n HelpProvider vào formthì m t s thu c


tính : HelpKeyword on helpProvider, HelpNavigator on helpProvider,
HelpStringon helpProvider và ShowHelp on helpProvider s xu t hi n trên t t c các
u khi n có trên form.
B ng 4.4: B ng mô t các thu c tính c u khi n khi thêm HelpProvider
Thu c tính Mô t
HelpKeyWord T khóa tìm ki m, t khóa này là ch m c ho c ch c
truy n vào t p tin tìm ki m. Thu c tính HelpNavigator s quy
nh t khóa này tìm ki m theo ch hay theo ch m c.
HelpNavigator Thi t l p cách th c hi n th c a t p tin tr giúp. G m các thu c

- AssociateIndex: M t p tin tr giúp và hi n th danh sách


ch m c có ký t trùng v i ký t u tiên trong thu c tính
HelpKeyword.
Ví d 4.2: t p tin tr giúp là t c
tính HelpKeyword ch a t

ïđé
- Find: Giúp hi n th n i dung tr giúp có chu i ký t
trùng v i t khóa trong thu c tính HelpKeyword.
- Index: Hi n th danh m c các ch m c trong t p tin tr
giúp.

- KeywordIndex: Hi n thi danh m c là các ch m


khóa trong thu c tính HelpKeyword
Ví d 4.3: T khóa HelpKeyword là HLOOKUP

- TableOfContents: Hi n th t t c các n i dung trong t p


tin tr giúp

- Topic: Hi n th danh m c các ch trong t p tin tr


giúp, áp d ng v i t p tin có h tr danh m c các ch .
- TopicId: Hi n th ch có mã trùng v i mã ch ch
nh, áp d ng v i t p tin có h tr danh m c các ch
và các ch .

ïđè
HelpString Hi n th chu i tr u khi n. N u thu c tính
HelpProvider c thi t l i dùng nh n
phím F1 s hi n th chu i tr giúp này
ShowHelp N u thi t l p giá tr True thì cho phép n i dung tr giúp hi n th
trên m u khi N u thi t l p giá tr False thì không
hi n th c
M ts ng dùng c a HelpProvider:
Các thu c tính HelpKeyWord, HelpNavigator, HelpString, ShowHelp có th
c thi t l p giá tr trong c a s Properties ho c có th s d
b thi t l p giá tr
B ng 4.5: B ng mô t các cc u khi n khi thêm HelpProvider
c Mô t
SetHelpKeyword Thi t l p giá tr cho thu c tính HelpKeyword
SetHelpNavigator Thi t l p giá tr cho thu c tính HelpNavigator
SetHelpString Thi t l p giá tr cho thu c tính HelpString
SetShowHelp Thi t l p giá tr cho thu c tính ShowHelp

4.1.3. u khi n ErrorProvider

i dùng bi t thông tin l i c u khi n trên


u khi n trên form l i, ErrorProvider s cung c p m t bi u
ng
thông báo l i bên c u khi . ErrorProvider
Toolbox

u khi n ErrorProvider

Hình 4.5 u khi n ErrorProvider

ïđç
M t s thu ng dùng c a ErrorProvider:
B ng 4.6: B ng mô t các thu c tính c a HelpProvider
Thu c tính Mô t
Icon Ch n bi ng th hi n l i c u khi n
BlinkRate T nh p nháy c a bi ng trong thu c
tính Icon. T tính theo mili giây
BlinkStyle Ki u nh p nháy c a bi ng. N u thi t l p
giá tr NeverBlink thì bi ng s hi n th mà
không nh p nháy.
M ts ng dùng c a ErrorProvider:
B ng 4.7: B ng mô t các c c a HelpProvider
c Mô t
u khi n>, Giúp hi n th l i và thông báo l i c u
<Thông báo l i>) khi n. Thông báo l i hi n th i d ng Tooltip
Clear() Xóa bi ng ErrorProvider c u khi n
ng trên form.
GetError() L y chu i thông báo l i c u khi n.

Ví d 4.4: Vi u Textbox
nh p tên tài kho c có kho ng tr ng; Textbox m t kh u ph i là ký t s và
tr ng; Hi n th tr u khi n Textbox tên tài kho n, c th
khi nh n F1 s hi n tr giúp t o m t kh u t website:
http://phunutoday.vn/kham-pha-cong-nghe/cac-nguyen-tac-tao-mat-khau-an-toan-
33828.html

TextBox1

TextBox2

Hình 4.6: Giao di p ví d 4.4

ïïđ
ng d n:
c 1: Thi t k giao di

Hình 4.7: Giao di p ví d 4.4


c 2: Thi t l p giá tr thu u khi n trong c a s Properties
- Form1:
Thu
- label1:
Thu p
Thu c tính Size: 14
- label2:
Thu
- label3:
Thu t kh
- button1:
Thu
Thu c tính Name: btnDangNhap
- button2:
Thu
Thu c tính Name: btnThoat
- TextBox1:
Thu c tính Name: txtTen
- TextBox2:
Thu c tính Name: txtMatKhau
Thu c tính PasswordChar: *
- errorProvider1:

ïïï
Thu c tính Name: LoiTenDN
- errorProvider2:
Thu c tính Name: LoiMatKhau
- helpProvider1:
Thu c tính Name: TroGiupMatKhau
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnThoat:
privatevoid btnThoat_Click(object sender, EventArgs e)
{
Close();
}

- S ki n Load c a Form1:

privatevoid Form1_Load(object sender, EventArgs e)


{
//TabIndex giúp thi t l p th t u khi n khi n phím
//tab
txtTen.TabIndex = 0;
txtMatKhau.TabIndex = 1;
btnDangNhap.TabIndex = 2;
btnThoat.TabIndex = 3;
TroGiupMatKhau.SetShowHelp(txtTen,true);
TroGiupMatKhau.HelpNamespace =
"http://phunutoday.vn/kham-pha-cong-nghe/cac-nguyen-tac-
tao-mat-khau-an-toan-33828.html";

- S ki n TextChanged c a TextBox txtMatKhau:

private void txtMatKhau_TextChanged(object sender, EventArgs e)


{
long so = 0;
try
{
so = Convert.ToInt64(txtMatKhau.Text);
LoiMatKhau.Clear();
}
catch (Exception ex)
{
LoiMatKhau.SetError(txtMatKhau, "Ph i nh p ký t s
tr ng");
}
}

ïïî
- S ki n TextChanged c a TextBox txtTen:

private void txtTen_TextChanged(object sender, EventArgs e)


{
if (txtTen.Text.IndexOf(' ') != -1)
LoiTenDN.SetError(txtTen, "Nh c có
kho ng tr ng");
else
LoiTenDN.Clear();
}

4.2. và Timer
4.2.1.

ProgressBar s d hi n th th i gian th c hi n c a m t công vi


ProgressBar t trong nhóm Common Controls c a c a s

u khi n ProgressBar

u khi n ProgressBar

M t s thu ng dùng c a ProgressBar:


B ng 4.8: B ng mô t các thu c tính c a ProgressBar
Thu c tính Mô t
Maximum Giá tr t a ProgressBar. Khi
ProgressBar c l
ProgressBar t giá tr Maximum.
Minimum Giá tr nh nh t c a ProgressBar. Khi
ProgressBar tr ng r ProgressBar
Minimum.
Value Gi giá tr hi n t i c a ProgressBar, giá tr này
n n Minimum và Maximum.
Style Ki u hi n th c a ProgressBar.
Step ng giá tr c
PerformStep c g i.

ïïí
M ts ng dùng c a ProgressBar:
B ng 4.9: B ng mô t các c c a ProgressBar
c Mô t
PerformStep() ProgressBar. Giá tr
c thi t l p trong thu c tính
Step.
Increment(<giá tr >)
là tham s u vào <giá tr > c c.

4.2.2. u khi n Timer

Timer
Timer

u khi n Timer

u khi n Timer

M t s thu ng dùng c a Timer:


B ng 4.10: B ng mô t các thu c tính c a Timer
Thu c tính Mô t
Interval Thi t l p giá tr là m t s nguyên. Giá tr
nguyên này là th i ng c a m t chu k (tính
b mili giây).
Enable Thi t l p giá tr True ho c False. N u là giá tr
True u khi n Timer ho ng, n u là
False u khi n Timer không ho ng.

ïḯ
M ts ng dùng c a Timer:
B ng 4.11: B ng mô t các c c a Timer
c Mô t
Start() Kích ho u khi n Timer ho
th ng v i vi c thi t l p giá thu c
tính Enable là True
Stop() D ng ho ng c u khi n Timer
th ng v i vi c thi t l p giá thu c
tính Enable là False.

M t s s ki n ng dùng c a Timer:
B ng 4.12: B ng mô t các s ki n c a Timer
S ki n Mô t
Tick S ki c g i trong m i chu k Interval

Ví d 4.5: Vi tr i dùng h c gi c nh t: ax + b
= 0. Thi t k giao di

Hình 4.10: Giao di n form gi c nh t


Yêu c u: Phát sinh ng u nhiên h s a và b c i dùng nh p
k t qu và n nút tr l i. N u tr l n MessageBox v i n
u tr l i sai thì hi n MessageBox v i n l
ý: Th hoàn thành gi n th ng v i
ProgressBar, trong kho ng th i gian h i dùng không gi c s hi n
th MessageBox v i n H t gi làm bài

ïïë
ng d n:
c 1: Thi t k giao di

textBox1

textBox2

textBox3
ProgressBar1

Hình 4.11: Giao di u form gi c nh t

c 2: Thi t l p giá tr thu c tính trong c a s u khi n


- label1:
Thu c nh t: ax + b = 0
Thu c tính Size: 14
- label2:
Thu H s
- label3:
Thu s
- label4:
Thu p nghi
- textBox1:
Thu c tính Name: txtA
Thu c tính Enable: False
- textBox2:
Thu c tính Name: txtB
Thu c tính Enable: False
- textBox3:
Thu c tính Name: txtX
- button1:
Thu c tính Name: btnKiemTra
Thu c
- button2:

ïïê
Thu c tính Name: btnThoat
Thu c tính Text: Thoát
- ProgressBar1:
Thu c tính Name: ProGressTG
Thu c tính Minimum: 0
Thu c tiính Maximum: 30000
Thu c tính Step: 1000
Thu c tính Style: Blocks
- timer1:
Thu c tính Name: ThoiGian
Thu c tính Enable: True
Thu c tính Interval: 1000
c 3: Vi t mã l u khi n
- Khai báo các bi n
private int a=0;
private int b=0;
private float x = 0;
Random rd = new Random();

- S ki n Click c a nút btnThoat:

privatevoid btnThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n Load c a Form1:

privatevoid Form1_Load(object sender, EventArgs e)


{
a = rd.Next(-10, 10);
txtA.Text = a.ToString();
b = rd.Next(-10, 10);
txtB.Text = b.ToString();
x = -b / (float)a;
}

- S ki n Tick c a Timer ThoiGian:


private void ThoiGian_Tick(object sender, EventArgs e)
{
if (ProGressTG.Value == 30000)
{
ThoiGian.Enabled = false;
MessageBox.Show("H t gi làm bài");
}
ProGressTG.PerformStep();
} ïïé
- S ki n Click c a nút btnKiemTra:

private void btnKiemtra_Click(object sender, EventArgs e)


{
float kq = float.Parse(txtX.Text);
if (Math.Abs(kq - x) < 0.01)
{
MessageBox.Show("B );
Close();
}
else
MessageBox.Show("B l i sai");
}

4.3. u khi n ListView

u khi n cho phép hi n th ng. M ng


hi n th c g c t o t l p
ListViewItem. M i Item có thu c tính Text là chu i ký t hi n th c u tiên trong
ListView, m i Item có các SubItem hi n th các c t ti p theo trong ListView. u
khi t trong Common Controls c a c a s .

u khi n ListView

.
u khi n ListView

L p trình viên có th thêm ListViewItem vào ListView b ng cách ch n thu c


tính Items trong c a Properties c

Hình 4.13: Thu c tính Items trong c a s Properties

ïïè
Sau khi ch n thu c tính Items trong c a s Properties, c a s ListViewItem
Collection Editor s hi 4.14. L p trình viên có th thêm ho c xóa
ListViewItem trong ListView b ng cách nh n nút Add ho c Remove.

c thêm

Thu c tính
ListViewItem

Thêm ListViewItem Xóa ListViewItem

Hình 4.14: C a s ListViewItem Collection Editor

Thêm các SubItem c a Item trong ListViewItem b ng cách ch n thu c tính


SubItems trong c a s ListViewItem Collection Editor 4.15.

Hình 4.15: Thu c tính SubItems trong c a s ListViewItem Collection Editor

ïïç
Sau khi ch n thu c tính SubItems trong c a s ListViewItem Collection Editor,
c a s ListViewSubItem Collection Editor 4.16 c hi n th cho phép l p
trình viên thêm ho c xóa các SubItem.
c thêm

Thu c
tính
SubItem

Thêm SubItem Xóa SubItem

Hình 4.16: C a s ListViewSubItem Collection Editor


M t s thu ng dùng c a ListView:
B ng 4.13: B ng mô t các thu c tính c a ListView
Thu c tính Mô t
View Thu c tính View nh cách hi n th các Item trong
ListView. Thu c tính View có 5 giá tr :
- Detail: M t Icon (Icon l y t ImageList) và Text c
hi n th c u tiên. Ti p theo là các SubItem c
hi n th các c t ti p theo. hi n th Item
d ng Detail thì t o thêm Column Header cho ListView:

ListView hi n th Item d ng Detail

ïîđ
- LargeIcons: M t bi ng l n bi u di n cho m i
Item cùng v i m i icon. Các bi u
ng l c l y t u khi n ImageList, và
c thi t l p trong thu c tính LargeImageList c a
ListView.
ListView hi n th Item d ng LargeIcons

- List: M i Item s c hi n th t bi ng nh
v i m t nhãn bên ph i. Các bi ng trong
ListView c s p x p theo các c t.
ListView hi n th Item d ng List

- SmallIcons: M i Item n m trong m t c t g m có bi u


ng nh cùng v i nhãn. Các bi ng l c
l y t u khi n ImageList c thi t l p trong
thu c tính SmallImageList c a ListView.
ListView hi n th Item d ng SmallIcons

ïîï
- Tiles: M i m t Item s hi n th v i bi ng có kích
c là t i m t label và các subitem s
hi n th các c t bên ph i.
ListView hi n th Item d ng Tiles

Items Tr v các Item ch a trong ListView. M t s c


và thu ng dùng c a ListView.Items:
- Count ms ng Item trong ListView
- Insert( i, <Item m i> ): Chèn thêm Item < Item m i>
vào v trí i trong ListView
- Add(<Item m i>): thêm Item <Item m i> vào cu i
ListView
- Remove(<Item c n xóa>): Xóa Item <Item c n xóa>
kh i ListView
- RemoveAt(i): Xóa Item có ch s i kh i ListView
- Contains(<Item c n tìm>): Tr v True n u tìm th y
<Item c n tìm> trong ListView, tr v False n u không
có trong ListView
- IndexOf(<Item c n tìm>): N u <Item c n tìm> có
trong ListView thì tr v ch s c a Item tìm th y trong
ListView, n u không tìm th y s tr v -1
MultiSelect True/ False: Cho phép ho c không cho phép ch n m t lúc
nhi u Item trong ListView
FullRowSelect Khi ch n dòng d li u highlighted c dòng hay ch c
ch n
GridLines N u thi t l p True s hi n th các dòng và c t d i,
thi t l p False không hi n th d i
SelectedItems Tr v t c ch n trong ListView
LargeImageIcon ng ImageList cho ListView
SmallImageIcon ng ImageList cho ListView

ïîî
FocusedItem.Index Tr v ch s c ch n trong ListView
SelectedIndices.Count Tr v s ng I c ch n trong ListView
SelectedIndices Tr v danh sách ch m c ch n.
Ví d 4.6:
myListView.SeletedIndices[0]: tr v ch m c c a Item
c ch c ch n
trong ListView

M ts ng dùng c a ListView:
B ng 4.14: B ng mô t các c c a ListView
c Mô t
Clear() Xóa t t c các Item và Column trong ListView
Sort() S p x p các Item trong ListView
GetItemAt(x,y) L y Item t i v tr to x và y (x và y có th l c thông
qua s ki n Click chu t)

M t s s ki ng dùng c a ListView:
B ng 4.15: B ng mô t các s ki n c a ListView
S ki n Mô t
SelectedIndexChanged S ki n phát sinh khi có s i v ch m c
ch n c a Item trên ListView
ItemSelectionChanged S ki n phát sinh khi có s i l a ch n m t Item
trên ListView
ItemCheck X y ra khi tr ng thái ch n c a Item i
ColumnClick S ki n phát sinh khi m t column trong ListView c
click
MouseClick S ki n phát sinh khi nh p chu t ch n m t Item trong
ListVIew

ïîí
Ví d 4.7: Thi t k giao di

Hình 4.17: Giao di n form thêm l p

Yêu c i dùng nh p xong tên l p và s n nút


chèn m t dòng vào cu i v i tên l p và s ng v a
nh p.
ng d n:
c 1: Thi t k giao di 4.18

textBox1 textBox2

listView1

Hình 4.18: Giao di u form thêm l p

c 2: Thi t l p giá tr thu u khi n


- label1:

ïî́
Thu Thêm l p h c
Thu c tính Size: 14
- label2:
Thu
- label3:
Thu c
- button1:
Thu
Thu c tính Name: btnThem
- listView1:
Thu c tính Name: myListView
Thu c tính View: Details
Thu c tính GridLines: True
- textBox1:
Thu c tính Name: txtTenLop
- textBox2:
Thu c tính Name: txtSoLuong
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnThem:

private void btnThem_Click(object sender, EventArgs e)


{
if (txtSoLuong.Text != "" && txtTenLop.Text != "" )
{
ListViewItem LVItem = new
ListViewItem(txtTenLop.Text);
ListViewItem.ListViewSubItem LVSItem = new
ListViewItem.ListViewSubItem(LVItem, txtSoLuong.Text);
LVItem.SubItems.Add(LVSItem);
myListView.Items.Add(LVItem);
}
}

- S ki n Load c a Form1:

privatevoid Form1_Load(object sender, EventArgs e)


{
myListView.Columns.Add("Tên l p", 160);
myListView.Columns.Add("S ng sinh viên", 180);
}

ïîë
4.4. u khi n TreeView

TreeView u khi hi n th danh sách i d ng phân


c p . c g i là node và c u trúc
phân c p c c bi u di n b i l p TreeNode. M i m t node trong
TreeView có th ch a các node khác. Node ch a m t node khác g i là node cha
(RootNode) c ch a g i là node con (ChildNode). Vi c s d u khi n
hi n th r t h u ich, vì trình bày theo d ng phân c p giúp vi c hi n th
c rõ ràng và có h th u khi n TreeView t trong nhóm Common
Controls c a c a s .

Hình 4.19: Bi u di c d ng ph n c p

u khi n TreeView

.
Hình 4.20 u khi n TreeView

ïîê
M t s thu ng dùng c a TreeView:
B ng 4.16: B ng mô t các thu c tính c a TreeView
Thu c tính Mô t
Node Tr v m ng thu c l p TreeNode
SelectedNode Tr v c ch n trong TreeView
ShowPlusMinus Hi n th d u + và c m i TreeNode
ShowRootLines Hi n th ng th ng n i gi a các Root Node
trong m t TreeView
ImageList Hi n th c m i node trong TreeView.
is d u khi n ImageList,
ng c u khi n ImageList
cho thu c tính ImageList c a TreeView
ImageIndex Giá tr c a thu c tính ImageIndex là ch s c a
u khi n ImageList. Khi gán ch s
cho thu c tính ImageIndex thì hình hi n th
c m i node s là hình có ch s ng.
i s d ng thu c
SelectedImageIndex Giá tr c a thu c tính SelectImageIndex là ch
s c u khi n ImageList. Khi
i dùng ch có
c tính
SelectedImageIndex ch nh
M ts ng dùng c a TreeView:
B ng 4.17: B ng mô t các c c a TreeView
c Mô t
GetNodeCount() m s node trong m t TreeView
ExpandAll() Hi n th t t c các node trên TreeView
CollapseAll() Thu g n t t c các node trên TreeView
GetNodeAt(x,y) L y m t node t i m t v trí có t (x, y) trên
màn hình.
ng s d ng s ki n MouseDown
ho c NodeMouseClick
M t s s ki n ng dùng c a TreeView:
B ng 4.18: B ng mô t các s ki n c a TreeView
S ki n Mô t
AfterCollapse Phát sinh khi thu g n m t TreeNode
AfterExpand Phát sinh khi hi n th các node trong TreeNode

ïîé
AfterSelect Phát sinh khi ch n m t TreeNode
NodeMouseClick Phát sinh khi ch n m t node

u khi hi n th các node, tuy nhiên vi c hi n th này th c


ch t là do TreeNode t o ra. làm vi c v i các node c n s d ng các thu c tính
c c a l p TreeNode.
M t s thu ng dùng c a TreeNode:
B ng 4.19: B ng mô t các thu c tính c a TreeNode
Thu c tính Mô t
Nodes Tr v t p các node
Text c/ gán chu i ký t i dùng s nhìn th y
m i node
FirstNode Tr v u tiên
LastNode Tr v node cu i cùng
NextNode Chuy n node ti p theo
PrevNode Lùi l
Parent Tr v node cha c a node hi n t i
Index Tr v ch s c a node
M ts ng dùng c a TreeNode:
B ng 4.20: B ng mô t các c c a TreeNode
c Mô t
Nodes.Add Thêm m t node
Nodes.Remove Xóa m t node
Nodes.Insert Chèn vào m c, chèn sau m t
node)
Nodes.Clear Xóa t t c các node con và node hi n t i
Ví d 4.8: Vi a vi c thêm s a xóa các node trong m t
TreeView. Giao di n thi t k .

ïîè
treeView1 textBox1

Hình 4.21: Giao di n form minh h a s d ng TreeView ví d 4.8

c 1: Thi t k giao di

Hình 4.22: Giao di u ví d 4.8

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:
Thu
- label2:
Thu
- treeView1:
Thu c tính Name: TV_Test
- textBox1:
ïîç
Thu c tính Name: txtTieuDe
- button1:
Thu Thêm node g
Thu c tính Name: btnThemGoc
- button2:
Thu iv
Thu c tính Name: btnThemCon
- button3:
Thu t c các
Thu c tính Name: btnXoaTatCa
- button4:
Thu
Thu c tính Name: btnXoaChon
- button5:
Thu
Thu c tính Name: btnThoat
- button6:
Thu
Thu c tính Name: btnMoRong
- button7:
Thu -
Thu c tính Name: btnThuNho
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnThemGoc:
private void btnThemGoc_Click(object sender, EventArgs e)
{
TV_Test.Nodes.Add(txtTieuDe.Text);
txtTieuDe.Text = "";
}

- S ki n Click c a nút btnThemCon:

private void btnThemCon_Click(object sender, EventArgs e)


{
TV_Test.SelectedNode.Nodes.Add(txtTieuDe.Text);
txtTieuDe.Text = "";
TV_Test.ExpandAll();
}

ïíđ
- S ki n Click c a nút btnXoaTaCa:

private void btnXoaTaCa_Click(object sender, EventArgs e)


{
TV_Test.Nodes.Clear();
}

- S ki n Click c a nút btnXoaChon:

private void btnXoaChon_Click(object sender, EventArgs e)


{
TV_Test.SelectedNode.Remove();
}

- S ki n Click c a nút btnMoRong:

private void btnMoRong_Click(object sender, EventArgs e)


{
TV_Test.ExpandAll();
}

- S ki n Click c a nút btnThuHep:

private void btnXoaChon_Click(object sender, EventArgs e)


{
TV_Test.CollapseAll();
}

- S ki n Click c a nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

4.5.
4.5.1.

u khi n DateTimePicker i dùng ch n ngày tháng t l ch


bi u u di n d ng ComboBox i dùng nh p
chu t vào ComboBox s s xu ng l ch bi u ng ngày tháng
bi u di n trong DateTimePicker th c ch ng thu c l p DateTime. u
khi n DateTimePicker t trong nhóm Common Controls c a c a s Toolbox
.

ïíï
u khi n DateTimePicker d ng l ch bi u

u khi n DateTimePicker

u khi n DateTimePicker trong c a s Toolbox

M t s thu ng dùng c a DateTimePicker:


B ng 4.21: B ng mô t các thu c tính c a DateTimePicker
Thu c tính Mô t
Format nh d ng ki u hi n th c a ngày thang.
ng s d ng giá tr ki u Short
Value Tr v giá tr hi n th i c u khi n
DateTimePicker
Value.Date Tr v
Value.Day Tr v ngày c a tháng
Value.Month Tr v tháng
Value.Year Tr v
Value.DateOfWeek Tr v ngày c a tu n (0 là ch nh t, 1 là th 2,
2 là th 7)
Value.DateOfYear Tr v ngày th bao nhiêu c
CustomFormat Cho phép l p trình viên t o ra m nh d ng

ïíî
khác v ngày tháng.
nh d u
Vi t Nam thì ki nh d ng ph i là
c tính format ph i thi t
l p là Cusom.

MaxDate Thi t l p ngày l n nh i dùng


ch u khi n DateTimePicker
MinDate Thi t l p ngày nh nh i dùng
ch u khi n DateTimePicker
Text Tr v ngày hi n th
M t s s ki ng dùng c a DateTimePicker:
B ng 4.22: B ng mô t các s ki n c a DateTimePicker
S ki n Mô t
ValueChanged i dùng ch n giá tr khác v i
giá tr u khi n DateTimePicker
CloseUp i dùng k t thúc vi c ch n ngày
u khi n DateTimePicker

4.5.2. Calendar

MonthCalendar u khi n hi n th l i d ng m t l ch bi u cho phép


i dùng ch t là MonthCalendar i
dùng có th ch n m t t p các ngày hay nói cách khác là m t t ng thu c
l p DateTime. u khi n MonthCalendar t trong nhóm Common Controls
c ac as

ïíí
u khi n MonthCalendar

u khi n MontCalendar trong c a s Toolbox

M t s thu ng dùng c a MonthCalendar:


B ng 4.23: B ng mô t các thu c tính c a MonthCalendar
Thu c tính Mô t
MaxDate Thi t l p ngày l n nh i
dùng ch u khi n
MonthCalendar
MinDate Thi t l p ngày nh nh i
dùng ch u khi n
MonthCalendar
SelectionRange Tr v m t dãy các ngày liên t c c
ch n b i dùng
SelectionStart Tr v u tiên trong dãy t i thu c
tính SelectionRange
SelectionEnd Tr v ngày cu i cùng trong dãy t i
thu c tính SelectionRange
AnnuallyBoldedDates Ch a m t m ng các ngày. Trong m i
, các ngày trong m ng s c bôi
MonthCalendar
BoldedDates Ch a m ng các ngày. Các ngày này s
u khi n
MonthCalendar t i nh nh.
MaxSeclectCount Thi t l p s ng ngày t i
dùng có th ch n
MonthlyBoldedDates Ch a m ng các ngày. Trong m i tháng,
các ngày trong m ng s
trên MonthCalendar

ïí́
i dùng có th ch n m MonthCalendar b ng cách nh p
chu t ch c ch n m t dãy nhi u ngày liên ti p b ng cách nh p chu t
ch u tiên và gi ng th i ch n ngày cu i cùng c a dãy. S ng
c ch n trong dãy ph i nh thi t l p trong thu c tính
MaxSeclectCount
M t s s ki ng dùng c a MonthCalendar:
B ng 4.24: B ng mô t các s ki n c a MonthCalendar
S ki n Mô t
DateChanged c phát sinh m t ngày m i ho c m t dãy các
ngày m c ch n

Ví d 4.9: Vi h a vi c hi n th l ch, thi t k giao di


hình 4.26. Yêu c u: khi nh p nút hi n th c ch n s hi n th trên
MessageBox

Hình 4.26: Giao di n n th l ch ví d 4.9

ng d n:
c 1: Thi t k giao di hình 4.27

u khi n
monthCalendar1

ïíë
Hình 4.27: Giao di u ví d 4.9

c 2: Thi t l p giá tr cho thu c tính trong c a s Properties


- button1:
Thu n th
Thu c tính Name: btnHienThi
- button2:
Thu
Thu c tính Name: btnThoat
- monthCalendar1:
Thu c tính Name: MyMCalendar
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnHienThi:

private void btnHienThi_Click(object sender, EventArgs e)


{

string strngay="";
DateTime i=new DateTime();
for ( i = MyMCalendar.SelectionStart;
i<= MyMCalendar.SelectionEnd; i=i.AddDays(1.0))
{
strngay += i.ToLongDateString() + "\n";
}
MessageBox.Show(strngay);
}

- S ki n Click c a nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

4.6.

Câu 1: Thi t k

ïíê
Hình 4.28: Giao di

Yêu c u:
- i dùng nh p giá tr trong TextBox txtIncrement; nh p giá tr trong TextBox
txtInterval.
- i dùng nh n nút Start ProgressBar1 s thu c tính Value lên
(trong kho ng t ng th i thu c gán
cho Label lbValue, m i l i giá tr b ng giá tr p trong
txtIncrement, c sau m i th c nh p trong txtInterval (/1000 giây) s
giá tr thu c tính Value lên. Khi thu c tính Value có giá tr >= Maximum thì
thu c tính Value s c gán b ng Minimum tr l i. Ngoài ra khi nh n nút Start
n h p l s chuy n sang tr ng thái ch c không cho
i dùng ch nh s a (Hình 02).
- i dùng nh n nút Stop s tr v tr u.
Câu 2: Thi t k

Hình 4.29: Giao di n chu n hóa chu i

ïíé
Yêu c u:
- Khi b u ch n th m t MessageBox v i n i dung là B n có
mu n ti p t c Load Form? , chu i hi n th trên titlebar MessageBox là H tên - s
máy c a sinh viên d thi.
o N i dùng nh n ch n No thì d ng vi c l i,
o N i dùng nh n ch n Yes thì hi n Form v i giao di
- i dùng nh p m t chu i b t k vào TextBox txtChuoi i dùng nh n
Button Chu n Hóa s nh d ng l i chu i nh p theo yêu c u sau:
o Lo i b các kho ng tr ng th a (lo i b các kho ng tr ng u và cu i chu i,
làm sao gi a các t cách nhau m t kho ng tr ng.)
o D u câu n m sát t ng k c và cách t ng k sau m t kho ng tr ng.
(X lý các d u câu sau: d u ch u ph d u hai ch
d u ch uh u ch m ph
- Chu i sau khi chu n hóa s c hi n th TextBox txtChuoi . (Xem Hình 02)
- i dùng nh n Button Th ng Kê s th ng kê t n s xu t hi n c a các t
i ra ListView lvThongKe (không phân bi t ch hoa, ch ng
khi th ng kê). (Xem Hình 02)
- i dùng nh hi

Câu 3: Thi t k

TextBox1

TextBox2

TextBox3

Hình 4.30: Giao di p thông tin sinh viên

Yêu c u:
- TextBox2 ph i nh nh d ng dd/mm/yyyy. N u nh p sai thì s
hi n thông báo l i

ïíè
Hình 4.31: Nh nh d ng ngày tháng
- TextBox3 ph i nh m trung bình là s . N u nh p sai thì s hi n thông báo
l i ps

Hình 4.42: Nh nh d ng s
Câu 4: Vi n th c trong máy tính. Giao di

Hình 4.43: Giao di n th c

ïíç
- Khi nh n th hi n th các th c m c có trong máy tính trên
TreeView.
- Khi nh
Câu 5: Vi ng h n t nh 4.44 (s d u khi n
Timer)

Hình 4.44: Giao di ng h nt

ḯđ
5: U KHI XÂY D NG MENU

5.1. ImageList

ImageList là m t ki c bi t ch a các hình sâu


c. Các u khi n khác n u có h tr dùng ImageList thì dùng
các hình trong ImageList thông qua ch m c. M t s u khi n h tr s d ng
ImageList ListView, TreeView, ToolBar, Button ImageList n m trong nhóm
Components c a c a s

u khi n
ImageList

u khi n ImageList trong c a s Toolbox

M t s thu ng dùng c a ImageList:


B ng 5.1: B ng mô t các thu c tính c a ImageList
Thu c tính Mô t
ImageSize c c a hình
TransparentColor trong su t c a màu
ColorDepth Thi t l sâu c c ch a trong
ImageList
Images T p các hình ch a trong ImageList. C a s
Images Collection Editor khi nh p chu t ch n
thu c tính Images trong c a s Properties:

ḯï
L p trình viên có th thêm ho c xóa hình trong
ImageList b ng các nút Add và Remove trong c a
s Images Collection Editor

Ví d 5.1: Thi t k giao di 2. Yêu c u: Khi ch n hình mu n


hi n th trên ComboBox thì u khi n PictureBox s hi n th
ch n.

Hình 5.2: Giao di n form hi n th hình ví d 5.1

ng d n:
c 1: Thi t k giao di 3

ḯî
comboBox1 pictureBox1

Hình 5.3: Giao di u form hi n th hình

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:
Thu c tính Text:
- comboBox1:
Thu c tính Name: cboChonHinh
- button1:
Thu c tính Text
Thu c tính Name: btnThoat
- pictureBox1: u khi hi n th hình nh trên Form
Thu c tính Name: picHinh
Thu c tính Size: 229, 181
Thu c tính BorderStyle: BorderStyle.Fixed3D
- imageList1:
Thu c tính Name: MyImgList
Thu c tính ImageSize: 229, 181
Thu c tính Images 4

ḯí
Hình 5.4: Thi t l p thu c tính Images c a ImageList1

c 3: Vi t mã l nh cho các u khi n


- S ki n Loat c a Form1:

private void Form1_Load(object sender, EventArgs e)


{
for (int i = 0; i < MyImgList.Images.Count; i++)
{
cboChonHinh.Items.Add("Hinh" + i);
}
picHinh.BorderStyle=BorderStyle.Fixed3D
}

- S ki n SelectedIndexChanged c a nút cboHienThi:

private void cboChonHinh_SelectedIndexChanged(object sender,


EventArgs e)
{
//Thu c tính Image c a PictureBox là thu c tính ch nh
//hình s c hi n th
picHinh.Image=
MyImgList.Images[cboChonHinh.SelectedIndex];
}

- S ki n Click c a nút btnThoat:

privatevoid btnThoat_Click(object sender, EventArgs e)


{
Close();
}

ḯ́
5.2. u khi n MenuStrip

u khi n MenuStrip cho phép l p trình viên xây d ng h th ng menu trên


form. Menu có th xây d ng d ng m t c p ho c nhi u c p. Ví d menu c a Notepad
5. MenuStrip cho phép xây d ng menu v u khi n:
ToolStripSeparator
ToolStripMenuItem (Menu con)
ToolStripCombobox (Combobox)
ToolStripTextbox (Textbox)

H th ng menu
c a Notepad

Hình 5.5: Menu c a trình so n th o Notepad

t trong nhóm Menus & Toolbars c a c a s


5.6.

u khi n
MenuStrip

Hình 5.6 u khi n MenuStrip trong c a s Toolbox

M t s thu ng dùng c a MenuStrip:


B ng 5.2: B ng mô t các thu c tính c a MenuStrip
Thu c tính Mô t
TextDirection Ch n hình th c trình bày menu.
- Hình th c Horizontal:

ḯë
- Hình th c Vertical 90:

- Hình th c Vertical 270:

Items Thêm các menu con. Ki u menu có th ch n m t


trong 4 d ng: MenuItem, ComboBox, Separator,
TextBox.

- D ng MenuItem (menu con):

- D ng Combobox:

- D ng TextBox:

ḯê
- Separator (G ch phân cách):

RightToLeft Mang giá tr Yes ho c No.


N u là Yes thì s trình bày menu t ph i qua trái:

N u là No thì s trình bày menu t trái qua ph i:

M t s thu c và s ki n c a menu con trên MenuStrip:


MenuStrip có 4 d ng menu con, m u có thu c
và s ki ng v i m i d ng.
- Menu con d ng MenuItem:
B ng 5.3: B ng mô t các thu c tính ng dùng c a MenuItem
Thu c tính Mô t
Checked Mang giá tr True ho c False.
- N u là True: Hi n bi ng CheckBox bên
c nh chu i Text

ḯé
- N u là False: Không bi ng CheckBox

CheckOnClick Mang giá tr True ho c False.


- N u là True: Bi ng CheckBox s xu t
hi n bên c nh chu i Text c a menu con khi
i dùng nh p chu t ch n.
- N u là False: Thao tác nh p chu t c a
i dùng s không n vi c
hi n th hay không hi n th c a bi ng
CheckBox
CheckState Cho bi t tr ng thái c a CheckBox trên menu con.
Có 3 tr ng thái: UnChecked, Checked,
Indeteminate.
ng thái Indeterminate ch có hi u l c khi
thu c tính Checked là True.
DisplayStyle Hình th c trình bày c a menu con. Có 4 ki u hi n
th :
- None: Không hi n th gì trên menu con
- Text: Cho phép hi n th chu i mô t
- Image: Cho phép hi n th hình ho c bi u
ng bên c nh Text.
- ImageAndText: Cho phép hi n th hình
(bi ng) và chu i mô t .
Image Hình nh xu t hi n bên c nh chu i Text

ImageScaling Ki u trình bày c a hình trong thu c tính Image. Có


th thi t l p m t trong hai giá tr :
- None: Hi n th ng
- SizeToFit: Hi n th c a hình
ho c bi ng
ShortcutKeyDisplayStri Chu i trình bày ng v i phím t t mô t cho menu
ng

ḯè
ShorcutKeys T h p phím t t ng v i menu

ShowShortcutKeys Mang giá tr True ho c False:


- N u là True: Cho phép hi n th giá tr trong
thu c tính ShortcutKeyDisplayString.
- N u là False: giá tr trong thu c tính
ShortcutKeyDisplayString s không hi n
th .
Text Chu i ký t hi n th trên menu
TooltipText Chu i ký t hi n th khi rê chu t vào menu

B ng 5.4: B ng mô t các s ki ng dùng c a MenuItem


Thu c tính Mô t
CheckedChange Phát sinh khi tr ng thái (CheckState) c a
CheckBox i
Click i dùng nh p chu t vào menu

- Menu con d ng Separator: Menu d n ch là m ng k


i nhau, giúp h th ng menu hi n th m t

- Menu con d ng ComboBox: Các thu c và s ki n gi ng


v u khi n ComboxBox t i m c 3.4 c
- Menu con d ng TextBox: Các thu c và s ki n gi ng v i
u khi n TextBox t i m c 3.3 c

ḯç
Ví d 5.2: Thi t k giao di n th th

lblHienThi

Hình 5.7: Giao di n th th i gian ví d 5.2

Yêu c u:
Menu Ch : Ch c m c Thoát d ng i dùng nh n chu t trái
vào Thoát ho c nh n t h p phím Ctrl + T s
Menu N i dung hi n th : D ng ComboBox. ComboBox ch a hai m c ch n:
Hi n th th i gian: Giúp hi n th gi phút giây trên label lblHienThi
Hi n th ngày tháng: Giúp hi n th label lblHienThi
ng d n:
c 1: Thi t k giao di u khi n t c a s Toolbox

Hình 5.8: Giao di u for, hi n th th i gian ví d 5.2

c 2: Thi t l p các giá tr u khi n trong c a s Properties


- form1:
Thu c tính Text
- label1:
Thu c tính Text
Thu c tính Size: 14

ïëđ
Thu c tính Name: lblHienThi
- timer:
Thu c tính Name: MyTime
Thu c tính Enable: True
Thu c tính Interval: 1000
- menuStrip1:
Thu c tính Name: MyMenu
Thu c tính DropDownItems c a MyMenu: Ch n thu c tính DropDownItems
trong c a s Properties s hi n th c a s Items Collection Editor c a
MyMenu. T i c a s này thêm hai menu có tên: itmChucNang (d ng
MenuItem) và cboChucNang (d ng ComboBox)

Hình 5.9: C a s Items Collection Editor

o Nh n chu t ch n itmChucNang thi t l p thu c tính: Trên các thu c


tính c a itmChucNang, ch n thu c tính DropDownItems s hi n th c a
s Items Collection Editor c a itmChucNang . Trên c a s này thêm m t
menu d ng MenuItem có tên itmThoat
Thi t l p thu c tính ShortCutKeys c a itmThoat: Ctrl + T
Thi t l p thu c tính ShortCutKeyDisplayString c a itmThoat: Ctrl + T
Thi t l p thu c tính ShowShortCutKeys c a itmThoat: True
o Nh n chu t cboChucNang thi t l p thu c tính: Trên các thu c tính c a
cboChucNang, ch n thu c tính Items và thêm hai m c ch n th
th n th

ïëï
Hình 5.10: C a s Items Collection Editor c a itmChucNang

Hình 5.11: C a s String Collection Editor c a cboChucNang

c 3: Vi t mã l u khi n
- Khai báo bi n:

int chon=3;
DateTime dt = new DateTime();

- S ki n Tick c a MyTimer:

private void MyTimer_Tick(object sender, EventArgs e)


{
dt = DateTime.Now;
if (chon == 0)
{
lblHienThi.Text = dt.Hour + ":" + dt.Minute + ":"
+ dt.Second;
}
}

ïëî
- S ki n Click c a itmThoat:

private void itmThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n SelectedIndexChanged c a cboChucNang:

private void cboChucNang_SelectedIndexChanged(object sender,


EventArgs e)
{
chon = cboChucNang.SelectedIndex;
dt = DateTime.Now;
if (chon == 1)
{
lblHienThi.Text = dt.Date.ToLongDateString();
}
}

5.3. u khi n ContextMenuStrip

u khi n ContextMenuStrip thi t k menu Popup (menu ng c nh).


Menu Popup là menu d i dùng nh n chu t ph i vào màn
hình desktop thì hi n lên m t menu. Trong l p trình ng d ng Windows Form, menu
Popup s xu t hi i nh n chu t ph u khi form, label,
button, textbox, ... u khi n ContextMenuStrip n m trong nhóm Menus & Toolbars
c ac as 12

u khi n
ContextMenuStrip

Hình 5.12 u khi n ContextMenuStrip trong c a s Toolbox

Ph n l u khi n trong c a s u h tr thu c tính


ContextMenuStrip n menu Popup xu t hi u khi n nào thì ch c n
khai báo thu c tính ContextMenuStrip c u khi u khi n
ConTextMenuStrip.

ïëí
Gi ng nh u khi u khi
l p trình viên xây d ng menu theo 4 d ng: MenuItem, ComboBox, TextBox, Separator.
Các thu c và s ki n c a 4 d u khi n
ContextMenuStrip u khi n MenuStrip (xem m c 5.2 c a

M t s thu ng dùng c a ContextMenuStrip:


B ng 5.5: B ng mô t các thu c tính ng dùng c a
ContextMenuStrip
Thu c tính Mô t
Items Thêm các menu con, ki u menu con thu c m t trong b n
d ng: Separator, MenuItem, ComboBox, TextBox. L p trình
viên có th thêm các menu trong c a s Items Collection
Edition . C a s Items Collection Edition có th m lên b ng
cách nh p chu t trái vào bi ng c a thu c tính Items
trong c a s Properties.

RightToLeft Mang giá tr True: Trình bày menu t ph i qua trái


Mang giá tr False: Trình bày menu t trái qua ph i

Ví d 5.3: Vi t hi n th th i gian và t
5.13.

ïë́
Hình 5.13: Giao di hi n thì th i gian ví d 5.3

Yêu c u:
Khi ch n m n th th i gian: S hi n th gi phút giây trên label lblNoiDung.
Khi ch n m n th hi n th
lblNoiDung.
Khi ch n m c Thoát ho c nh n t h p phím Ctrl + T s ng trình.
ng d n:
c 1: Thi t k giao di uc

Hình 5.14: Giao di n th th i gian ví d 5.3

c 2: Thi t l p giá tr u khi n t c a s Properties


- form1:
Thu c tính Text ContextMenuStrip
- label1:
Thu c tính Text -----N i dung------
Thu c tính Name: lblNoiDung
Thu c tính Size: 14
- timer1:
ïëë
Thu c tính Name: MyTimer
- contextMenuStrip1:
Thu c tính Name: MyContextMenu
Thu c tính Items: Thêm ba menu d ng MenuItem: menuDisplatTime,
menuDisplayDate và menuExit trong c a s
5.15.
Thi t l p thu c tính ShortCutKeys c a menuExit: Ctrl + T
Thi t l p thu c tính ShortCutKeyDisplayString c a menuExit: Ctrl + T
Thi t l p thu c tính ShowShortCutKeys c a menuExit: True

Hình 5.15: C a s Items Collection Editor

c 3: Vi t mã l u khi n
- Khai báo bi n:

int chon = 3;
DateTime dt = new DateTime();

- S ki n Click c a menuDisplayTime:

private void menuDisplayTime_Click(object sender, EventArgs e)


{
chon = 0;
}

- S ki n Click c a menuDisplayDate:
private void menuDisplayDate_Click(object sender, EventArgs e)
{
chon = 1;
lblHienThi.Text = dt.Date.ToLongDateString();
}
ïëê
- S ki n Click c a menuExit:

private void menuDisplayTime_Click(object sender, EventArgs e)


{
chon = 0;
}

- S ki n Tick c a MyTimer:

private void MyTimer_Tick(object sender, EventArgs e)


{
dt = DateTime.Now;
if (chon == 0)
{
lblHienThi.Text = dt.Hour + ":" + dt.Minute + ":"
+ dt.Second;
}
}

5.4. u khi n NotifyIcon

u khi n NotifyIcon cho phép l p trình viên trình bày bi ng trên System
Tray c a màn hình Desktop . V i vi c s d u khi n NotifyIcon,
i dùng di chuy n chu n bi ng thì chu i khai báo trong thu c tính
Text c u khi n NotifiIcon s Tooltip. u khi n NotifyIcon n m
trong nhóm Common Controls c a c a s 17

System Tray

Hình 5.16: System Tray trên màn hình Desktop

u khi n
NotifyIcon

Hình 5.17 u khi n NotifyIcon

ïëé
M t s thu ng dùng c a NotifyIcon:
B ng 5.6: B ng mô t các thu c tính ng dùng c a NotifyIcon
Thu c tính Mô t
Icon Bi ng s xu t h i khay h th ng khi
form hi n th
Text Chu i xu t hi n khi di chuy n chu t vào bi u
i khay h th ng
ContextMenuStrip Menu Popup s xu t hi i dùng nh n
chu t ph i vào bi i khay h th ng
Visible Mang giá tr True: Hi n th bi u ng trên System
Tray
Mang giá tr False: Không hi n th bi ng trên
System Tray
hi n th m t NotifyIcon trên System Tray, l p trình viên b t bu c ph i thi t
l p m t bi c tính Icon và thu c tính Visible ph i mang giá tr
True.
M t s s ki ng dùng c a NotifyIcon:
B ng 5.7: B ng mô t các thu c tính ng dùng c a NotifyIcon
S ki n Mô t
MouseClick i dùng nh n chu t ch n vào bi u
c thi t l p trong thu c tính Icon
ng các bi c s d ng b ng s ki n
MouseClick c a chu t. V i s ki n MouseClick khi nh n chu t ph i s hi n th m t
ContextMenuStrip, khi nh n chu t trái s m c liên k t v i
NotifyIcon.
Ví d 5.4: Vi

Hình 5.18: Giao di 5.4

Yêu c u:
Khi ch hi n th m t bi ng trên System Tray.
Khi nh p chu t ph i vào bi ng s hi n th m t ContextMenuStrip

ïëè
Hình 5.19: ContexMenuStrip trên bi ng c a NotifyIcon

Khi nh p chu t trái vào bi ng s hi n th MessageBox v i chu i hi n th : Khoa


Công ngh thông tin i h c L c H ng. Xin chào các b n
ng d n:
c 1: Thi t k giao di

Hình 5.20: Giao di u ví d 5.4

c 2: Thi t l p giá tr thu u khi n c a s Properties


- form1:
Thu c tính Text
Thu c tính StartPosition: FormStartPosition.CenterScreen;
- label1:
Thu c tính Text thông tin
Thu c tính Size: 14
- conTextMenuStrip1:
Thu c tính Name: MyContextMenuStrip
Thu c tính Items: Thêm m t menu d ng MenuItem trong c a s Items

ïëç
Hình 5.21: C a s Item Collection Editor ví d 5.4

- notifyIcon1: Thi t l p giá tr thu c tính c a NotifyIcon

Hình 5.22: Thu c tính c a NotifyIcon

c 3: Vi t mã l u khi n
- S ki n Click c a thoátToolStripMenuItem:

private void thoátToolStripMenuItem_Click(object sender,


EventArgs e)
{
Close();
}

ïêđ
- S ki n MouseClick c a MyNotifyIcon:
private void MyNotifyIcon_MouseClick(object sender,
MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
MessageBox.Show("Khoa Công ngh ng
i h c L c H ng\nXin chào các b n");
}

5.5. u khi n ToolStrip

ToolStrip là u khi n cho phép t o thanh công c trên form. ng


trong các ng d ng Windows Forms, ToolStrip ng c b trí phía i u
khi n MenuStrip .

Hình 5.23: V trí c u khi n ToolStrip trong Visual Studio 2010

u khi n ToolStrip n m trong nhóm Menus & Toolbars c a c a s Toolbox


4.

u khi n
ToolStrip

Hình 5.24: ToolStrip trong c a s Toolbox

M t s thu ng dùng c a ToolStrip:


B ng 5.8: B ng mô t các thu c tính ng dùng c a ToolStrip
Thu c tính Mô t
Item Qu n lý vi u khi n trên ToolStip
AllowItemReoder Mang giá tr True ho c False.
- N u là True: cho i dùng s p x p
l i v trí c u khi n trên ToolStrip,
i v trí b ng cách gi phím Alt và
nh n chu u khi nv
trí m i trên ToolStrip.
- N u là False: Các v trí c u khi n trên

ïêï
ToolStrip c nh không th t i b i
i dùng.
AllowMerge i dùng gi phím Alt và gi chu t trái
u khi n trên ToolStrip này và kéo th vào
m t ToolStrip khác.
c tính này ch có hi u l c khi thu c tính
AllowItemReoder là True
CanOverflow Mang hai giá tr True và False.
- N u là giá tr True: Khi s u khi n
t ra kh i ph m vi c
thì nh u khi n này s c thu nh trong

bi ng góc ph i c a ToolStrip.

- N u là giá tr False: Nh u khi n n m


ngoài ph c s c thu

nh trong bi ng góc ph i c a

ToolStrip. Bi ng s không xu t hi n trên


ToolStrip.

Dock trí hi n th c a ToolStrip trên form.


Top

Left Fill Right

Bottom

LayoutStyle Ki u trình bày c a ToolStrip

ïêî
ShowItemTooltips Mang hai giá tr True ho c False.
- N u là True: Cho phép hi n th chu i khai
báo trong thu c tính ToolTipText c a m i
u khi n ch a trong ToolStrip.
- N u là False: Chu i khai báo trong
ToolTipText c u khi n ch a trong
c hi n th .

5.5.1. u khi n ch a trong ToolStrip

c bi t c u khi n ToolStrip cc ut i d ng container cho


phép ch u khi

Hình 5.25 u khi n ToolStrip ch a

u khi n có th t o trên ToolStrip bao g m:


- ToolStripDropDownButton u khi n ToolStripDropDownButton cho
phép l p trình viên t o m t menu d ng s xu ng và s hi n th i
dùng nh p chu c t u khi n
ToolStripDropDownButton là d ng MenuItem.
- ToolStripButton u khi ng t u khi n Button u khi n
này xu t hi n trên ToolStrip d ng m t bi ng (Icon). S ki ng
dùng c a ToolStripButton là s ki n Click
- ToolStripLabel u khi n có ch u khi n
Label u khi n LinkLabel. Khi thu c tính IsLink c a ToolStripLabel là
u khi n ToolStripLabel tr thành LinkLabel, khi thu c tính
IsLink là false ToolStripLabel u khi n Label ng.
- ToolStripProgressBar u khi n ProgressBar và n m trên
ToolStrip.

ïêí
- ToolStripSeparator u khi hi n th d u g ch phân cách,
u khi n trong ToolStrip v hi n th m t
cách d nhìn
- ToolStripComboBox: u khi n ToolStripComboBox có các thu c tính,
c và s ki u khi n ComboBox c
t trên MenuStrip. D ng hi n th c a ToolStripComboBox
d Simple, DropDown ho c DropDownList.
- ToolStripTextBox u khi n TextBox t trên
MenuStrip i dùng có th gõ chu i ký t i
ký t c truy n vào cho thu c tính ToolStripTextBox.Text m
khác bi t chính c a ToolStripTextBox và TextBox u khi n
ToolStripTextBox không có thu c tính MultiLine n c a
ToolStripTextBox ch có m t dòng.
- ToolStripSplitButton u khi n k t h p ch a ToolStripButton
và ToolStripDropDownButton u khi n này hi n th m i
dùng có th nh th c thi mã l n th
m t menu theo d ng s xu a ToolStripDropDownButton. L p
trình viên có th s d ng s ki n ToolStripSplitButton vi t mã
l nh khi nh n nút b m ho c có th vi t mã l nh cho m i s ki n
ToolStripMenuItem.Click
Hi n th u khi n c a ToolStrip
i u khi n ToolStripButton, ToolStripSplitButton và
ToolStripDropDownButton có th hi n th hình, chu i mô t ho c c hai. B ng 5.9 mô
t các thu ng s d bi u di n hình và chu i mô t u khi n
ToolStripButton, ToolStripSplitButton, ToolStripDropDownButton c a ToolStrip
B ng 5.9: B ng mô t thu c tính c u khi n trên ToolStrip
Thu c tính Mô t
DisplayStyle G m các giá tr : None, Text, Image, ImageAndText
- None: Không hi n th u
khi n.
- Text: Ch hi n th chu i mô t c thi t l p
trong thu u khi n (không
hi n th hình).
- Image: Ch hi n th c thi t l p trong
thu u khi n (không hi n
th chu i mô t )
- ImageAndText: Hi n th c hình và chu i mô t

ïế
u khi n
Image Ch nh hình s hi n th u khi n
TextImageRelation Ki u hi n th c a Text và Image u khi n:
Overlay, ImageAboveText, TextAboveImage,
TextBeforeImage, ImageBeforeText
- ImageBeforeText:

- TextBeforeImage:

- ImageAboveText:

- TextAboveImage:

- Overlay:

ImageScaling c c a hình s v a v u khi n hay


không.
- None: Hình s hi n th c th t
- SizeToFit: Hình s hi n th v c b ng
v cc u khi n
ImageTransparentColor Làm trong su t màu c a hình

5.5.2. ToolStripContainer

ToolstripContainer là d u khi n thi t k , ch u khi n ToolStrip


c bi t là khi s d ng ToolStripContainer i dùng có th kéo và
di chuy n các ToolStrip trên các c nh c a form (n u trên c nh form có s d ng

ïêë
ToolStripContainer). ToolStripContainer n m trong nhóm Menus & Toobars c a c a
s T

u khi n
ToolStripContainer

u khi n ToolStripContainer

ToolStripContainer c c u t o b i 5 panel: 4 panel d ng ToolStripPanel c


b trên n m trên 4 c nh c a form và 1 panel d ng ContenPanel n m gi a form. Thông
ng khi s d ng ToolStripContainer trên form thì thu c tính Dock c u khi n
c thi t l p là Fill 7.

Hình 5.27: ToolStripContainer có thu c tính Dock thi t l p giá tr Fill

L p trình viên có th lo i b các panel d ng ToolStripPanel n u không mu n


panel b trí trên m t c a form. Ví d n u ch mu n s d ng
ToolStripContainer không có hai panel bên c nh ph i và c nh trái c a form có th thi t
l 8.

Hình 5.28: ToolStripContainer không có hai panel bên c nh trái và c nh ph i


c a form

ïêê
Có th lo i b 8 ho c thi t l p giá tr các thu c tính:
LeftToolStripPanelVisible, RightToolStripPanelVisible, TopToolStripPanelVisible,
TopToolStripPanelVisible
M t s thu ng dùng c a ToolStripContainer:
B ng 5.10: B ng mô t thu c tính c a ToolStripContainer
Thu c tính Mô t
Dock Ki u hi n th c a ToolStripContainer.
- Fill: Hi n th b ng v i kích thu c form
- Top: Hi n th n m sát c nh trên c a form
- Bottom: Hi n th n m sát c i c a
form
- Left: Hi n th sát c nh trái c a form
- Right: Hi n th sát c nh ph i c a form
ng thì thu c tính Dock c thi t
l p giá tr Fill
LeftToolStripPanelVisible Mang giá tr True ho c False.
- N u là True: Hi n th panel bên c nh trái
c a form
- N u là False: Không hi n th panel bên
c nh trái c a form
RightToolStripPanelVisible Mang giá tr True ho c False.
- N u là True: Hi n th panel bên c nh ph i
c a form
- N u là False: Không hi n th panel bên
c nh ph i c a form
TopToolStripPanelVisible Mang giá tr True ho c False.
- N u là True: Hi n th panel c nh trên c a
form
- N u là False: Không hi n th panel c nh
trên c a form
BottomToolStripPanelVisible Mang giá tr True ho c False.
- N u là True: Hi n th panel c ic a
form
- N u là False: Không hi n th panel c nh
i c a form

ïêé
Ví d 5.5: Thi t k 9.
Yêu c u sau khi nh a ch website trong TextBox c a ToolStrip và nh n Enter thì s
hi n th a ch v a nh p.

Hình 5.29: Giao di n form hi n th Website ví d 5.5

ng d n:
c 1: Thi t k giao di
- Kéo ToolStrip t c a s u khi n
30:

ToolStripLabel ToolStripTextbox

Hình 5.30: Giao di n form sau khi thêm ToolStrip

ïêè
- u khi n WebBrowser t c a s 1.
u khi n cho phép hi n th website trên form.

webBrowser1

Hình 5.31: Giao di u khi n WebBrowser

c 2: Thi t l p các giá tr cho thu c tính c u khi n trong c a s


Properties
- form1:
Thu
Thu c tính Size: 405, 324
- toolStrip1:
Thu c tính AutoSize: False
Thu c tính Size: 389, 37
Thu c tính BackColor: Color.DodgerBlue
- toolStripLabel1:
Thu c a ch
- toolStripTextbox:
Thu c tính Name: txtAddress
Thu c tính AutoSize: False
Thu c tính Size: 200, 25
- webBrowser1:
Thu c tính Name: MyWebSite
c 3: Vi t mã l u khi n trên form

ïêç
- S ki n KeyDown c a txtAddress:

private void txtAddress_KeyDown(object sender, KeyEventArgs e)


{
if (e.KeyCode == Keys.Enter)
MyWebsite.Navigate(txtAddress.Text);
}

5.6. u khi n StatusStrip

StatusTrip s d hi n th thông tin tr ng thái c a ng d ng, StatusStrip n m


v i cùng c a form. StatusStrip n m trong nhóm Menus & Toolbars c a c a s
5.32.

u khi n
StatusStrip

Hình 5.32: StatusStrip trong c a s Toolbox

ToolStrip, StatusStrip ch u khi n khác


hình 5.33.

u khi n có th ch a trên StatusStrip


u khi n: StatusLabel, SplitButton, DropDownButton hay ProgressBar
trên StatusStrip có ch ToolStrip. u khi n trên,
u khi ng s d ng trên StatusStrip nh t là StatusLabel
M t s thu ng dùng c a StatusStrip:

ïéđ
B ng 5.11: B ng mô t thu c tính c a StatusStrip
Thu c tính Mô t
Item Qu n lý vi u khi n trên
StatusStrip StatusLabel, SplitButton,
DopDownButton, ProgressBar.
TextDirection Chi u hi n th c a chu i mô t trong thu ct tính
Text.
LayoutStyle V trí hi n th c a StatusStrip.

Ví d 5.6: Vi n th th i gian trên StatusStrip c

Hình 5.34: Giao di n th th i gian trên StatusStrip ví d 5.6

ng d n:
c 1: Thi t k giao di u khi n StatusStrip và Timer t
c as u khi n StatusLabel trên StatusStrip

Hình 5.35: Giao di n form sau khi thêm StatusStrip


c 2: Thi t l p giá tr thu u khi n trong c a s Properties
- form1:
Thu
Thu c tính Size: 405, 138
- timer1:
Thu c tính Name: MyTimer
Thu c tính Interval: 1000
Thu c tính Enable: True

ïéï
- toolStripStatusLabel1:
Thu c tính Name: MyStatusLabel
c 3: Vi t mã l u khi n
- S ki n Tick c a MyTimer:

private void MyTimer_Tick(object sender, EventArgs e)


{
MyStatusLabel.Text = DateTime.Now.ToString("hh:mm:ss");
}

5.7. Bài t p cu

Câu 1: Vi n th n có giao di i các yêu


c u sau:
- Trên Form có m t TextBox.
- Menu File có ch a m
- Menu Clock có ch a m c:
o Date: cho xu t hi n ngày hi n t i trong TextBox.
o Time: cho hi n gi hi n t i trong TextBox.
- Menu Format có ch a m c:
o Font: ch n font cho TextBox.
o Color: ch n trong TextBox.
o Align có ch a các m c:
o Left : canh l trái cho TextBox.
o Right: canh l ph i cho TextBox.
o Center: canh gi a cho TextBox.

Hình 5.36: Giao di n th n

ïéî
Câu 2: Vi t g m các bài t p có giao di n

Hình 5.37: Giao di n form các bài t p

Yêu c u:
Khi nh n F5 s c form hi n th p chu t ch n Menu s c các
MenuItem hi n th
- Khi ch n MenuItem Bài 01 s hi n th giao di

Hình 5.38: Giao di n bài t p 01

- i dùng nh p H tên, Ch n l p, nh p h c b ng.

ïéí
- Khi nh n nút Thêm thì ki c nh p (H tên, H c
b ng) và ch n (L i dùng nh p, ch n
l c l i thì thêm các thông tin vào ListView lvDanhSach
- Khi nh sinh viên c p h c b ng vào m t t p tin
n (*.txt) v i d 5.39.

Hình 5.39: Giao di n t n khi nh

- Khi ch hi n th giao di
Yêu c u:
- i dùng ch n s thích và màu thích c a mình.
- Khi nh n nút S Thích C a B n thì xu t MesageBox các s c ch n
.
- Khi nh n nút Màu B n Thích thì xu c ch n
5.42.

Hình 5.40: Giao di n bài t p 02

ïé́
Hình 5.41: MessageBox s thích Hình 5.42: MessageBox n

- Khi ch hi n th giao di
Yêu c u:
- i dùng ch n giá tr trong DateTimePicker thì hi n th các giá tr
i.
- i dùng nh n LinkLabel s m ng d ng.

Hình 5.43: Giao di n bài t p 03

- Khi ch hi n th giao di

Hình 5.44: Giao di n bài t p 04


- i dùng s d ng chu v trên form

ïéë
6: U KHI N CH U KHI N KHÁC

6.1. u khi n GroupBox

GroupBox là d u khi n ch a, có th ch u khi n khác hi n th trên


form, giúp cho vi c thi t k giao di n c a form d nhìn và khoa h . GroupBox
không h tr thanh t (ScrollBar). GroupBox có th hi n th này
c thi t l p trong thu c tính Text. N u không mu n hi n th , l p trình viên có
th thi t l p chu i r ng trong thu c tính Text. u khi n GroupBox t trong
nhóm Containers c a c a s

u khi n GroupBox trong c a s Toolbox

ng GroupBox s d u khi n RadioButton (xem m c


3.5.2 c
M t s thu ng dùng c a GroupBox:
B ng 6.1: B ng mô t các thu c tính c a GroupBox
Thu c tính Mô t
Name t tên cho GroupBox
Text Chu i hi n th
Font Thi t l p ki u ch c ch , ..
ForeColor Thi t l p màu ch hi n th
BackColor Thi t l p màu n n c a GroupBox
Visible Mang giá tr True ho c False.
- N u là True: Hi n th GroupBox
- N u là False: Không hi n th GroupBox
AutoSize Mang giá tr True ho c False.

ïéê
- N u là True: GroupBox t i
c có th hi n th h u
khi n ch a bên trong
- N u là False: GroupBox có kích c
p trình viên thi t l p.
AutoSizeMode nh cách th c u khi i kích
c.
- GrowAndShrink: GroupBox có th co và
giãn
- GrowOnly: M nh, ch giãn l n
Khi thi t l p giá tr thu c tính cho GroupBox trong b ng 6.1, thì nh u
khi u n có
nh ng giá tr thu a GroupBox.
Ví d 6.1: Vi nh d ng chu n, thi t k giao di

Hình 6.2: Giao di n forn nh d ng chu i ví d 6.1


Yêu c i dùng nh p chu nh
d hi n th chu n v a nh p. Khi nh p chu t ch n các Radio trong
u hi n th nh d ng s nh
d ng v i l a ch n c i dùng.
c 1: Thi t k giao di u khi n: Label, GroupBox,
RadioButton, TextBox t c a s

ïéé
textBox1

Hình 6.3: Giao di u khi n vào form

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:
Thu c tính Text nh d ng chu
Thu c tính Size: 14
Thu c tính FontStyle: Bold
- label2:
Thu p chu i mu nh d
- label3:
Thu c tính nh d
Thu c tính Name: lblChuoiDinhDang
- textBox1:
Thu c tính Name: txtNhapChuoi
- groupBox1:
Thu
- groupBox2:
Thu u hi n th
- groupBox3:
Thu nh d
- radioButton1:
Thu c tính Name: radXanh
- radioButton2:
Thu c tính Name: radDo
- radioButton3:

ïéè
Thu c tính Name: radDen
- radioButton4:
Thu c tính Name: radInDam
- radioButton5:
Thu c tính Name: radInNghieng
- radioButton6:
Thu c tính Name: radGachChan
- button1:
Thu c tính Name: btnThoat
Thu c
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnThoat:

privatevoid btnThoat_Click(object sender, EventArgs e)


{
Close();
}
- S ki n TextChanged c a txtNhapChuoi:

private void txtNhapChuoi_TextChanged(object sender, EventArgs


e)
{
lblChuoiDinhDang.Text = txtNhapChuoi.Text;
}

- S ki n CheckedChanged c a radXanh:

private void radXanh_CheckedChanged(object sender, EventArgs


e)
{
if (radXanh.Checked == true)
{
lblChuoiDinhDang.ForeColor = Color.Blue;
}
}

- S ki n CheckedChanged c a radDo:

private void radDo_CheckedChanged(object sender, EventArgs e)


{
if (radDo.Checked == true)
{
lblChuoiDinhDang.ForeColor = Color.Red;
}
}

ïéç
- S ki n CheckedChanged c a radDen:

private void radDen_CheckedChanged(object sender, EventArgs e)


{
if (radDen.Checked == true)
{
lblChuoiDinhDang.ForeColor = Color.Black;
}
}

- S ki n CheckedChanged c a radInDam:

private void radInDam_CheckedChanged(object sender, EventArgs


e)
{
if (radInDam.Checked == true)
{
lblChuoiDinhDang.Font = new
System.Drawing.Font("Microsoft Sans Serif", 12F,
System.Drawing.FontStyle.Bold);

}
}

- S ki n CheckedChanged c a radInNghieng:

private void radInNghieng_CheckedChanged(object sender,


EventArgs e)
{
if (radInNghieng.Checked == true)
{
lblChuoiDinhDang.Font = new
System.Drawing.Font("Microsoft Sans Serif", 12F,
System.Drawing.FontStyle.Italic);

}
}

- S ki n CheckedChanged c a radGachChan:

private void radGachChan_CheckedChanged(object sender,


EventArgs e)
{
if (radGachChan.Checked == true)
{
lblChuoiDinhDang.Font = new
System.Drawing.Font("Microsoft Sans Serif", 12F,
System.Drawing.FontStyle.Underline);

}
}

ïèđ
6.2. u khi n Panel

u khi ch u khi n khác.


Panel có các thu ng
vi
m khác bi t c a Panel v u khi mô
t (không có thu t ScrollBar ngang và ScollBar d c (có
thu c tính AutoScroll).
u khi t trong nhóm Containers c a c a s

Hình 6.4: u khi n Panel trong c a s Toolbox

M t s thu ng dùng c a Panel:


B ng 6.2: B ng mô t các thu c tính c a Panel
Thu c tính Mô t
AutoScroll Mang giá tr True ho c False.
- N u là True: Panel t ng xu t hi n
c Panel không
th hi n th h u khi n ch a bên
trong
- N u là False: Panel s không hi n th
t
BorderStyle Ki ng vi n c a Panel khi hi n th . Có 3
giá tr : None, FixedSingle và Fixed3D
- None: Không hi n th ng vi n
- FixedSingle:Quanh Panel s hi n th m t
ng vi
- Fixed3D: Hi n th ng vi n c a Panel
d ng 3 chi u.

ïèï
6.3. u khi n FlowLayoutPanel

FlowLayoutPanel là l p con c a u khi n Panel ch u


khi Panel. M a FlowLayoutPanel là giúp b u
khi n trên form m t cách có t ch c và khoa h c. Khi thêm m u khi
FlowLayoutPanel thì FlowLayoutPanel s t ng s p x u khi t bên
trong theo quy t ng th cc u khi n
bên trong cho phù h p v c c a FlowLayoutPanel. Vì v y có th u
khi n FLowLayoutPanel u khi n h tr tuy t v i trong vi c thi t k giao di n
i dùng. u khi n FlowLayoutPanel n m trong nhóm Containers c a c a s

u khi n FlowLayoutPanel trên c a s Toolbox

u khi n FlowLayoutPanel tr d t (ScrollBar


Panel, khi thu c tính AutoScroll c thi t l p là T n
khi c ch c FlowLayoutPanel, thì FlowLayoutPanel s
hi n th t.
Vi c b u khi n khi thêm vào FlowLayoutPanel nào là do
thu c tính FlowDirection nh. Thu c tính tính mang 4 giá tr u
khi n l ng: t trái qua ph i (LeftToRight), t ph i qua trái
(RightToLeft), t trên xu ng (TopDown) và t i lên (BottomUp). u khi n
t ngo i ph m vi c a FlowLayoutPanel, n u mu u
khi n t ng b trí xu ng dòng m i ho c sang m t c t m i 6, hình
6.7, hình 6.8 và hình 6.9, thì c n ph i thi t l p thu c tính WrapContents là True. Còn
n u thu c tính WrapContents là False thì FLowLayoutPanel s hi n th t
(thu c tính AutoScroll hi n th u khi n n m ngoài ph m vi.
Thu c tính FlowDirection là LeftToRight:

ïèî
Hình 6.6: B u khi n t trái sang ph i v i WrapContents là True

Thu c tính FlowDirection là RightToLeft:

Hình 6.7: B u khi n t ph i sang trái v i WrapContents là True

Thu c tính FlowDirection là TopDown:

Hình 6.8: B u khi n t trên xu i v i WrapContents là True

Thu c tính FlowDirection là BottomUp:

Hình 6.9: B u khi n t i lên trên v i WrapContents là True

M t s thu ng dùng c a FLowLayoutPanel:

ïèí
B ng 6.3: B ng mô t các thu c tính c a FLowLayoutPanel
Thu c tính Mô t
AutoScroll Mang giá tr True ho c False.
- N u là True: FLowLayoutPanel t ng xu t hi n thanh
c Panel không th hi n th h u
khi n ch a bên trong
- N u là False: FLowLayoutPanel s không hi n th thanh
t
BorderStyle Ki ng vi n c a FLowLayoutPanel khi hi n th . Có 3 giá
tr : None, FixedSingle và Fixed3D
- None: Không hi n th ng vi n
- FixedSingle:Quanh FLowLayoutPanel s hi n th m t
ng vi
- Fixed3D: Hi n th ng vi n c a FLowLayoutPanel
d ng 3 chi u.
FlowDirection Cách th c b u khi u khi n n m ngoài
ph m vi c a FLowLayoutPanel. Bao g m 4 giá tr : LeftToRight,
RightToLeft, TopDown, BottomUp
WrapContents Mang giá tr True ho c False.
- N u là True: u khi c
FLowLayoutPanel s t ng b trí trên m t dòng m i
ho c m t c t m i
- N u là False: FLowLayoutPanel s xu t hi t
hi n th u khi n ngoài kích thu c c a
FLowLayoutPanel (v i thu c tính AutoSroll là True).
N u thu c tính AutoSroll là Fals u khi n n m
cs b

ng dùng c a FLowLayoutPanel:
B ng 6.4: B ng mô t các c c a FLowLayoutPanel
c Mô t
Controls.Add th c có ch u khi n vào
FlowLayoutPanel

Ví d 6.2: Thi t k giao di m có 1 PictureBox và 1


i FlowLayoutPanel ch a danh sách các hình. Khi
i dùng nh p chu t ch hi n th
trên PictureBox.

ïè́
Hình 6.10: Giao di n form hi n th hình ví d 6.2

ng d n:
c 1: Thi t k giao di u khi n FlowLayoutPanel,

Hình 6.11: Giao di n form sau khi thêm PictureBox, FlowLayoutPicture và


ImageList

- Form1:
Thu
- pictureBox1:
Thu c tính Name: myPictureBox
- flowLayoutPanel1:
Thu c tính Name: myFlowLayoutPanel
Thu c tính BorderStyle: FixSingle
Thu c tính AutoScroll: True

ïèë
Thu c tính WrapContents: False
- imageList1:
Thu c tính Name: myImageList
Thu c tính ImageSize: 256, 256
Thu c tính Images: Thêm m t s hình

Hình 6.12: C a s thêm hình cho myImageList

c 3: Vi t mã l u khi n

- S ki n Load c a Form1:
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < myImageList.Images.Count; i++)
{
PictureBox pic = new PictureBox();
pic.Image = myImageList.Images[i];
pic.Size = new Size(50, 50);
pic.Click += new EventHandler(Form1_Click);
myFlowLayoutPanel.Controls.Add(pic);
}
}

ïèê
- S ki n Click c a Form1:
private void Form1_Click(object sender, EventArgs e)
{
try
{
PictureBox pic = (PictureBox)sender;
myPictureBox.Image = pic.Image;
}catch (Exception ex) { }
}

6.4. u khi n TableLayoutPanel

u khi n FlowLayoutPanel, TableLayoutPanel u khi n d n


xu t t u khi c dùng cho m t k giao di n form.
TableLayoutPanel n m trong nhóm Containers c a c a s

u khi n TableLayoutPanel trong c a s Toolbox

TableLayoutPanel bao g m các ô theo dòng và c u khi n vào. L p


trình viên có th thêm các dòng và các c t cho TableLayoutPanel qua các thu c tính
Columns và Rows trong c a s Properties 6.14, ho c thêm dòng và c t qua
ContextMenuStrip khi nh p chu t ph i vào TableLayoutPanel 5.

ïèé
Hình 6.14: Thêm dòng và c t trên c a s Column and Rown Styles

Hình 6.15: Thêm dòng ho c c t trên ContextMenuStrip

Trên c a s Column and Rown Styles ác dòng và c t thêm vào


có th c b ng pixel (m c ch n Absolute), ph c ch n
Percent) ho c t u ch c (m c ch n AutoSize).

ïèè
V i m i ô c a TableLayoutPanel, ch có th ch c m u khi n. Tuy
nhiên l p trình viên có th thêm nhi u khi n trong m t ô b ng cách thêm m u
khi n lo GroupBox, Panel a TableLayoutPanel
l p trình viên có th thêm nhi u khi n và u khi n lo i Containers n m trong ô
c a TableLayoutPanel.
TableLayoutPanel c cung c t (ScrollBar) khi thu c tính
AutoScroll là True.
TableLayoutPanel
BorderStyle CellBorderStyle
CellBorderStyle TableLayoutPanel
TableLayoutStyle
TableLayoutPanel
CellBorderStyle Single, Inset,
InsetDouble, Outset, OutsetDouble OutsetPartial.
M t s thu ng dùng c a TableLayoutStyle:
B ng 6.5: B ng mô t các thu c tính c a TableLayoutStyle
Thu c tính Mô t
AutoScroll Mang giá tr True ho c False.
- N u là True: TableLayoutStyle t ng
xu t hi c
Panel không th hi n th h u
khi n ch a bên trong
- N u là False: TableLayoutStyle s không
hi n th t
CellBorderStyle Ki ng vi n c a TableLayoutStyle khi hi n
th . Có 3 giá tr : None, Single và Inset,
InsetDouble, Outset, OutsetDouble,
OutsetPartial.
ColumnCount S c t c a TableLayoutPanel. L p trình viên có
th thêm ho c gi m s c t b i
giá tr thu c tính ColumnCount
Columns Thu c tính này giúp hi n th b ng Column and
thêm, s a ho c xóa c t.
GrowStyle Thu c tính ch nh vi c
c a nào. G m các
giá tr :
- FixedSize: C c, không

ïèç
i.
- AddRows: Thêm dòng m i
- AddColumns: Thêm c t m i
RowCount S c t c a TableLayoutPanel. L p trình viên có
th thêm ho c gi m s dòng b i
giá tr thu c tính RowCount
Rows Thu c tính này giúp hi n th b ng Column and
thêm, s a ho c xóa dòng.
ng dùng c a TableLayoutStyle:
B ng 6.6: B ng mô t các c c a TableLayoutStyle
c Mô t
Controls.Add th c có ch u khi n vào
TableLayoutStyle

6.5.

6.16.

Hình 6.16

TabPage:
TabControl là TabPage. TabControl
TabPage 6.17.
TabPage

ïçđ
TabControl

TabPage

Hình 6.17:

TabPage TabControl
TabPage
TabPage TabControl
TabPages
6.18.
TabPage
Các thu c
tính c a
TabPage

Hình 6.18
TabPage Panel. TabPage
AutoScroll
BorderStyle TabPage None,
FixedSingle, Fixed3D Panel là TabPage

ïçï
tính Text nh Text
TabPage:

Text c a Text c a Text c a


TabPage1 là TabPage2 là TabPage3 là
MyTab1 MyTab2 MyTab3

Các thu ng dùng c a TabControl:


B ng 6.7: B ng mô t các thu c tính c a TabControl
Thu c tính Mô t
Appearance Thu c tính ch nh TabPage s hi n th hình
d ng nào. Có 3 giá tr :
- Normal:

- Button:

- FlatButtons:

Alignment Thu nh các tab s hi n th trên,


i, trái hay ph i c a TabControl. G m các giá
tr :
- Top:

ïçî
- Bottom:

- Left:

- Right:

Multiline Mang hai giá tr True ho c False.


- N u là True: Cho phép hi n th nhi u dòng
ch a các tab n u s t
ngoài ph c c a TabControl.

- N u là False: Ch cho phép tab hi n th


trên m t dòng.

ïçí
TabPages Ch a t p các các TabPage có trong TabControl
TabCount Tr v s ng TabPage mà TabControl có
SelectedTab Tr v u khi n TabPage c ch n
SelectedIndex Tr v v trí c a TabPage c ch n
Các s ki ng dùng c a TabControl:
B ng 6.8: B ng mô t các s ki n c a TabControl
S ki n Mô t
SelectedIndexChanged i dùng ch n m t TabPage
khác trên TabControl

6.3:
TagPage: TagPage TagPage
TagPage

TagPage

ïḉ
Hình 6.20: giáo viên

TagPage
Label, TextBox,
TabControl và ListView

tabControl1

textBox3

textBox1
textBox3

textBox2

listView

Hình

- Form1:
ïçë
Text
- label1:
Text
Size: 14
- label2:
Text
- label3:
Text
- label4:
Text
- label5:
Text
- textBox1:
Name: txtHoTenNV
- textBox2:
Name: txtLuongCBNV
- textBox3:
Name: txtChucVuNV
- textBox4:
Name: txtHeSoLuongNV
- button1:
Name: btnThoat
Text
- button2:
Name: btnThemNV
Text
- button3:
Name: btnCapNhatNV
Text
- button4:
Name: btnXoaNV
Text
- listView1:
Name: listNhanVien
View: Detail
FullRowSelect: True
MultiSelect: False

ïçê
Columns
c
o Text
o Text
o Text
o Text

Editor

- tabControl1:
myTabControl
TabPage
TabPage
Trên tabQuanLyNhanVien:
o Text
Trên tabQuanLyGiaoVien:
o Text

ïçé
Editor

- S ki n Click c a btnThoat:
private void btnThoat_Click(object sender, EventArgs e)
{
Close();
}

- S ki n Click c a btnCapNhatNV:
private void btnCapNhatNV_Click(object sender, EventArgs e)
{
foreach (ListViewItem lvi in listNhanVien.SelectedItems)
{
lvi.SubItems[0].Text = txtTenNV.Text;
lvi.SubItems[1].Text = txtChucVuNV.Text;
lvi.SubItems[2].Text = txtHeSoLuongNV.Text;
lvi.SubItems[3].Text = txtLuongCBNV.Text;
}
}

ïçè
- S ki n Click c a btnThemNV:
private void btnThemNV_Click(object sender, EventArgs e)
{
if (txtLuongCBNV.Text != "" && txtTenNV.Text != "" &&
txtHeSoLuongNV.Text != "" && txtChucVuNV.Text != "")
{
ListViewItem LVItem = new ListViewItem(txtTenNV.Text);
ListViewItem.ListViewSubItem LVSItemCV = new
ListViewItem.ListViewSubItem(LVItem,
txtChucVuNV.Text);
ListViewItem.ListViewSubItem LVSItemHSL = new
ListViewItem.ListViewSubItem(LVItem,
txtHeSoLuongNV.Text);
ListViewItem.ListViewSubItem LVSItemLCB = new
ListViewItem.ListViewSubItem(LVItem,
txtLuongCBNV.Text);
LVItem.SubItems.Add(LVSItemCV);
LVItem.SubItems.Add(LVSItemHSL);
LVItem.SubItems.Add(LVSItemLCB);
listNhanVien.Items.Add(LVItem);
txtLuongCBNV.Text = "";
txtTenNV.Text = "";
txtHeSoLuongNV.Text = "";
txtChucVuNV.Text = "";
}
else
MessageBox.Show("Ph i nh thông tin nhân viên");
}

- S ki n Click c a btnXoaNV:
private void btnXoaNV_Click(object sender, EventArgs e)
{
if (listNhanVien.SelectedIndices.Count > 0)
{
listNhanVien.Items.RemoveAt(listNhanVien.FocusedItem.Index);
}
else
MessageBox.Show("Ph i ch n nhân viên mu n ");
}

ïçç
- S ki n SelectedIndexChanged c a listNhanVien:
private void listNhanVien_SelectedIndexChanged(object sender,
EventArgs e)
{
foreach (ListViewItem lvi in listNhanVien.SelectedItems)
{
txtTenNV.Text = lvi.SubItems[0].Text;
txtChucVuNV.Text = lvi.SubItems[1].Text;
txtHeSoLuongNV.Text = lvi.SubItems[2].Text;
txtLuongCBNV.Text = lvi.SubItems[3].Text;
}
}

lý nhân viên.

6.6.

SplitContainer giúp phân chia form thành


SplitContainer Panel Panel
Panel . Khi thêm
SplitContainer SplitContainer có
Dock Fill. K hai Panel trong SplitContainet có
Splitter, Splitter Panel.
SplitContainer

Các Panel AutoScroll

Tuy nhiên Panel trong SplitContainer BorderStyle

BorderStyle SplitContainer
îđđ
BorderStyle SplitContainer Panel: None, Fixed3D,
FixedSingle.
V Splitter
Orientation Orientation
SplitContair là: Vertical và Horizontal

Vertical Horizontal
Splitter
Panel IsSplitterFixed
SplitContainer
phép thay
FixedPanel IsSplitterFixed

Thu c tính Tác d ng


IsSplitterFixed = False Thu c tính FixedPanel không có hi u l i dùng
có th c c a Panel1 và c Panel2
IsSplitterFixed = True Thi t l p thu c tính FixedPanel:
- FixedPanel i dùng không th s d ng
v ch phân cách Splitter cc ac
Panel1 và Panel2 c c hai Panel s
i khi SplitContainer có thu c tính Dock là
Fill c form.
- FixedPanel i dùng không th thay
c form
c Panel1 là
i).
- FixedPanel i dùng không th thay
c form

îđï
c Panel2 là
i).

Panel SplitContainer
tính Panel1Collapsed v Panel
Panel
Panel1Collapsed và Panel2Collapsed là True. Khi Panel1Collapsed là True thì
Panel2Collapsed .
Các thu ng dùng c a SplitContainer:
B ng 6.10: B ng mô t các thu c tính c a SplitContainer
Thu c tính Mô t
BorderStyle Thiêt l ng viên cho SplitContainer. G m 3
giá tr : None, FixedSingle, Fixed3D.
FixedPanel C c c a các Panel trong
SplitContainer. G m 3 giá tr : None, Panel1,
Panel2.
IsSplitterFixed Mang hai giá tr True và False. N u là True, c
nh v ch phân cách Splitter
Orientation nh v ch phân cách Splitter s phân cách
theo chi u ngang hay d c. G m 2 giá tr : Vertical,
Horizontal.
Panel1Collapsed Mang hai giá tr True ho c False. N u là True s
n Panel1
Panel1MinSize L c nh nh t ho c thi t l c
nhò nh t cho Panel1
Panel2Collapsed Mang hai giá tr True ho c False. N u là True s
n Panel2
Panel2MinSize L c nh nh t ho c thi t l c
nhò nh t cho Panel2
SplitterDistance Tr v kho ng cách b ng pixel t n
c nh bên trái (n u hai Panel n m d n
c nh trên (n u hai Panel n m ngang)
SplitterWidth thi t l r ng c a v ch phân cách Splitter

6.4

îđî
ListView.

Hình
1
TextBox, Button, SplitContaner và ListView, WebBrowser

textBox1

SplitContainer1

webBrowser1
listView1

îđí
- Form1:

- label1:

textBox1:

- button1:

- button2:

- button3:

- button4:

- listView1:

ính Dock: Fill


- webBrowser1:

- splitContainer1:

- S ki n Click c a btnThoat:
private void btnThoat_Click(object sender, EventArgs e)
{
Close();
}

îđ́
- S ki n Load c a Form1:
private void Form1_Load(object sender, EventArgs e)
{
myWebsite.Navigate("www.google.com");
}

- S ki n Click c a nút btnThem:


private void btnThem_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem(txtLink.Text);
listLinkWebsite.Items.Add(lvi);
txtLink.Text = "";
}
- S ki n Click c a nút btnCapNhat:
private void btnCapNhat_Click(object sender, EventArgs e)
{
listLinkWebsite.FocusedItem.Text = txtLink.Text;
}

- S ki n Click c a nút btnXoa:


private void btnXoa_Click(object sender, EventArgs e)
{
int i = listLinkWebsite.FocusedItem.Index;
listLinkWebsite.Items.RemoveAt(i);
txtLink.Text = "";
myWebsite.Navigate("www.google.com");
}

- S ki n MouseClick c a listLinkWebsite:
private void listLinkWebsite_MouseClick(object sender,
MouseEventArgs e)
{
txtLink.Text = listLinkWebsite.FocusedItem.Text;
if (e.Button == MouseButtons.Left)
myWebsite.Navigate(listLinkWebsite.FocusedItem.Text);
}

6.7.

- hình 629.
-

îđë
Button

-
hình 6.31. R

îđê
Hình 6.31: MessageBox thông báo

Câu 2:

textBox1

textBox2

checkBox1

listView1

-
-

-
-

îđé
-

label1

flowLayoutPanel1

- N
-

- thì

îđè
7: U KHI N C
MESSAGE

7.1. L p MessageBox

L p MessageBox giúp hi n th m t h p tho i trên màn hình. Khi h p tho i xu t


hi i dùng b t bu c ph i thao tác trên h p tho c thì m i có ti p t c th c
hi n công vi c trên ng d ng. Vi c hi n th h u ích khi mu n c nh báo m t l i
ho ng d n cho i dùng. S d ng l p MessageBox thì c n khai báo không
gian tên:

System.Windows.Forms

hi n th h p tho i dùng ch c n s d a
l p MessageBox mà không c n ph i có b t c t ng l p
MessageBox.
c Show():

DialogResult Show(string text, string caption,


MessageBoxButtons buttons,
MessageBoxIcon icon,
MessageBoxDefaultButton defaultButton,
MessageBoxOptions options);

- Text: Chu i hi n trên trên h p tho i MessageBox


- Caption: Chu i hi n th trên thanh titlebar c a h p tho i MessageBox
- Ki u li t kê MessageBoxIcon g m các giá tr nh bi ng hi n
th trên MessageBox:
public enum MessageBoxIcon
{
Asterisk = 0x40,
Error = 0x10,
Exclamation = 0x30,
Hand = 0x10,
Information = 0x40,
None = 0,
Question = 0x20,
Stop = 0x10,
Warning = 0x30
}

- Ki u li t kê MessageBoxDefaulButtons g m các giá tr nh nút


c Focus trên MessageBox:

îđç
public enum MessageBoxDefaultButton
{
Button1 = 0,
Button2 = 0x100,
Button3 = 0x200
}

- Ki u li t kê MessageBoxButtons g m các giá tr nh nút hi n th


trên MessageBox:
public enum MessageBoxButtons
{
OK,
OKCancel,
AbortRetryIgnore,
YesNoCancel,
YesNo,
RetryCancel
}

- Ki u li t kê MessageBoxOption g m các giá tr nh nút hi n th


bên ph i ho c bên trái c a MessageBox:

public enum MessageBoxOptions


{
DefaultDesktopOnly = 0x20000,
RightAlign = 0x80000,
RtlReading = 0x100000,
ServiceNotification = 0x200000
}

p tho i hi n th t c Show() có s d ng tham s


MessageBoxButton c này s tr v m t giá tr có ki u DialogResult.
DialogResult không ph i là l p mà là m t ki u li t kê bao g m các giá tr :

public enum DialogResult


{
None,
OK,
Cancel,
Abort,
Retry,
Ignore,
Yes,
No
}

îïđ
L p trình viên có th s d ng DialogResult n
nút nào trên h p tho i MessageBox.
Ví d 7.1: Hi n th các d ng khác nhau c a h p tho iMessageBox.
- Hi n th h p tho i hi n th

Hình 7.1: H p tho n

Mã l nh:
MessageBox n v i Khoa Công ngh thông tin

- Hi n th h p tho i v trên
titlebar c a h p tho

Hình 7.2: H p tho i MessageBox v trên titlebar


Mã l nh:

MessageBox n v i Khoa Công ngh thông tin


i h c L c H ng

- Hi n th h p tho i v n hi n th nút trong


h p tho i c n s d ng tham s thu c ki u MessageBoxButton ng th
bi i dùng nh n nút Yes hay No thì c n s d ng bi n thu c ki u
DialogResult nh n k t qu tr v t h p tho i.

îïï
Hình 7.3: H p tho i MessageBox v i hai nút Yes/ No

Mã l nh:

DialogResult r = MessageBox.Show("B n mu n ti p t c làm bài ,


"Ch ,
MessageBoxButtons.YesNo);
if (r == DialogResult.Yes)
MessageBox.Show("B n Yes");
else
MessageBox.Show("B n No");

- Hi n th h p tho i có 3 nút Yes/ No/ Cancel và có thêm bi ng d ng câu


h i c nh chu i hi n th trên MessageBox

Hình 7.4: H p tho i MessageBox v i bi ng d ng câu h i


Mã l nh:

DialogResult r = MessageBox.Show("Tr l ,
"Ch ,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
if (r == DialogResult.Yes)
MessageBox.Show("B n Yes");
else
if(r==DialogResult.No)
MessageBox.Show("B n No");
else
MessageBox.Show("B );

îïî
- Hi n th h p tho i có 2 nút Ok/ Cancel và có thêm bi ng d ng l i c nh
chu i hi n th trên MessageBox c Focus khi
h p tho i hi n th là nút Cancel.

Hình 7.5: H p tho i MessageBox báo l i

Mã l nh:

DialogResult r = MessageBox.Show( i, b n mu n
thoát", "L ,
MessageBoxButtons.OKCancel,
MessageBoxIcon.Error,
MessageBoxDefaultButton.Button2);
if (r == DialogResult.OK)
MessageBox.Show("B );
else
if(r==DialogResult.No)
MessageBox.Show("B n Cancel, ti p t c ch y
);

7.2. u khi n ColorDiaLog


thi t l u khi n, C# h tr l p ColorDialog i dùng
s d ng và hi n th tr c quan qua m t h p tho i g i là ColorDialog Box.
ColorDialog Box ch a m t danh sách các màu s nh cho h th ng
hi n th i dùng có th l a ch n ho c t o ra m t màu s c bi t t danh sách,
ng khi thoát kh i h p tho i.
ColorDialog n m trong nhóm Dialog c a c a s

îïí
u khi n
ColorDialog

u khi n ColorDialog trong c a s Toolbox

L p trình có th t ng ColorDialog b u khi n vào form


t c a s Toolbox ho c s d ng mã l nh t ng và hi n th ColorDialog Box
b ng cách g c ShowDialog() hi n th h p tho .
Mã l nh:
ColorDialog clbox= new ColorDialog();
4clbox.ShowDialog();

Hình 7.7: Giao di n ColorDialog Box

îḯ
Ví d 7.2: Vi n màu ch và màu n n cho Label có giao di
hình 7.8.

Hình 7.8: Giao di n form l a ch n màu cho Label

Yêu c u:
i dùng ch i màu n n ho c màu ch c a Label có dòng ch
ngh ng cách ch n m t trong hai RadioButton
a ch i dùng nh hi n th ColoDialog
Box và ch n màu mu i cho Label.
ng d n:
c 1: Thi t k giao di u khi n Label, Button, Panel,
GroupBox và RadioButton t c a s Toolbox và 9.

panel1

Hình 7.9: Giao di u khi n

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:
Thu c tính Text

îïë
Thu c tính Font Size: 14
Thu c tính Font style: Bold
Thu c tính AutoSize: False
Thu c tính Size: 428, 86
Thu c tính TextAlign: MiddleCenter
- panel1:
Thu c tính BorderStyle: FixedSingle
- groupBox1:
Thu c tính Text n màu ch ho c màu n
- radioButton1:
Thu c tính Text
Thu c tính Name: radMauChu
- radioButton2:
Thu c tính Text
Thu c tính Name: radMauNen
- button1:
Thu c tính Text
Thu c tính Name: btnChonMau
- button2:
Thu c tính Text
Thu c tính Name: btnThoat
c 3: Vi t mã l u khi n
- S ki n Click nút btnChonMau:
private void btnChonMau_Click(object sender, EventArgs e)
{
ColorDialog clDLog = new ColorDialog();
DialogResult rs = clDLog.ShowDialog();
if (rs == DialogResult.OK)
{
if (radMauChu.Checked == true)
{
lblHienThi.ForeColor = clDLog.Color;
}
if (radMauNen.Checked == true)
{
lblHienThi.BackColor = clDLog.Color;
}
}
}

îïê
- S ki n Click nút btnThoat:
private void btnThoat_Click(object sender, EventArgs e)
{
Close();
}

7.3. u khi n FontDiaLog

ColorDialog Box thi t l p font ch hi n th tr


h p tho i g i là FontDialog Box. FontDialog Box s hi n th m t danh sách các font
ch hi t trên h th ng; C i dùng l a ch n các thu c
tính cho m t font ch h ki u font ch , kích c ch , hi u .
FontDialog n m trong nhóm Dialogs c a c a s

u khi n
FontDialog

Hình 7.10 u khi n FontDialog trong c a s Toolbox

L p trình có th t ng FontDialog b u khi n vào form


t c a s Toolbox ho c s d ng mã l nh t ng và hi n th FontDialog Box
b ng cách g c ShowDialog() hi n th h p tho .

îïé
Hình 7.11: Giao di n FontDialog Box

Mã l nh hi n th FontDialog Box:
FontDialog fontbox= new FontDialog();
fontbox.ShowDialog();

Ví d 7.3: D a vào ví d 7.2. Thêm nút l n Font ch 2

Hình 7.12: Giao di n Font ch

Yêu c i dùng nh n Font ch hi n th h p tho i


FontDialog Box i font ch , ki u ch cc a
dòng ch Khoa Công ngh
c 1: Thêm m u khi n Button t c a s Toolbox vào frm nh 3

îïè
Hình 7.13: Giao di n form sau khi thêm Button

c 2: Thi t l p giá tr thu c tính cho nút button1:


Thu c tính Name: btnChonFont
Thu c tính Text n Font ch
c 3: Vi t mã l nh cho s ki n.
- Khai báo bi n fontbox có ki u FontDialog:

FontDialog fontbox = new FontDialog();

- S ki n Click nút btnChonFont

private void btnChonFont_Click(object sender, EventArgs e)


{
DialogResult rs = fontbox.ShowDialog();
if (rs == DialogResult.OK)
{
lblHienThi.Font = fontbox.Font;
}
}

7.4. u khi n OpenFileDiaLog

u khi n OpenFileDialog cho phép hi n th h p tho i OpenFileDialog l y


v c, tên t p tin i v i m t t p tin n t i. Thông
ng các ng d ng Windows Forms s d ng h p tho i OpenFileDialog m m t
t nh máy tính.
H p tho i OpenFielDialog có giao di t trong nhóm Dialogs
c ac as

îïç
Hình 7.14: H p tho i OpenFileDialog

u khi n
OpenFileDialog

u khi n OpenFileDialog trong c a s Toolbox

M t s thu ng dùng c a OpenFileDialog:


Thu c tính Mô t
Tilte Thi t l p chu i hi n th trên titlebar c a h p tho i
OpenFileDialog

îîđ
Filter Thu c tính nh n giá tr là m t chu i. Chu i này ch a
r ng c a t p tin, giúp l c ra trên h p tho i
OpenFileDialog ch hi n th
chu i.
Ví d : Thi t l p chu i ch hi n th file hình

Thi t l p chu i hi n th t t c nh c
trên h p tho i:

FileName Thu c tính tr v ng d n cùng tên t c ch n


FileNames Thu c tính tr v m t m ng các ng d n cùng tên t p
c ch n.
c s d ng khi thu c tính
c thi t l p là True
FilterIndex Thu c tính s d ng cùng v i thu c tính Filter. Có ý
c lo i t c trong chu i
Filter.
Ví d : Chu i Filter l c hai lo i t p tin JPG và GIF:

N u mu n h p tho i khi hi n th l
u tiên thi t l p thu c tính FilterIndex có giá tr 1.
N u mu n h p tho i khi hi n th l
u tiên thi t l p thu c tính FilterIndex có giá tr 2.
InitialDirectory Giá tr thu c tính là m ng d nm c
ho c p tho c m lên
s hi n th n i dung c ng d u tiên.
RestoreDirectory Mang hai giá tr True ho c False, cho bi t h p tho i có
tr l ng d n cv am
c tính ch có hi u l c khi thu c tính
InitialDirectory mang giá tr r ng
MultiSelect Mang giá tr True ho c False.
- N i dùng ch n nhi u
t p tin ho c
- N u là False: Ch c ch n 1 t p tin ho c m t
c
CheckFileExists Mang hai giá tr True ho c False.

îîï
N u là True s cho phép h p tho i hi n th m t c nh báo
n i dùng ch nh m t t p tin không t n t i và
nh n nút Open.
ReadOnlyChecked Mang giá tr True ho c False.
- N u là True: Hi n th m t CheckBox v
i ComboBox Files
Of Types

- N u là False: Không hi n th CheckBox.


c tính ch có hi u l c khi thu c tính
ShowReadOnly mang giá tr True
AddExtension Mang hai giá tr True ho c False.
- N u là True s cho phép thêm vào tên m r ng
(jpg, gif, ..) vào t p tin.
- N u là False: Không cho phép
DefaultExt Thêm tên m r p tin n i
dùng không cung c p tên m r ng.
M ts c ng dùng c a OpenFileDialog:
c Mô t
Reset() Thi t l p giá tr các thu c tính tr l i giá tr m nh
ShowDialog() Hi n th h p thoai, b t bu i dùng ph i thao tác và
p tho i l i m i có th th c hi n công vi c khác.

7.5. u khi n SaveFileDialog

u khi n SaveFileDialog cho phép hi n th h p tho i SaveFileDialog i


dùng l a ch ng d nm c ho c th ghi m t t p tin
m i ho p tho i SaveFileDialog có giao di
t trong nhóm Dialogs c a c a s

îîî
Hình 7.16: Giao di n h p tho i SaveFileDialog

u khi n
OpenFileDialog

u khi n SaveFileDialog trong c a s Toolbox


M t s thu ng dùng c a SaveFileDialog:
SaveFileDialog và OpenFileDialog u th a k t l là FileDialog
SaveFileDialog có nhi u thu c tính gi OpenFileDialog. M t s thu c tính
OpenFileDialog SaveFileDialog Multiselect,
ReadOnlyChecked, ShowReadOnly. Do là h p tho
SaveFileDialog h tr hai thu c tính m i là: CreatePrompt và OverwritePrompt.
Thu c tính Mô t
Tilte Thi t l p chu i hi n th trên titlebar c a h p tho i
OpenFileDialog

îîí
Filter Thu c tính nh n giá tr là m t chu i. Chu i này ch a
r ng c a t p tin, giúp l c ra trên h p tho i
OpenFileDialog ch hi n th
chu i.
Ví d : Thi t l p chu i ch hi n th file hình

Thi t l p chu i hi n th t t c nh c
trên h p tho i:

FileName Thu c tính tr v ng d n cùng tên t c ch n


FilterIndex Thu c tính s d ng cùng v i thu c tính Filter. Có ý
c lo i t c trong chu i
Filter.
Ví d : Chu i Filter l c hai lo i t p tin JPG và GIF:

N u mu n h p tho i khi hi n th l
u tiên thi t l p thu c tính FilterIndex có giá tr 1.
N u mu n h p tho i khi hi n th l
u tiên thi t l p thu c tính FilterIndex có giá tr 2.
InitialDirectory Giá tr thu c tính là m ng d nm c
ho c p tho c m lên
s hi n th n i dung c ng d u tiên.
RestoreDirectory Mang hai giá tr True ho c False, cho bi t h p tho i có
tr l ng d cv am
ý: Thu c tính ch có hi u l c khi thu c tính
InitialDirectory mang giá tr r ng
CheckFileExists Mang hai giá tr True ho c False.
N u là True s cho phép h p tho i hi n th m t c nh báo
n i dùng ch nh m t t p tin không t n t i và
nh n nút Open.
CheckPathExists Mang hai giá tr True ho c False.
N u là True s ki ng d n t i t p tin có h p l
hay không.
AddExtension Mang hai giá tr True ho c False.
- N u là True s cho phép thêm vào tên m r ng
(jpg, gif, ..) vào t p tin.

îî́
- N u là False: Không cho phép
DefaultExt Thêm tên m r p tin n i
dùng không cung c p tên m r ng.
OverwritePrompt Mang hai giá tr True và False. N u là True s hi n c nh
tt nt i
CreatePrompt Mang hai giá tr True và False. N u là True s hi n
t t p tin m i

Ví d 7.4: Vi n th n s d ng OpenFileDialog
m t p tin và SaveFileDialog hình 7.18.

Hình 7.18: Giao di n th n


Yêu c u:
i dùng nh t m m tt nh d ng .txt. N i dung c a
t p tin này s hi n th trên TextBox (ch cho phép hi n th t p tin .txt)
i dùng nh i dung v a so n th o trong TextBox vào
m th ng.
ng d n:
c 1: Thi t k giao di u khi n:
Label, TextBox, Button, OpenFileDialog và SaveFileDialog t c a s Toolbox

îîë
textBox1

Hình 7.19: Giao di n form so n th u khi n

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:
Thu c tính Text n th
Thu c tính Font Size: 14
- button1:
Thu c tính Name: btnMoTapTin
Thu c tính Text t
- button2:
Thu c tính Name: btnLuuTapTin
Thu c tính Text
- button3:
Thu c tính Name: btnThoat
Thu c tính Text
- textbox1:
Thu c tính Name: txtNoiDung
Thu c tính MultiLine: True
Thu c tính Size: 93, 55
- openFileDialog1:
Thu c tính RestoreDirectory: True
Thu c tính Title t so n th
Thu c tính Filter

îîê
- saveFileDialog1:
Thu c tính RestoreDirectory: True
Thu c tính Title
Thu c tính Filter
Thu c tính OverwritePrompt: True
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnMoTapTin:

private void btnMoTapTin_Click(object sender, EventArgs e)


{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string tentaptin = openFileDialog1.FileName;
StreamReader rd = new StreamReader(tentaptin);
txtNoiDung.Text = rd.ReadToEnd();
rd.Close();
}
}

- S ki n Click c a nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n Click c a nút btnLuuTapTin:

private void btnLuuTapTin_Click(object sender, EventArgs e)


{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string noidung = txtNoiDung.Text;
string tentaptin = saveFileDialog1.FileName;
StreamWriter wt = new StreamWriter(tentaptin);
wt.Write(noidung);
wt.Close();
}
}

7.6. u khi n FolderBrowserDiaLog

u khi n FolderBrowserDialog i dùng ch n m t m c nào


n t i trong h th ng. Ngoài ra trong quá trình ch
t o c m i u khi n ForlderBrowserDialog n m
trong nhóm Dialogs c a c a s

îîé
u khi n
FolderBrowserDialog

u khi n FolderBrowserDialog trong c a s Toolbox


S khác bi n FolderBrowserDialog và OpenFileDialog là
FolderBrowserDialog ch cho phép ch n c mà không ph i là ch n t p tin và m
OpenFileDialog.
L p trình viên có th t ng FolderBrowserDialog b u
khi n t c a s Toolbox vào form ho c vi t mã l t ng
FolderBrowserDialog và hi n th h p tho i FolderBrowserDialog b c
ShowDialog. Giao di n h p tho i FolderBrowserDialog

Hình 7.21: Giao di n h p tho i FolderBrowserDialog

Mã l nh t ng và hi n th h p tho i FolderBrowserDialog:
FolderBrowserDialog fd = new FolderBrowserDialog();
fd.ShowDialog();
îîè
M t s thu ng dùng c a FolderBrowserDialog:
Thu c tính Mô t
Name Thi t l p tên cho FolderBrowserDialog
SelectedPath Tr v ng d n cùng tên c i
dùng ch n
Description Thi t l p chu i mô t h p tho i, chu i mô t này
c hi n th i titlebar c a FolderBrowserDialog
ShowNewFolderButton Mang hai giá tr True ho c False.
- N u là True: S xu t hi n nút l
i bên trái nút l
l nh này cho phép i dùng t o m c
m n.

- N u là False: Không hi n th nút l

RootFolder Thi t l cm nh s m ra khi hi n th h p


tho i FolderBrowserDialog. Các v cm c
nh s m c thi t l p s l p trình viên l a
ch n.

Ví d 7.5: Vi n th hình nh có trên h th ng máy tính. Giao di n

Yêu c u:
i dùng ch ng d c ch a hình. M t
ListView trên form s hi n th p tin d ng .JPG, Khi

îîç
i dùng ch n m t hình trên ListView ng hi n th trên
PictureBox.

Hình 7.21: Giao di n th hình nh

c 1: Thi t k giao di u khi n: Label, Button,


PictureBox, ListView và FolderBrowserDialog

pictureBox1

listview1

Hình 7.22: Giao di u khi n

c 2: Thi t l p giá tr thu u khi n trong c a s Properties


- label1:

îíđ
Thu c tính Text N TH
Thu c tính Font Size: 14
Thu c tính Font Style: Bold
- button1:
Thu c tính Text ng d
Thu c tính Name: btnChon
- button2:
Thu c tính Text
Thu c tính Name: btnThoat
- listView1:
Thu c tính Name: listPath
Thu c tính View: Tile
Thu c tính MultiSelect: False
Thu c tính AllowDrop: True
- pictureBox1:
Thu c tính Name: picboxHienThi
Thu c tính SizeMode: StretchImage
- folderBrowserDialog1:
Thu c tính Name: myFolderBrowser
c 3: Vi t mã l u khi n
- S ki n Click c a nút btnChon:

private void btnChon_Click(object sender, EventArgs e)


{
DialogResult dr = myFolderBrowser.ShowDialog() ;
string[] path =
Directory.GetFiles(myFolderBrowser.SelectedPath,"*.jpg");
if (dr == DialogResult.OK)
{
foreach (string i in path)
{
int vt = i.LastIndexOf('\\');
listPath.Items.Add(i.Substring(vt+1, i.Length - vt-1));
}
}
}
- S ki n Click c a nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

îíï
- S ki n SelectedIndexChanged c a nút listPath:

private void listPath_SelectedIndexChanged(object sender,


EventArgs e)
{
picboxHienThi.ImageLocation =
folderBrowserDialog1.SelectedPath
+ "\\" + listPath.FocusedItem.Text;
}

7.7. Bài t p cu

Câu 1: Thi t k n có giao di

Hình 7.23: Giao di n


X lý menu H Th ng :
- M m m t file text b t k hi n có trên c ng
máy tính và hi n th n i dung c u không có sinh viên t t o ra
m t file text v i n i dung b t k .
X lý menu Thi t L p :
- vi t IN kí t u c a m i t và c t b nh ng kí t tr ng hi n có
n th .
- i font, size, color c a
c ch n kh i trong khung hi n th .
X lý menu Thông tin :

îíî
- Sinh viên: Hi n th MessageBox bao g m các thông tin H tên Mã s sinh viên
c a sinh viên.
G i ý: kho ng tr ng th a là nh ng kho ng tr u và cu n,
nh ng kho ng tr ng sau m t kho ng tr ng khác, nh ng kho ng tr c
các d u ng u ph u ch u ch m ph u hai ch
d uh u ch
Câu 2: Thi t k

Hình 7.24: Giao di máy tính

Yêu c u:
X lý s ki u khi n form hình 7.24:
- n lên m t l n nào ho c s l n kích lên nút là ch n
thì u ki n không s n sàng s d ng
ng lên các thành ph n khác trên form máy tính.
- M nh, RadioButton Có c ch n.
- B y l i nh p, ch cho nh p s vào hai TextBox txtSoA và txtSoB.
- TextBox k t qu i dùng nh p li u mà ch xu t k t qu c a
i dùng nh n các Button C ng , Tr , Nhân , Chia
c ch n s i màu n n.
N tr
v màu n u.
- Khi RadioButton Có c ,c m c k t qu thì
ghi toàn b t dòng d ng Giá tr A Tên phép toán Giá tri B
= K t qu tính vào t p tin GhiText.txt (xem hình 7.25 ng th i, cho tác

îíí
ng Button Xem File . File GhiText.txt ph t cùng v trí v i file ch y
(.exe) c
- Khi ch n RadioButton Không thì t p tin GhiText.txt hi n có s b ng
th ng lên Button Xem File .
- Kích Button Xem File cho phép hi n th form ghi chép phép toán (hình 7.25)
- Kích Button Làm l i s xóa s ch n i dung các ô nh p, ô k t qu và n i dung
t p tin GhiText.txt, ch th c hi n bài toán m i

Hình 7.25: Giao di n form ghi chép phép toán

X lý s ki u khi n form hình 7.25:


- Khi load form, xu t hi n OpenFileDialog cho ch n t p tin GhiText.txt và hi n
th n i dung file lên form.
- Button D ng Xem form ghi chép phép t tr v màn hình form
máy tính.
Câu 3: Thi t k

îí́
Hình 7.26: Giao di Fibonacy

Yêu c u:
- /T t l n nào ho c s l n kích lên nút là
ch n thì t ng lên các thành ph n khác trên
form. N u s l n kích lên nút là l thì m ng lên các
thành ph n còn l i trên form.
- Nh p và tính k t qu :
Cách tính giá tr t ng s h ng trong dãy Fibonaci: F0=1, F1=1, Fn=Fn-1+Fn-2 (v i
n>=2)
o Hình 7.27: Giao di p s n, ch nh p s n. B y l i
nh p, ch cho nh p vào m t s n th

Hình 7.27: Giao di pn

o Hình 7.28: khi v a nh p vào s n th u ki n, hi n th giá tr c a F0 và


F1 ng th n thêm giá tr n vào nhãn c a s h tr ng.

îíë
Hình 7.28: Giao di n khi nh p n th u ki n

o Hình 7.29: khi nh p ch n = ., in giá tr s h ng Fn vào ô k t qu .


t qu i giá tr trong ô nh p n.

Hình 7.29: K t qu tính Fibonacy khi n = 5

- GroupBox Ghi t ng s h n :
o Khi radioButton Có c ch n, c m i giá tr n nh p h p l và ra
c k t qu thì ghi vào t p tin t ng s h ng t F0
Fn, m i s h ng ghi thành m t dòng d ng gi ng
th ng Button Xem File .
(T p tin GhiChep.txt ph t cùng v trí v i file ch y (.exe) c
trình.)
o Khi ch n vào radioButton Không thì t p tin GhiChep.txt hi n có s b
ng th ng lên Button Xem File .
o Nh n ch n Button Xem File cho hi n th form Dãy Fibonaci trên form

îíê
- Hình 7.30: Giao di n form hi n th k t qu Fibonacy t F0 n F10

- X lý form Dãy Fibonaci:


o Khi load form, xu t hi n OpenDialog cho ch n t p tin GhiChep.txt và hi n
th n i dung t p tin lên form.
o Nh n ch n Button D ng Xem tr v form
hình 7.26.
- Nh n ch n pt xóa s ch n i dung các ô nh p, ô xu t k t qu và
n i dung t p tin GhiChep.txt và ch nh p s n m i.

îíé
8: LÀM VI C V U KHI N IN N

8.1. u khi n PageSetupDialog

u khi n PageSetupDialog c hi n th d ng h p tho c


thi. Vi c hi n th d ng h p tho i i dùng d dàng i các thi t l p v
. H p tho i PageSetupDialog có
giao di

Hình 8.1: Giao di n h p tho i PageSetupDialog

Nh ic i dùng trên h p tho i PageSetupDialog làm


i các giá tr ng trên h p tho i PrintDocument c thi t l p các
giá tr trong h p tho i PageSetupDialog n hình d ng c a trang khi
in n.
Hi n th h p tho i PageSetupDialog s d c ShowDialog(). Tuy
m khác bi có th g c ShowDialog() thì c n ph i
th c hi n m c là gán m ng thu c l p PrintDocument cho thu c
tính Document c u khi n PageSetupDialog. B trên là
PageSetupDialog và PrintDocument có liên h v i nhau. Nh i tùy ch n
trong PageSetupDialog u n hình d ng c a trang khi in, m t khác

îíè
PrintDocument th c hi n ti n trình in n ph i thi t
l pm ng thu c l p PrintDocument cho thu c tính Document c.
u khi n PageSetupDialog n m trong nhóm Printing c a c a s
hình 8.2.

u khi n
PageSetupDialog

u khi n PageSetupDialog trong c a s Toolbox

M t s thu ng dùng c a PageSetupDialog:


B ng 8.1: B ng mô t các thu c tính c a PageSetupDialog
Thu c tính Mô t
AllowMargins Mang hai giá tr True ho c False.
- N u là True: Cho phép thi t l r ng l trên,
i, ph i và trái c a trang
- N u là False: Không cho phép thi t l p l c a trang
AllowOrientation Mang hai giá tr True ho c False.
- N u là True: Cho phép thi t l p trang hi n th theo
chi u ngang ho c theo chi u d c.
- N u là False: Không cho phép thi t l p chi u hi n
th c a trang.
AllowPaper Mang hai giá tr True ho c False.
- N u là True: Cho phép thi t l c c a
trang. Có th thi t l
- N u là False: Không cho phép thi t l p c
c a trang
AllowPrinter Mang hai giá tr True ho c False.
- N u là True: i dùng s d ng ch n
i dùng nh p vào nút Printer s

îíç
xu t hi n h p tho i cho phép ch n máy in.
- N u là False: Nút printer không có hi u l c
Document Mang giá tr là m ng thu c l p
PrintDocument.
c tính Document ph c gán giá tr
c khi h p tho i PageSetupDialog c hi n th
b c ShowDialog().
MinMargins c nh nh i dùng có th thi t l p
canh l i, trái hay ph i c a trang.
ShowHelp Mang hai giá tr True ho c False.
- N u là True: Trên h p tho i xu t hi n thêm nút
Help
- N u là False: Không xu t hi n nút Help trên h p
tho i
ShowNetwork Mang hai giá tr True ho c False.
- N u là True: Trên h p tho i xu t hi n nút Network.
i dùng có th ch n máy in
m ng.
- N u là False: Không hi n th nút Network

Hi n th h p tho i PageSetupDialog:
Lâp trình viên có th s d u khi n PageSetupDialog b u
khi n PageSetupDialog t c a s c khi hi n th h p
tho i PageSetupDialog b c ShowDialog(), l p trình viên c n ph i thi t
l p thu c tính Document b ng thu c PrintDocument .3.

î́đ
Thu c tính Name c a
nút là btnHienThi

u khi n
PageSetupDialog Thi t l p giá tr thu c tính
và PrintDocument ng
vào form printDocument1 v a kéo
t Toolbox vào form

Hình 8.3: Giao di n hi n th h p tho i PageSetupDialog

S ki n Click c a nút btnHienThi:

private void btnHienThi_Click(object sender, EventArgs e)


{
pageSetupDialog1.ShowDialog();
}

Ngoài ra, n u không s d u khi n PageSetupDialog và PrintDocument


b ng cách kéo th vào form t c a s Toolbox, l t i
ng PageSetupDialog và hi n th h p tho i này b ng mã l

private void btnHienThi_Click(object sender, EventArgs e)


{
PageSetupDialog PageSD = new PageSetupDialog();
System.Drawing.Printing.PrintDocument printDoc = new
System.Drawing.Printing.PrintDocument();
PageSD.Document = printDoc;
PageSD.ShowDialog();
}

8.2. u khi n PrintPreviewDiaLog

u khi n PrintPreviewDialog i dùng có th c trang in


s c in ra trên trên gi u khi n
PrintPreviewDiaLog có th y là vì c
Print() c ng l p PrintDocument c thi t l p trong thu c tính Document c a
PrintPreviewDialog c Print() th c hi n ch c

î́ï
ti p trên gi y thì trang in s xu t ra trên m t giao di h c bi u di t
trang gi y c a h p tho i Print preview hình 8.4.

Hình 8.4: Giao di c hi n th

Trên giao di n hình 8.4 c u khi n PrintPreviewDialog i dùng có th


l a ch n trang s xem, phóng to ho c thu nh trang, l a ch n ch hi n th trang (1
i dùng có th in trang hi n th
trên gi y b ng cách nh n vào bi ng máy in trên h p tho i Print preview.
u khi n PrintPreviewDialog n m trong nhóm Printing c a c a s Toolbox

î́î
u khi n
PrintPreviewDialog

Hình 8.5 u khi n PrintPreviewDialog trong c a s Toolbox

Hi n th h p tho i PrintPreviewDialog:
H p tho i PrinPreviewDialog hi n th b c ShowDialog() ho c
c Show(). c khi h p tho c hi n th l p trình viên c n
thi t l p thu c tính Document c a PrintPreviewDialog có giá tr là m ng
PrintDocument. L p trình viên có th t ng và hi n th h p tho i
PrintPreviewDialog b ng mã l :
private void btnHienThi_Click(object sender, EventArgs e)
{
PrintPreviewDialog preview = new PrintPreviewDialog ();
System.Drawing.Printing.PrintDocument printDoc = new
System.Drawing.Printing.PrintDocument();
preview.Document = printDoc;
preview.ShowDialog();
}

Ví d 8.1: Thi t k n g m Button và Textbox


Yêu c i dùng có th nh n vào Textbox và khi n vào Button cho phép
xem trang

î́í
Hình 8.6: Giao di p
n

Hình 8.7: Giao di n h p tho i xem trang


c khi in

ng d n:
c 1: Thi t k giao di u khi n Button, Textbox,
PrintDocument và PrintPreviewDialog t c a s Toolbox vào form

textBox1

Hình 8.8: Giao di uc u khi n

c 2: Thi t l p giá tr thu c u khi n trong c a s Properties.


- textBox1:
Thu c tính Name: txtNoiDung
Thu c tính Multiline: True
Thu c tính Size: 297, 161

î́́
- Button1:
Thu c tính Name: btnXemBanIn
Thu c tính Text cb
Thu c tính Size: 296, 35
- printPreviewDialog1:
Thu c tính Document: printDocument1
c 3: Vi t mã l u khi n
- Xây d ng hàm DrawText:

private void DrawText(object sender,


System.Drawing.Printing.PrintPageEventArgs e)
{
string text = txtNoiDung.Text;
System.Drawing.Font printFont = new
System.Drawing.Font("Arial", 35,
System.Drawing.FontStyle.Regular);
e.Graphics.DrawString(text, printFont,
System.Drawing.Brushes.Black, 0, 0);
}

- Vi t mã l nh cho s ki n Click nút btnXemBanIn:

private void button1_Click(object sender, EventArgs e)


{
printDocument1.PrintPage += DrawText;
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}

8.3. u khi n PrintPreviewControl

u khi n PrintPreviewDialog u khi n PrintPreviewControl s


d n trên gi y b ng máy in. Tuy nhiên,
m khác bi t là PrintPreviewDialog hi n th d ng h p tho c l p v i form, còn
PrintPreviewControl thì hi n th trên form c hi n th PrintPreviewControl
không c n ph i s d c Show c ShowDialog(). L p
trình viên có th kéo PrintPreviewControl t c a s Toolbox vào form và b trí c nh
u khi TextBox, Button, Label u khi n PrintPreviewControl
n m trong nhóm Printing c a c a s

î́ë
u khi n
PrintPreviewControl

u khi n PrintPreviewControl trong c a s Toolbox

M t s thu ng dùng c a PrintPreviewControl:


B ng 8.2: B ng mô t các thu c tính c a PrintPreviewControl
Thu c tính Mô t
AutoZoom Mang hai giá tr True ho c False.
- N u là True: Cho phép trang hi n th t ng phóng
to hay thu nhò v a v u khi cb
i.
- N c trang s c nh. N u kích
c u khi n nh c trang s hi n
th t.
Columns Thi t l p s trang hi n th theo chi u ngang trên màn
hình
Document Thi t l p tài li u s c.
thi t l p là m ng thu c l p
PrintDocument
Rows Thi t l p s trang hi n th theo chi u d c trên màn
hình.
StartPage Thi t l p trang s hi n th c trang
in.
UseAntiAlias Mang hai giá tr True ho c False.
- N i dùng lo i b

î́ê
n th . Giúp trang hi n th trông
d ng ch này s làm
ch m.
- N u là False: Không s d ng ch lo i b

Zoom Thi t l c hi n th c a trang.

Ví d 8.2: Vi trình bao g m các


u khi n TextBox, GroupBox, Button, PrintDocument, PrintPreviewControl

Hình 8.10: Giao di c trang in b ng PrintPreviewControl


Yêu c u:
i dùng nh n vào TextBox. Khi nh hi n
th i dùng có th s d ng nút
c trang hi n th . S d
in trang hi n th ra gi y trên máy in.
ng d n:
c 1: Thi t k giao di n ban u khi n TextBox, GroupBox,
Button, PrintDocument, PrintPreviewControl t Toolbox
8.11.

î́é
textBox1 printPreviewControl1

Hình 8.11: Giao di n thi t k u khi n


c 2: Thi t l p giá tr thu c tính cho u khi n trong c a s Properties
- Form1:
Thu c tính Size: 607, 412
- groupBox1:
Thu pn
- groupBox2:
Thu cb
- textBox1:
Thu c tính Name: txtVanBan
Thu c tính Multiline: True
Thu c tính Size: 270, 286
- printPreviewControl1:
Thu c tính AutoZoom: True
Thu c tính Document: printDocument1
- button1:
Thu c tính Name: btnXemBanIn
Thu
- button2:
Thu c tính Name: btnThoat
Thu
- button3:
Thu c tính Name: btnPhongTo

î́è
Thu
- button4:
Thu c tính Name: btnThuNho
Thu
- button5:
Thu c tính Name: btnIn
Thu
c 3: Vi t mã l u khi n
- Xây d ng hàm DrawText:

private void DrawText(object sender,


System.Drawing.Printing.PrintPageEventArgs e)
{
string text = txtVanBan.Text;
System.Drawing.Font printFont = new
System.Drawing.Font("Arial", 35,
System.Drawing.FontStyle.Regular);
e.Graphics.DrawString(text, printFont,
System.Drawing.Brushes.Black, 0, 0);
}
- S ki n Click nút btnXemBanIn:

private void btnXemBanIn_Click(object sender, EventArgs e)


{
PreView();
}

- Xây d ng hàm PreView:

private void PreView()


{
printDocument1.PrintPage += new
System.Drawing.Printing.PrintPageEventHandler(DrawText);
printPreviewControl1.Document = printDocument1;
}

- S ki n Click nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n Click nút btnIn:


private void btnIn_Click(object sender, EventArgs e)
{
printDocument1.Print();
}

î́ç
- S ki n Click nút btnPhongTo:

private void btnPhongTo_Click(object sender, EventArgs e)


{
printPreviewControl1.Zoom += 0.01;
PreView();
}

- S ki n Click nút btnThuNho:

private void btnThuNho_Click(object sender, EventArgs e)


{
printPreviewControl1.Zoom -= 0.01;
PreView();
}

8.4. u khi n PrintDialog

u khi n PrintDialog cho phép hi n th d ng h p tho i


dùng ch n máy in và n. u khi n th c hi n công viêc in n
khác, h p tho c hi n b c
khi g c ShowDialog() l p trình viên c n thi t l p giá tr cho thu c tính
Document.

Hình 8.12: Giao di n h p tho i PrintDialog

îëđ
u khi n PrintDialog n m trong nhóm Printing c a c a s
8.13.

u khi n
PrintDialog

Hình 8.13 u khi n PrintDialog trong c a s Toolbox


M t s thu ng dùng c a PrintDialog:
B ng 8.2: B ng mô t các thu c tính c a PrintDialog
Thu c tính Mô t
AllowCurrentPage Mang hai giá tr True ho c False.
- N u là True: Cho phép ch n trang hi
in.
- N u là False: Không cho phép in ch n in trang
hi n hành.
AllowPrintToFile Mang hai giá tr True ho c False.
- N u là True: Cho phép hi n th Checkbox

i dùng có th in ra thành file


thay vì in ra gi y trên máy in
- N u là False: Không hi n th Checkbox

AllowSelection Mang hai giá tr True ho c False.


- N u là True: Cho phép hi n th RadioButton
i dùng ch n trang s in.

îëï
- N u là False: Không hi n th RadioButton
Selection

AllowSomePages Mang hai giá tr True ho c False.


- N u là True: Cho phép hi n th RadioButton
i dùng ch n in trang th i

- N u là False: Không hi n th RadioButton Pages

Document Thi t l p tài li u s c in.


thi t l p là m ng thu c l p
PrintDocument
PrintToFile Mang hai giá tr True ho c False.
- N u là True: Checkbox PrintToFile trên h p tho i
c ch n.
- N u là False: Checkbox PrintToFile trên h p
tho c ch n.
PrintSettings Thu c tính PrintSettings có nhi u tùy ch n bên trong
giúp thi t l p các công vi
- PrintSettings.PrinterName = <Tên máy in>: Ch n
máy in
- PrintSettings.PrintToFile = <True/ False>: Cho
phép ho c không cho phép in ra t p tin.
- PrintSettings.FromPage = <S nguyên>: Thi t l p
b u in t trang th m y.
- PrintSettings.ToPage = <S nguyên>: Thi t l p
trang cu i cùng s in
- PrintSettings.Size: L y kích c gi y mà máy in h

îëî
tr .
- PrintSettings.Resolutions: L y t t c phân gi i
mà máy in h tr .
- PrintSettings.Duplex = <True/ False>: Thi t l p
ch in m t m t hay hai m t c a trang gi y.
- PrintSettings.CanDuplex: Tr v giá tr True ho c
False, cho bi t máy in có h tr in hai m t c a
trang gi y hay không.

Ví d 8.3: Vi
i dùng ch n 1 hình nh trên máy tính và hi n th i
dùng có th s d g i h p tho i PrintDialog và in hình ra gi y
b ng máy in.

Hình 8.14: Giao di nh

ng d n:
c 1: Thi t k giao di u khi n Button, PictureBox,
PrintDialog, PrintDocument và OpenFileDialog t c a s
hình 8.15.

îëí
pictureBox1

Hình 8.15: Giao di u form in hình nh

c 2: Thi t l p giá tr thu u khi n trong c a s Properties.


- button1:
Thu c tính Name: btnChonHinh
Thu c tính Text
- button2:
Thu c tính Name: btnIn
Thu c tính Text
- button3:
Thu c tính Name: btnThoat
Thu c tính Text
- pictureBox1:
Thu c tính BorderStyle: FixedSingle
Thu c tính SizeMode: StretchImage
- openFileDialog1:
Thu c tính Filter jpg images|*.jpg
- PrintDialog:
Thu c tính AllowCurrentPage: True
Thu c tính AllowPrintToFile: True

îë́
Thu c tính AllowSelection: True
Thu c tính AllowSomePages: True
Thu c tính Document: printDocument1
Thu c tính PrintToFile: True
Thu c tính ShowHelp: True
Thu c tính ShowNetwork: True
c 3: Vi t mã l u khi n
- Vi t hàm printPicture_PrintPage:

void printPicture_PrintPage(object sender, PrintPageEventArgs


e)
{
try
{
if (pictureBox1.Image != null)
{
Bitmap bitmap = new Bitmap(pictureBox1.Image);
if (bitmap != null)
{
e.Graphics.DrawImage(bitmap, 10, 10);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

- S ki n Click nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n Click nút btnChonHinh:


private void btnChonHinh_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = openFileDialog1.FileName;
}
}

îëë
- S ki n Click nút btnIn:

private void btnIn_Click(object sender, EventArgs e)


{
printDocument1.PrintPage += new
PrintPageEventHandler(printPicture_PrintPage);
printDialog1.Document = printDocument1;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.PrinterSettings =
printDialog1.PrinterSettings;
printDocument1.Print();
}
}

8.5. u khi n PrintDocument

L p PrintDocument có không gian tên là System.Drawing.Printing.


PrintDocument là l ng xuyên l p n m gi n i dung c n in ra t p tin hay máy in,
c s d ng nhi u trong vi c in n.
ng t o ra t c s d ng cùng v u khi n
p trình viên có th t o ra
ng PrintDocument b u khi n PrinDocument t c a s Toolbox

Hình 8.16 u khi n PrintDocument trong c a s Toolbox

Ho c có th t ng PrintDocument b ng mã l
PrintDocument prtDC= new PrintDocument();

îëê
S d u khi n PrintDocument:
Trong công vi c in in n i dung mà PrintDocument n m gi ra máy in ho c
ra t p tin, l p trình viên s d c Print() c a l p PrintDocument:
prtDC.Print();

Khi g c Print thì s ki ti n hành v


các n i dung PrintDocument n m gi trên các trang gi y, l p trình viên c n
ph a các công vi c c n ph i làm khi s ki n PrintPage phát sinh, thông
ng công vi c này là v các n i dung PrintDocument n m gi lên trang gi
n l p trình viên s xây d ng m c l p th c hi n công vi c v này và
g i hàm th c hi n trong s ki n PrintPage.
- Hàm v n:

private void DrawText(object sender,


System.Drawing.Printing.PrintPageEventArgs e)
{
string text = "Khoa Công ngh thông tin";
System.Drawing.Font printFont = new
System.Drawing.Font("Arial", 35,
System.Drawing.FontStyle.Regular);
e.Graphics.DrawString(text, printFont,
System.Drawing.Brushes.Black, 0, 0);
}

- Hàm v hình ch a trong pictureBox1 ra trang gi y:


private void DrawPicture(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
try
{
if (pictureBox1.Image != null)
{
Bitmap bitmap = new Bitmap(pictureBox1.Image);
if (bitmap != null)
{
e.Graphics.DrawImage(bitmap, 10, 10);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

îëé
- Th c hi n g i hàm v n ho c v hình nh lên trang gi y in ho c lên t p
tin trong s ki n PrintPage:
private void btnIn_Click(object sender, EventArgs e)
{
ng l p PrintDocument
PrintDocument printDC = new PrintDocument();
//S d ng hàm v n trong s ki n PrintPage. N u mu n v
//hình thì thay Drawtext b ng DrawPicture
printDC.PrintPage += new
PrintPageEventHandler(DrawText);
ng l p PrintPreviewDialog
PrintPreviewDialog printPrev = new PrintPreviewDialog();
printPrev.Document = printDC;
//Hi n th h p tho c trang in
if (printPrev.ShowDialog() == DialogResult.OK)
{
//N i dùng nh c Print s
//th c hi phát sinh s ki n PrintPage th c
//hi n công vi c v b n ho c v hình nh
printDC.Print();
}
}

In n i dung trên nhi u trang:


Có v phát sinh v i vi c in n khi n i dung c n in quá nhi u, nhi
c c a m t trang gi y và n u x lý b ng nh ng các câu l nh trên thì i dùng s
ch c m t trang. nh ng n c trang s b m
này x y ra b i vì PrintDocument không có ký t ng t ng
ng n ph i vi t mã l nh th c hi n các công vi c ng t dòng và ng t
trang này.
có th ng t dòng in, l p trình viên c n bi c dòng và tính ra s
ký t t in trên m t dòng c , mu n ng t trang thì l p trình
c trang t y ra thông tin s dòng có th in
trên m t trang gi y.
Ví d 8.4: Vi n có giao di m
u khi n Button, TextBox, GroupBox.
Yêu c i dùng nh n vào TextBox. Khi nh hi n
th c trang in. Trang hi n th s t ng ng t dòng xu ng hàng và sang trang m i
n us ng ký t c c trang in.

îëè
Hình 8.17: Giao di n

c 1: Thi t k giao di u khi u khi n Button,


TextBox, GroupBox trong c a s

textBox1

Hình 8.18: Giao di u khi n


c 2: Thi t l p giá tr thu u khi n trong c a s Properties.
- button1:
Thu c tính Name: btnIn
Thu c tính

îëç
- button2:
Thu c tính Name: btnThoat
Thu
- textBox1:
Thu c tính Name: txtVanBan
Thu c tính Multiline: True
Thu c tính Size: 274, 234
- groupBox1:
Thu
Thu c tính Size: 308, 273
c 3: Vi t mã l u khi n
- Khai báo bi n:

string stringtoPrint = "";

- S ki n Click nút btnIn:

private void btnIn_Click(object sender, EventArgs e)


{
stringtoPrint = txtVanBan.Text;
PrintDocument printDC = new PrintDocument();
printDC.PrintPage += new PrintPageEventHandler(DrawText);
PrintPreviewDialog printPrev = new PrintPreviewDialog();
printPrev.Document = printDC;
if (printPrev.ShowDialog() == DialogResult.OK)
{
printDC .Print();
}
}

- S ki n Click nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

îêđ
- Mã l nh hàm DrawText:

private void DrawText(object sender,


System.Drawing.Printing.PrintPageEventArgs e)
{
int sokytu, sodong;
string chuoiin;
//khai báo font ch
System.Drawing.Font printFont = new
System.Drawing.Font("Arial", 35,
System.Drawing.FontStyle.Regular);
//khai báo chu nh d ng
StringFormat chuoidinhdang=new StringFormat();
//khai báo vùng s in trên trang
System.Drawing.RectangleF vungin = new
RectangleF(e.MarginBounds.Left,
e.MarginBounds.Top, e.MarginBounds.Width,
e.MarginBounds.Height);
c
SizeF kichthuoc = new SizeF(e.MarginBounds.Width,
e.MarginBounds.Height - printFont.GetHeight(e.Graphics));
chuoidinhdang.Trimming = StringTrimming.Word;
//S d c MeasureString l y s ký t trên m t
//dòng và s n
e.Graphics.MeasureString(stringtoPrint, printFont, kichthuoc,
chuoidinhdang,out sokytu,out sodong);
//Trích các ký t s hi n th trên m t dòng
chuoiin = stringtoPrint.Substring(0, sokytu);
e.Graphics.DrawString(chuoiin, printFont,
Brushes.Black, vungin, chuoidinhdang);
if (sokytu < stringtoPrint.Length)
{
stringtoPrint = stringtoPrint.Substring(sokytu);
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
stringtoPrint = txtVanBan.Text;
}
}

îêï
9: U KHI I DÙNG T T O

9.1. User Control

User u khi n do l p trình viên t o ra theo nhu c u s d ng riêng.


Trong nhi ng h p, l t k xong m u khi n hay m t giao
di m nhi u u khi n, và n u có nhu c u s d ng nhi u l n ho c
mang sang m t d án khác s d ng thì l p trình viên s chuy n nh u khi n hay
u khi d ng User Control.
M t cách c th u khi ct u
khi n mà Windows Form h tr s
Vi c s d ng User y s giúp ti t ki m chi phí th i gian khi thi t k
giao di p trình viên có th t o ra User Control b ng các
sau:
Thêm m i User Control ngay trong d án.
T o l p và khai báo th a k t l p Control.
T o d án m i b ng cách ch n lo i d án là Windows Control Library.

9.2. Xây d ng User Control


9.2.1. Thêm m i User Control ngay trong d án

L p trình viên thêm m i User Control trên thanh th hình 9.1.

Ch n m c Add User

Hình 9.1: Thêm User Control t th


Ho c thêm m i User Control t c a s

îêî
c 2: Nh n chu t c 1: Nh n chu t ph i
trái ch n m c Add trên tên c a d án

c 3: Nh n chu t trái
ch n m c User Control

Hình 9.2: Thêm m i User Control t c a s Solution Explorer

Sau khi l p trình viên thêm m i m t User Control vào d án thì bên c a s
Toolbox s hi n th thêm m u khi n là User Control v a thêm trong nhóm

c
thêm trong Toolbox

c
thêm trong d án

Hình 9.3: User Control m c hi n th trên c a s Toolbox

N u sau khi thêm m i User Control mà không th y hi n th trên c a s Toolbox


có th x lý b ng cách nh p ph i vào Toolbox và ch n m

îêí
c 1: Nh p chu t
ph i vào Toolbox

c 2: Nh p chu t trái
ch n m c Show All

Hình 9.4: Ch n ch n th t t c u khi n trên Toolbox

thêm User Control, l p trình viên có th s d ng User Control b ng


cách kéo User Control trên Toolbox vào form

UserControl

Hình 9.5: Giao di n form sau khi th User Control vào

Ví d : T th UserControl vào
form.

îế
p

u
khi

c 1: Nh p
t trái
vào

c 2: Kéo Button,
Label, TextBox vào form
Hình 9.7: Giao di u khi n.

c 2: Thi t l p giá tr thu u khi n trên UserControl1 trong c a


s Properties.
- label1:
Thu c tính Text
Thu c tính Font Size: 14
- label2:
Thu c tính Text
- label3:
Thu c tính Text t kh u:
- textBox1:
Thu c tính Name: txtTen
- textBox2:

îêë
Thu c tính Name: txtMatKhau
- button1:
Thu c tính Name: btnDangNhap
Thu c tính Text
- button2:
Thu c tính Name: btnThoat
Thu c tính Text
t k xong UserControl1, ti n hành biên d
UserControl1 c p nh p trình viên kéo UserControl1t
c a s Toolbox vào form s c giao di

Hình 9.8: Giao di u khi n UserControl1 th vào form

9.2.2. T o l p và khai báo th a k t l p Control

L p trình viên có th t o ra Controls riêng b ng cách t o ra m t l p m i và ch


nh th a k n m t l p c th . L p c th này có th là l p: TextBox, Label,
ComboBox, ...
Ví d 9.2: T u khi u khi n MyTextBox th a k t l p
TextBox và có thêm thu c tính m i là NewValue.
ng d n:
c 1: T o l p m i b ng cách ch n Project > Add Class hi n th c a s Add
t tên l

îêê
Hình 9.9: Giao di n c a s Add New Item

c 2: Vi t mã l nh cho l p MyTextBox
- Khai báo th a k n l p TextBox và thêm thu c tính NewValue:

using System;
Khai báo thêm
using System.Collections.Generic;
using System.Linq; không gian tên
using System.Text; Forms
using System.Windows.Forms;
namespace WindowsFormsApplication1
Th a k nl p
{
class MyTextBox:TextBox TextBox
{
string strNewValue;
public string NewValue
{
get
{
return strNewValue;
}
set
{
strNewValue = value;
}
}
c }3: Biên d , u khi n MyTextBox s xu t hi n trên c a s
}

îêé
u khi n
MyTextBox sau khi Thu c tính m i
biên d ch NewValue c a
u khi n

Hình 9.10: Giao di u khi n MyTextBox

L p trình khai báo chu i di n gi mô t ch a thu c


tính v c vi c này c n khai báo không gian tên
System.ComponentModel và thi t l p thu c tnh1 Description.
Ví d : Khai báo di n gi i cho thu u khi n MyTextBox ví
d 9.2.
- Vi t mã l nh trong l
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace WindowsFormsApplication1
{ class MyTextBox:TextBox
{ string strNewValue;
Thu c tính m i thêm
public string NewValue
{
get{ return strNewValue; }
set{ strNewValue = value; }
}
}
}

- Giao di n thu c tính :

îêè
Hình 9.11: Mô t thu c tính NewValue

9.2.3. T o d án m i b ng cách ch n lo i d án là Windows Control


Library

ng h p mu n t s d ng cho các d án khác nhau,


l p trình viên có th t d ng t p tin .DLL.
t c User Control d ng .DLL, c n t o m i d án d ng Windows
Forms Control Library: Ch n File > New Project hi n th c a s
9.12.

îêç
c 1: Ch n
lo i d án

t tên
User Control và
ch ng d n

c 3: Ch n OK
Hình 9.12: C a s New Project t o User Control d ng DLL.

Sau khi ch n OK s c giao di :

Giao di n thi t k
User Control

Hình 9.13: Giao di n User Control khi thêm

Khi thi t k xong User Control, l p trình viên c n biên d ch d t o User


Control d ng t p tin DLL. T ct c Debug. Khi mu n s
d ng User Control trong trong án nào ch c
- Trên d án mu n thêm, nh p ph i chu t trên Toolbox ch n Choose Items, c a
s Choose Toolbox Items c hi n th

îéđ
c 1: Ch n th
.NET Framwork Components

c 2: Nh n Browse và tìm
ng d n ch a t p tin
DLL v a t o

c 3: Ch n

Hình 9.14: C a s Choose Toolbox Item

User Control c hi n th trên c a s Toolbox, l p trình viên s d ng b ng cách


kéo User Control v

Hình 9.15: Thêm User Control vào form t c a s Toolbox

9.3. S d ng User Control

Sau khi thêm User Control t c a s Toolbox vào form, l p trình viên có th truy
xu t t n khi n trên User Control thông qua thu c tính Controls.
Ví d mu n gán giá tr thu u khi n
Label có tên lblNhan c a UserControl1 c n th c hi

lblNhan Xin chào các b n ;

îéï
Ví d 9.3: Xây d ng ki m tra s nguyên t , giao di n xây d ng t User Control g m
u khi n Label, TextBox nh p s nguyên

textBox1

label1

Hình 9.16: Giao di n User Control ki m tra s nguyên t

Sau khi xây d ng xong User Control, ti n hành kéo User Control vào form. Trên form
ki m tra s nh p vào có ph i s nguyên t hay không và
m thoát

Hình 9.17: Giao di n form ki m tra s nguyên t

Yêu c u: Khi nh u giá tr trong textBox1 là s nguyên t thì


hi n th trên label1 chu nguyên t u không ph i s nguyên t thì hi n th
trên label1 chu i s nguyên t
ng d n:
c 1: Xây d ng giao di u:
- Thêm m i User Control: ch n Project > Add User Control. User Control có
c thêm vào. Trên UserControl1 kéo u khi n
Label và TextBox t c a s Toolbox vào

îéî
Hình 9.18: Giao di n u UserControl1

o Thi t l p thu c tính cho label3:


Thu c tính Text m tra s nguyên t
Thu c tính Font Size: 14
o Thi t l p thu c tính cho label2:
Thu c tính Text ps
o Thi t l p thu c tính cho label1:
Thu c tính Text -------------------
Thu c tính Name: lblKetQua
o Thi t l p thu c tính textBox1:
Thu c tính Name: txtNhapSo
Khi thi t l p xong thu c tính s c giao di
- Trên form, kéo User Control v a t
9.19.

Hình 9.19: Giao di n form khi thêm UserControl1 và Button

o Thi t l p thu c tính cho button1:


Thu
Thu c tính Name: btnKiemTra
o Thi t l p thu c tính cho button2:
Thu c tính Text:

îéí
Thu c tính Name: btnThoat
Khi thi t l p xong thu c tính s c giao di
c 2: Vi t mã l u khi n
- Vi t hàm ki m tra s nguyên t :

bool kiemTraSoNguyenTo(int x)
{
bool kt = true;
for (int i = 2; i <= x / 2; i++)
if (x % i == 0)
kt = false;
return kt;
}

- S ki n Click nút btnThoat:

private void btnThoat_Click(object sender, EventArgs e)


{
Close();
}

- S ki n Click nút btnKiemTra:

private void btnKiemtra_Click(object sender, EventArgs e)


{
int gt =
int.Parse(userControl11.Controls["txtNhapSo"].Text);
if (kiemTraSoNguyenTo(gt) == true)
userControl11.Controls["lblKetQua"].Text = " là s
nguyên t ";
else
userControl11.Controls["lblKetQua"].Text =
gt.ToString() + " không là s nguyên t ";
userControl11.Controls["txtNhapSo"].Text = "";
}

9.4. Cách s d ng nh nt os thi t k giao di n

Trong th c t , có nh n t o s n h tr l p trình viên xây d ng giao di n


v im t ki m th c nl n
u xây d ng d ng t p trình viên có th d dàng s d ng
b u khi n vào c a s u khi
form. Xem cách s d ng t i m c 9.2.3.

9.5. Bài t p cu
Vi tr i dùng h c gi c hai có giao di
hình 9.20.

îé́
SplitContainer1

PanelChinh

Hình 9.20: Giao di n chính h tr i dùn h c gi b c hai


i dùng nh n chu t ch trên giao
di n chính:
- s hi n th giao di Giao di
trình b c hai hi n th trong PanelChinh là UserControl
.

UC_Giaiphuongtrin

txtA
txtB
txtC

cboSoNghie

Panel2

Hình 9.21: Giao di n hi n th c hai

- Các TextBox: txtA, txtB, txtC ch a các h s a, b, c c c


phát sinh ng u nhiên.
- : Ch a 3 l a ch i dùng l a ch n bao
g m 3 l a ch n t nghi

îéë
- V i m i s l a ch n cboSoNghiem thì s hi n th các UserControl:

o N i d ng ch n m c
hi n th UserControl .

userControl2

Hình 9.22: Giao di n hi n th UC_VoNghiem


nghi m

o N i d ng ch có m t nghi
hi n th bên trong 3.
Trong có m u khi n TextBox cho
i dùng nh p nghi p
i dùng nh ki m tra k t qu . N u k t
qu hi n th MessageBox v i n
n u nh p sai s hi n th MessageBox v i n

userControl3

Hình 9.23: Giao di n hi n th userControl3 có m t


nghi m

o N i d ng ch hi n
th
u khi n TextBox cho phép
i dùng nh p nghi p xong
i dùng nh ki m tra k t qu . N u k t qu
hi n th MessageBox v i n u
nh p sai s hi n th MessageBox v i n

îéê
userControl4

Hình 9.24: Giao di n hi n th userControl3 có hai


nghi m

- Nh ng d hi n th
trên PanelChinh mô t cách gi

Hình 9.25: Giao di n UC_Huongdan trên PanelChinh

Nh l quay v màn hình


hình 9.21.
i dùng nh ng d trên giao di n chính: thì s hi n th

îéé
10: LÀM VI C V I MÀN HÌNH VÀ H TH NG

10.1. L p SystemInformation

L p SystemInformation là l p cung c p thông tin v ng h th ng hi n


t i, n m trong không gian tên System.Windows.Forms. Các thu c tính c a l p
SystemInformation ch a thông tin v h th ng p, tên máy tính,
tình tr ng k t n i m ng, tên mi
Các thu ng dùng c a l p SystemInformation:
B ng 10.1: B ng mô t các thu c tính c a l p SystemInformation
Thu c tính Mô t
UserName Tr v tài kho i dùng s d ng trong ti n trình hi n
t i.
UserDomainName Tr v tên mi p v i tài
kho n h p l .
Network Mang hai giá tr True ho c False.
- N ng k t n i m ng.
- N u là False: Máy trong tình tr ng không k t n i
m ng.
ComputerName Tr v tên c th u hành
BootMode Tr v m t trong ba giá tr : Normal, FailSafe (SafeMode),
FailSafeWithNetwork (Safe Mode With Network).
Các giá tr này là các ch kh ng c a h u hành
Windows.
PowerStatus Tr v giá tr cho bi t tình tr ng ngu n n c a máy tính
trong tình tr ng th nào.
- PowerStatus.BatteryChargeStatus: Cho bi t tình trang
ngu n c a máy tính th nào. N u là máy tính
xách tay s c k t qu : Trong tình tr ng s c pin, pin
còn nhi n.
- PowerStatus.BatteryFullLifetime: Tr v th i gian
(tính b ng giây) c a pin có th s d y.
N c s tr v -1.
- PowerStatus.BatteryLifePercent: Hi n th % ngu n
n còn l i trong pin.
- PowerStatus.BatteryLifeRemaining: Tr v th i gian
s d ng còn l i c a pin (tính b ng giây). Tr v -1 n u

îéè
s d ng ngu n tr c ti p.
- PowerStatus.PowerLineStatus: Tr v giá tr Online
n u máy tính có c n, c l i tr v Offline.
WorkingArea Cho bi t thông tin v kích c (Width và Height) vùng làm
vi c trên màn hình.

Ví d 10.1: Vi n th thông tin máy tính có giao di

Hình 10.1: Giao di n th thông tin máy tính

ng d n:
c 1: Thi t k giao di

Hình 10.2: Giao di u form hi n th thông tin máy tính


c 2: Thi t l p giá tr thu u khi n trong c a s Properties.
- Form1:
Thu c tính Text
- label1:
Thu c tính Text
Thu c tính Font Size: 16
Thu c tính Font Style: Bold
- label2:

îéç
Thu c tính Text
- label3:
Thu c tính Name: username
- label4:
Thu c tính Text
- label5:
Thu c tính Name: userdomainname
- label6:
Thu c tính Text
- label7:
Thu c tính Name: network
- label8:
Thu c tính Text
- label9:
Thu c tính Name: computername
- label10:
Thu c tính Text
- label11:
Thu c tính Name: bootmode
- label12:
Thu c tính Text:
- label13:
Thu c tính Name: workingarea
c 3: Vi t mã l u khi n.
- S ki n Load c a form:

private void Form1_Load(object sender, EventArgs e)


{
username.Text = SystemInformation.UserName.ToString();
userdomainname.Text =
SystemInformation.UserDomainName.ToString();
if (SystemInformation.Network == true)
Network.Text = "Connected";
else
Network.Text = "Disconnected";
computername.Text =
SystemInformation.ComputerName.ToString();
bootmode.Text = SystemInformation.BootMode.ToString();
workingarea.Text =
SystemInformation.WorkingArea.ToString();
}

îèđ
10.2. L p Screen

L p Screen n m trong không gian tên System.Windows.Forms, l p Screen cung


c p các thông tin v phân gi i hi n hành c a màn hình, tên thi t b và s ng Bit
trên m t Pixel.
Các thu ng dùng c a l p Screen:
Thu c s d ng c a l p Screen là PrimaryScreen. Thông qua
PrimaryScreen, l p trình viên có th l c vùng hi n th (Bounds), kích
c vùng làm vi c, s bít trên m t pixel, tên thi t b .
B ng 10.2: B ng mô t thu c tính c a l p Screen
Thu c tính Mô t
PrimaryScreen.Bounds L y kích c hi n th trên màn hình
PrimaryScreen.WorkingArea L y c c a màn hình làm vi c
PrimaryScreen.BitsPerPixel L ys ng bit trên m t Pixel
Các c ng dùng c a l p Screen:
Ngoài cách s d ng thu c tính PrimaryScreen l c màn hình làm
vi c, l s d c GetWorkingArea.
B ng 10.3: B ng mô t c c a l p Screen
Thu c tính Mô t
GetWorkingArea Cung c p các thông tin v c c a màn hình làm
vi c
Ví d 10.2: Vi n th phân gi i màn hình, tên thi t b ,
s bít trên m 10.3.

Hình 10.3: Giao di n hi n th thông tin c a màn hình


ng d n:

îèï
c 1: Thi t k giao di u khi n Label t c a s

Hình 10.4: Giao di u form hi n th thông tin màn hình


c 2: Thi t l p giá tr thu u khi n trong c a s Properties.
- Form1:
Thu c tính Text
- label1:
Thu c tính Text
Thu c tính Font Size: 16
Thu c tính Font Style: Bold
- label2:
Thu c tính Text
- label3:
Thu c tính Name: workingarea
- label4:
Thu c tính Text
- label5:
Thu c tính Name: bits
- label6:
Thu c tính Text
- label7:
Thu c tính Name: bounds
- label8:
Thu c tính Text
- label9:

îèî
Thu c tính Name: devicename
c 3: Vi t mã l u khi n
S ki n Load c a form:
private void Form1_Load(object sender, EventArgs e)
{
Rectangle rec = Screen.GetWorkingArea(this);
workingarea.Text = "Height = " + rec.Height + " Width =
" + rec.Width;
bits.Text =
Screen.PrimaryScreen.BitsPerPixel.ToString();
bounds.Text = "Height = " +
Screen.PrimaryScreen.Bounds.Height.ToString() + " Width
= " + Screen.PrimaryScreen.Bounds.Width.ToString();
devicename.Text =
Screen.PrimaryScreen.DeviceName.ToString();
}

10.3. L p SendKeys

L p SendKeys n m trong không gian tên System.Windows.Forms, l p SendKeys


cung c p các c cho phép làm vi c v
th c c s d ng trong l c: Send, SendWait và
Flush.
Các c ng dùng c a l p SendKeys:
B ng 10.4: B ng mô t các c c a l p SendKeys
c Mô t
Send(<Mã phím>) c Send cho phép g n ng d ng
hi g im n ng d ng l p
trình viên ch vi c g i ký t ng
th c Send.
Ví d : Mu n g n ng d ng, l p trình viên
ph i vi

ng h p mu n g i t h n ng d ng, l p
trình viên s g i m t chu i ký t ng trong
c Send.
Ví d : Mu n g i t i h n ng d ng,
l p trình viên ph i vi

M t s ký t c bi , %, ^, ~, (, ), [, ], {, } n u

îèí
mu n g n ng d ng ph t trong c p d u {}.
Ví d : Mu n g i ký t n ng d ng, l p trình viên
ph i vi

Các phím d c bi t không thu c nhóm ký t

g n ng d ig ib ng.
B c mô t c th trong b ng 10.4.
G i các phím ch i b ng mã
c trong b ng 10.5.
SendWait(<Mã phím>) c hi n công vi c g i
phím ho c t h p n ng d ng hi
m khác bi t là
c SendWait s ch cho công vi cg i
khi g i phím b ng SendWait n ng d ng th c hi n
xong thì m i th c hi n các công vi
Flush() c Flush có ch qua nh ng th c thi
th c thi m t công vi c khác. C th n u
có m t ti n trình y và mu n ng d ng ngay
l p t c th c thi m t công vi c khác mà không ph i ch
ti n trình làm vi c xong thì c n g c
Flush().

B ng 10.5: B c bi t
Phím B ng mã
BACKSPACE {BACKSPACE}, {BS}, {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK]
DELETE {DELETE}, {DEL}
END {END}
ENTER {ENTER}
ESC {ESC}
HELP {HELP}
HOME {HOME}
INSERT {INSERT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}

îè́
PAGE UP {PGUP}
DOWN ARROW {DOWN}
UP ARROW {UP}
LEFT ARROW {LEFT}
RIGHT ARROW {RIGHT}
PRINT SCREEN {PRTSC}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}

B ng 10.6: B ng mã các phím ch


Phím B ng mã
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
+ {ADD}
- {SUBTRACT}
* {MULTIPLY}
/ {DIVIDE}

ng h p mu n g i m t t h
l p trình viên có th s d ng mã c a các phím Shift, Ctrl và Alt ng trong b ng
10.6.
B ng 10.7: B ng mã các phím ch
Phím B ng mã
Ctrl ^
Shift +
Alt %

îèë
Ví d 10.3: Vi có giao di 5.

Label

Hình 10.5: Giao di


Yêu c u:
- Khi nh hình 10.5 s hi n th . M i m t giây s hi n th trên
Label s .
- Khi nh hi n th trong Label s tr v 0.
- Khi s hi n th t giá tr t ng th c hi n
vi c nh thi t l p l i giá tr trong Label tr v 0.
ng d n:
c 1: Thi t k giao di u khi n Label, Timer, Button
t c as 6.

Hình 10.6: Giao di


c 2: Thi t l p giá tr thu c t u khi n.
- Form1:
Thu

îèê
Thu c tính AcceptButton: btnReset
- label1:
Thu ---
Thu c tính Name: lblHienthi
Thu c tính Font Size: 24
Thu c tính Font Style: Bold
- button1:
Thu
Thu c tính Name: btnReset
- timer1:
Thu c tính Interval: 1000
Thu c tính Enable: True
c 3: Vi t mã l u khi n
- Khai báo bi
int time = 0;
- S ki n Click c a btnReset:

private void btnReset_Click(object sender, EventArgs e)


{
time = 0;
}

- S ki n Tick c a Timer1:

private void timer1_Tick(object sender, EventArgs e)


{
lblHienThi.Text = time.ToString();
time += 1;
if (time == 60)
SendKeys.Send("{Enter}");
}

10.4. L p PowerStatus

L p PowerStatus ch a các thu c tính cung c p thông tin v tình tr ng ngu n


d ng c c bi t là l c
kh i t p trình viên có th t ng l p PowerStatus và s d ng thông
qua thu c tính PowerStatus c a l p Syste
PowerStatus pwts;
pwts = SystemInformation.PowerStatus;
string power = "";
power = pwts.BatteryChargeStatus.ToString();
power +=" " + pwts.BatteryFullLifetime.ToString();
power += " " + pwts.BatteryLifePercent.ToString();
îèé
power += " " + pwts.PowerLineStatus.ToString();
Ví d 10.4: Vi n th tình tr ng c a pin có giao di

Hình 10.7: Giao di n hi n th thông tin tình tr ng pin


ng d n:
c 1: Thi t k form có giao di u khi n
Label t Toolbox vào form.

Hình 10.8: Giao di u form hi n th thông tin tình tr ng pin


c 2: Thi t l p giá tr thu c tính trong c a s Properties.
- Form1:
Thu c tính Text
label1:
Thu c tính Name: lblHienthi
B c 3: Vi t mã l
- S ki n Load c a form:

îèè
private void Form1_Load(object sender, EventArgs e)
{

PowerStatus pwts;
pwts = SystemInformation.PowerStatus;
string power = "BatteryChargeStatus: ";
power += pwts.BatteryChargeStatus.ToString();
power += "\nBatteryFullLifetime: " +
pwts.BatteryFullLifetime.ToString();
power += "\nBatteryLifePercent: " +
pwts.BatteryLifePercent.ToString();
power += "\nBatteryLifeRemaining: " +
pwts.BatteryLifeRemaining.ToString();
power += "\nPowerLineStatus: " +
pwts.PowerLineStatus.ToString();
lblHienThi.Text = power;
}

10.5. L p Application

L p Application ch a các thu n ng d ng


ng ng d ng d ng ho c các thông tin v ng d ng.
p Application là d ng l p cô l p
khác th a k .
Các thu ng dùng c a l p Application:
B ng 10.8: B ng mô t các thu c tính c a l p Application
Thu c tính Mô t
CommonAppDataPath Tr v ng d n ng d p tin
chia s cho i dùng khác s d ng.
CompanyName Tr v tên c c khai báo trong thu c
AssemblyCompany c a t p tin AssemblyInfo.cs
CurrentCulture Cho phép thi t l p ho c l nh d ng th i
gian, ngày tháng, ngôn ng hi d ng
CurrentInputLanguage Cho phép thi t l p ho c l y thông tin v ngôn ng
s d ng
ExecutablePath Tr v ng d n c a t p tin th c thi (t
.exe).
Ví d :
C:\Users\PC_PHUC\Desktop\DuAnDauTien\DuAnDauTi
en\bin\Debug\DuAnDauTien.exe
ProductName Tr v tên c a ng d c khai báo trong trong thu c

îèç
tính AssemblyProduct c a t p tin AssemblyInfo.cs
ProductVersion Tr v phiên b n c a ng d c khai báo trong trong
thu c tính AssemblyVersion c a t p tin AssemblyInfo.cs
StartupPath Tr v ng d n ch a t p tin th ng d n này
không ch a tên c a t p tin th c thi.
Ví d :
C:\Users\PC_PHUC\Desktop\DuAnDauTien\DuAnDauTi
en\bin\Debug
UserAppDataPath thu c tính CommonAppDataPath,
UserAppDataPath Tr v ng d ng d
tr chia s i dùng khác s d ng.
Các c ng dùng c a l p Application:
B ng 10.9: B ng mô t các c c a l p Application
c Mô t
Exit() ng d ng.
ExitThread() n trình. M t ng d ng có th có nhi u ti n
trình ch y song c ExitThread() giúp
n trình hi n t i.
DoEvents() Có ch c Flush c a l p
SendKeys. có ch qua nh ng th
ch th c thi m t công vi c khác. C th n u có m t
ti n trình y và mu n ng d ng ngay l p t c
th c thi m t công vi c khác mà không ph i ch ti n
trình làm vi c xong thì c n g c DoEvents().
Restart() c Restart() th c hi n hai công vi
ng d ng l kh ng ng d ng
Run() h c Run() giúp kh ng m ng trong
ng d ng.

10.6. L p Clipboard

L p Clipboard cung c i m t vùng nh t d li ng


th tr c cho phép th c hi n công vi c sao chép d li u t
này và dán d li nm thông qua vùng nh t m mà Clipboard cung c p.

îçđ
Các c ng dùng c a l p Clipboard:
B ng 10.10: B ng mô t các c c a l p Clipboard
c Mô t
Clear() Cho phép xóa d li a trong Clipboard
SetText(<Chu i>) i> vào trong Clipboard
GetText() Tr v chu trong Clipboard
ContraintText() Tr v m t trong hai giá tr True ho c False.
- N u là True: Trong Clipboard có n i dung
- N u là False: Trong Clipboard không ch a m t
chu i nào c .
SetImage(<Image>) hình nh vào Clipboard
GetImage() Tr v trong Clipboart
ContraintsImage() Tr v m t trong hai giá tr True ho c False.
- N u là True: Trong Clipboard có ch a hình nh
- N u là False: Trong Clipboard không ch a hình
nh.
SetData(<Object>) ng <Object> vào Clipboard
GetData() Tr v trong Clipboard
ContainsData() Tr v m t trong hai giá tr True ho c False.
- N u là True: Trong Clipboard có ch ng
- N u là False: Trong Clipboard không ch i
ng

Ví d 10.5: Vi c hi n công vi n t hai TextBox.


u khi n: TextBox, Label, Button, OpenFileDialog. Giao di n

Hình 10.9: Giao di n

îçï
Yêu c u:
- Browse: Giúp ch n t p tin .txt trong h th ng và hi n th n i dung t p tin trên
TextBox txt1.
- SetText: Sao chép n n trong TextBox txt1 vào Clipboard
- GetText: Chép n n trong Clipboard vào TextBox txt2
- Clear: Xóa d li
-
ng d n:
c 1: Thi t k giao di u khi n Label, TextBox,
Button, OpenFileDialog t c a s Toolbox vào

TextBox1 TextBox2

Hình 10.10: Giao di n

c 2: Thi t l p giá tr thu u khi n


- Form1:
Thu
Thu c tính Size: 580, 299
- label1:
Thu
- label2:
Thu
- label3:
Thu
- TextBox1:
Thu c tính Multiline: True

îçî
Thu c tính Name: txt1
Thu c tính Size: 262, 126
- TextBox2:
Thu c tính Multiline: True
Thu c tính Name: txt2
Thu c tính Size: 262, 126
- button1:
Thu
Thu c tính Name: browse
- button2:
Thu
Thu c tính Name: settext
- button3:
Thu
Thu c tính Name: gettext
- button4:
Thu
Thu c tính Name: clear
- button5:
Thu c tính Text:
Thu c tính Name: exit
- openFileDialog1:
Thu File Text|*.txt
c 3: Vi t mã l u khi n
- S ki n Click c a Button SetText:

private void settext_Click(object sender, EventArgs e)


{
Clipboard.SetText(txt1.Text);
}

- S ki n Click c a Button Browse:


private void browse_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string tentaptin = openFileDialog1.FileName;
StreamReader rd = new StreamReader(tentaptin);
txt1.Text = rd.ReadToEnd();
rd.Close();
}
}
îçí
- S ki n Click c a Button GetText:

private void gettext_Click(object sender, EventArgs e)


{
txt2.Text = Clipboard.GetText();
}

- S ki n Click c a Button Clear:

private void clear_Click(object sender, EventArgs e)


{
Clipboard.Clear();
}

- S ki n Click c a Button Exit:


private void exit_Click(object sender, EventArgs e)
{
Application.Exit();
}

10.7. L p Cursors

L p Cursors cung c p tâp các con tr có hình d ng khác nhau s d ng trong ng


d ng Windows Foms ng 10.10 ng, khi ng d ng trong nh ng tình
tr ng khác nhau thì l p trình trình viên s i tr ng thái c a con tr cho phù h p
i dùng d nh n bi t.
B ng 10.11: B ng mô t các thu ng dùng c a l p Clipboard
Thu c tính l p Cursors Mô t
Cursors.AppStarting

Cursors.Default

Cursors.No

Cursors.SizeAll

Cursors.SizeNESW

Cursors.SizeNS

Cursors.SizeNWSE

Cursors.SizeWE
Cursors.WaitCursor

îḉ
Cursors.Hand

Cursors.Help

Cursors.NoMove2D
Cursors.NoMoveHoriz
Cursors.NoMoveVert
Cursors.PanEast
Cursors.PanNE
Cursors.PanNorth
Cursors.PanNW
Cursors.PanSE
Cursors.PanSouth

Ví d n hình 10. 9. Thi t l p thu c tính Cursor sao cho


i dùng rê chu t vào TextBox1 và TextBox2 thì con tr s hi n th d ng No

ng d n:
- Vi t mã l nh cho s khi n MouseMove c a
private void txt1_MouseMove(object sender, MouseEventArgs e)
{
Cursor.Current = Cursors.No;
}

- Vi t mã l nh cho s khi n MouseMove c a TextBox2


private void txt2_MouseMove(object sender, MouseEventArgs e)
{
Cursor.Current = Cursors.No;
}

îçë
11: BÀI T P T NG H P
Câu 1:
Vi c nghi m giúp h c ti
- Khi kh hi n th

Hình 11.1: Form p

- Nh t tài kho n m p vào


trình tr c nghi

o N p sai thi s hi
nh
o Nh hoàn t t vi
s p tin có tên TaiKhoan .
- T p v i tài kho n
admin và m t kh u tài kho n là admin thì s hi n th form o câu h i tr c
nghi m 11.3.

îçê
Hình 11.3: Giao di n form t o câu h i

o i dùng có th gõ n i dung câu h i và n i dung câu tr l ng th i ch n


ng v
o Nh thêm câu h i vào t p tin có tên Cauhoi.txt.
- T p v i tài kho n
khác admin và t n t i trong t p tin Taikhoan.txt thì s hi n th Ch n s câu
h i tr c nghi m 11.4. N u tài kho p không có trong
Takhoan.txt thì hi

Hình 11.4: Giao di n form l a ch n s câu h i tr c nghi m và th i gian


làm bài

o n xong s câu h i tr c nghi m và th i gian làm bài thì


nh n Enter s hi n th c form làm bài tr c nghi

îçé
Hình 11.5: Giao di n form làm bài tr c nghi m ti ng anh

o Bên tay trái giao di n 11.5 s hi n th các Button, s ng


v is ng câu h i tr c nghi n. Khi nh n vào m t Button b t k thì
s hi n th lên n i dung câu h i, câu h c l y t t p tin Cauhoi.txt.
o Trên giao di n làm bài có thanh ProgressBar s d mô t th i gian làm
i dùng ch n. N u h t th i gian s t ng n p bài.
o i dùng có th n c khi th i gian k t thúc b ng cách nh n Button
hi n th giao di cho bi t k t qu làm
bài c i dùng.

Hình 11.6: K t qu làm bài c i dùng

îçè
Câu 2: Vi t
Th i gian ph i hoàn thành
s c n tìm

t m d ng

Thoát

i tìm s c n
tìm trong danh sách các s

Hình 11.7: Giao di

- :
o Ch n ch
hi n th 100 s v trí
ng u nhiên b t k ph i tìm ki m s c n tìm
trong danh sách các s phát sinh các v trí ng
nh n vào s l p t c b chuy n
sang ch c ch c n a).
Th i gian ch m nh là 10 phút, n u h t 10 phút mà
c t t c 100 s c.
Ch t t i dùng s ch n s ch s mu n tìm, s ng
s trên m t hàng và th i gian ph i hoàn thành vi c tìm ki m. Giao
di 11.8.

îçç
Hình 11.8: Giao di t ch n

o Ch n s u ch hi n th
p tên vào.

Hình 11.9: Nh p tên c a hai

Tu n t nh t s tìm s c, th tìm ra
m t s là 5 giây, n u h nh
ra s chuy hai.
V im il cs ms c

íđđ
m s hai

Câu 3: Vi

lblKQ

lblSoMot lblSoHai

btnDung btnSai

ProgressBar1 lblKetQua
Hình 11.11: Giao di n
Yêu c u:

íđï
- phát sinh ng u nhiên các s nguyên trong Label: lblSoMot,
lblSoHai, lblKQ.
- xem k t qu phát sinh bi u th c và ch n bi u th
sai.
o N t ch
ho c nh
o N u sai thì dùng chu t ch c
nh
- M i l n ch c c ng m m vào lblKetQua và ti p t c phát
sinh ng u nhiên 1 bi u th c m i. N u ch n sai s b .
- Th tính toán và ch t bi u th c th
hi n thanh ProgressBar.

íđî
TÀI LI U THAM KH O

[1] Ph m H u Khang , L p trình Windows Forms, t p 2, NXB ng và Xã h i,


2008.
[2] c H i, L p trình Windows v i C#.NET, NXB
ng và Xã h i, 2002.
[3] Mathew A. Stoecker, Steve Stein (2009) - EXAM 70-505 Windows Forms
Application Development - Training Kit, Microsoft Press, 2009.
[4] http://123doc.vn/document/917110-tai-lieu-huong-dan-lap-trinh-vb-net-chuong-18-
lam-viec-voi-may-in-pdf.htm?page=6
[5] http://msdn.microsoft.com/en-us/library/ms123401.aspx
[6]http://chienuit.wordpress.com/2010/10/11/parse-tryparse-convert-v-casting-p-
ki%E1%BB%83u/
[7] http://csharpvn.com/BaiViet_DSBaiViet.aspx?Id=750&Page=2
[8] http://doc.edu.vn/tai-lieu/bai-giang-lap-trinh-windows-form-59158/
[9] http://z14.invisionfree.com/dotnet/ar/t6.htm
[10]http://diendan.congdongcviet.com/threads/t18339::application-doevents-tren-
csharp-co-y-nghia-gi.cpp
[11] http://hoccungdoanhnghiep.com/tai-lieu/bai-7-dieu-khien-treeview
[12] http://info24h.vn/lap-trinh-xu-ly-giao-dien-trong-winform-voi-c-183.html
[13] http://orchird.wordpress.com/2009/03/30/java/
[14] http://support.microsoft.com/kb/821777/vi-vn
[15] http://tailieu.tv/tai-lieu/chuyen-de-2-cong-nghenet-6964/
[16] http://teachyourself.vn/tim-hieu-cac-dieu-khien-co-ban/
[17] http://text.123doc.vn/document/2993-tai-lieu-ve-cong-nghe-net.htm
[18] http://text.123doc.vn/document/703165-tai-lieu-ve-cong-nghe-textbox.htm
[19] http://text.123doc.vn/document/702839-dieu-khien-dac-biet.htm
[20]http://text.123doc.vn/document/703163-tai-lieu-ve-cong-nghe-mot-so-dieu-khien-
xay-dung-menu.htm
[21]http://thuthuatso1.info/@forum/threads/su-dung-control-treeview-trong-
c.14869.html
[22] http://thuthuatso1.info/@forum/threads/bai-19-c-color-dialog-box.14986.html

íđí
[23] http://voer.edu.vn/c/ung-dung-windows-voi-windows-form/9f00d32d/43570247
[24] http://www.goclaptrinh.com/cach-chuyen-doi-kieu-du-lieu-trong-c.html
[25] http://www.doko.vn/tai-lieu/bai-giang-ve-lap-trinh-c-157004
[26] http://www.youtube.com/watch?v=UTuI-eWJQUY
[27] http://www.c10mt.com/2011/09/lab-lttq-bai54.html
[28] http://www.hoccungdoanhnghiep.com/tai-lieu/bai-6-dieu-khien-listview
[29] http://www.trithucsangtao.vn/tu-hoc-winform-c-qua-vi-du-listview-449.html
[30] http://www.hoccungdoanhnghiep.vn/tai-lieu/bai-2-dieu-khien-datetimepicker
[31] http://www.codeproject.com/Articles/20050/FireFox-like-Tab-Control
[32] http://www.thuvien-it.net/home/tinhoc/view.asp?threadid=730
[33] http://www.trithucsangtao.vn/tu-hoc-winform-c-qua-vi-du-listview-449.html
[34] http://www.dotnetperls.com/messagebox-show
[35] http://www.slideshare.net/hareesseni/chuong-3-windows-forms
[36] http://www.ddth.com/showthread.php/51653-What-s-Application-DoEventS()
[37]http://www.expressmagazine.net/development/717/su-dung-control-listview-
trong-c-using-listview-control-c
[38]http://www.trithucsangtao.vn/tu-hoc-winform-c-qua-vi-du-treeview-listview-
423.html
[39]http://www.codeproject.com/Articles/91387/Painting-Your-Own-Tabs-Second-
Edition

íđ́

You might also like