Sunteți pe pagina 1din 14

CUPRINS

Introducere ................................................................................... 7
De ce aceast carte? ........................................................................ 8
Eficien maxim ............................................................................ 8
Scurt Istoric ..................................................................................... 9
De ce C#? ........................................................................................ 9

Capitolul I : S ne pregtim .................................................... 11


.NET .............................................................................................. 12
Spaii de nume, clase, metode ....................................................... 12
Visual Studio ................................................................................. 15
New project ................................................................................... 16

Capitolul II: Prima aplicaie ................................................... 25


ToolBox, proprieti i evenimente ............................................... 26
MessageBox .................................................................................. 30
Prima aplicaie............................................................................... 36

Capitolul III: Toolbox ............................................................... 39


Box ................................................................................................ 40
CheckBox ....................................................................................................... 40
CheckedListBox ............................................................................................. 43
ComboBox ..................................................................................................... 44
PictureBox ..................................................................................................... 47
TextBox .......................................................................................................... 50

Label, ProgressBar i Radio Button .............................................. 54


Label .............................................................................................................. 54
ProgressBar ................................................................................................... 57
RadioButton ................................................................................................... 60
3

Containers ..................................................................................... 64
GroupBox ...................................................................................................... 64
Panel.............................................................................................................. 65
SplitContainer................................................................................................ 65
TabControl .................................................................................................... 66

Menus & Toolbars ........................................................................ 67


ContextMenuStrip .......................................................................................... 67
MenuStrip ...................................................................................................... 71
StatusStrip ..................................................................................................... 74

Timer ............................................................................................. 75
Dialog ............................................................................................ 79
OpenFileDialog ............................................................................................. 79
SaveFileDialog .............................................................................................. 83

Capitolul IV : Elemente de proiect ....................................... 87


Proprietiile i evenimentele unei forme ..................................... 88
Add new item... ......................................................................... 91
AboutBox ....................................................................................................... 93
Bitmap File .................................................................................................... 96
Class .............................................................................................................. 96
Code File ....................................................................................................... 97
Cursor file...................................................................................................... 97
Custom Control ............................................................................................. 99
Icon File ........................................................................................................ 99
Resource File ............................................................................................... 101
Setting File .................................................................................................. 103
Text File ....................................................................................................... 103
User Control ................................................................................................ 105
Windows Form............................................................................................. 106

Comunicarea ntre forme ............................................................ 110

Capitolul V Linii, forme geometrice i alte elemente de


grafic ......................................................................................... 117
Clasa Graphics ............................................................................ 118
4

Clasele Pen i Brush .................................................................... 118


Linii, forme geometrice i alte elemente de grafic .................... 119
Linie ............................................................................................................. 121
ir de linii .................................................................................................... 123
Poligon ........................................................................................................ 125
Dreptunghi................................................................................................... 127
Elips ........................................................................................................... 128
Sector de elips............................................................................................ 130
Arc ............................................................................................................... 132

Sfaturi i trucuri ..................................................................... 135


Anexa 1 ...................................................................................... 139
Net Speed .................................................................................... 139

Anexa 2 ...................................................................................... 149


Cpu Meter ................................................................................... 149

BIBLIOGRAFIE ......................................................................... 153

Introducere
Ci dintre voi nu v-a-i dori s putei trece dincolo de bariera cobort de
tainele programrii, s putei intra sub interfaa programelor pe care le utilizai zi
de zi, s le intelegei, s le manipulai i s creai chiar voi propriile softuri, n
funcie de dorinele i necesitiile dumneavoastr? ntr-o singura idee, s putei
folosi calculatorul personal n adevratul sens al cuvntului. Vei rmane uimii ct
de mic este pragul dintre calculator - un simplu obiect pe care l folosii pentru a
afla informaii sau pentru a v ocupa timpul liber i calculator - o fereastr de
oportuniti n care orice gnd, idee, dorin poate fi materializat printr-un simplu
cod de program.
Ci dintre voi nu v-ai dorit s pornii pe acest drum, s nvai i s
creai, ca ntr-un final s devenii buni programatori, dar v-a-i lovit de obstacole
puse chiar de crile de specialitate, care n ciuda faptului c au scop didactic,
conin explicaii i formulri pompoase i fr prea mult sens pentru voi, create
de programatori de renume mondial. Se pare ca acetia au neglijat faptul c textele
lor se adreseaz persoanelor aflate n stadiul de iniiere, fr prea multe cunotine
n domeniu, pentru care o explicaie simpl i modest este mult mai semnificativ
i mai atrgtoare dect una complicat, de zeci de rnduri, n care se folosesc
numai termeni tiinifici, majoritatea ne mai auzii i ne mai folosii pn n acel
moment.
Aceast carte i propune s renune la ideile greoaie i de neneles i s
aduc o abordare nou, deschis, care s apropie cititorul de lumea programrii i
s i stimuleze dorina de a asimila informaii noi, de a nva i, n sfrit, de a
programa cu C#.

De ce aceast carte?
Ca muli tineri din ziua de azi, m-am hotart i eu ntr-o zi frumoasa de
primvar, s nv s creez programe ca cele pe care le folosesc zi de zi. Dup o
lunga analiz i cteva zile de cutri i documentri, am decis c limbajul C# este
cel mai accesibil, cel mai bun i cel mai uor de neles, ntr-un cuvnt cel mai
potrivit limbaj de programare pentru acest scop. Astfel, am reuit s strng un
numr mare de cri de specialitate, toate promindu-mi acelai lucru: s ma
nvee s programez cu C#.
nc de la primele capitole (capitole ce ar trebui s fie atrgtoare i uor
de neles) am avut mereu impresia c deschid un dicionar cu o limb strin
necunoscut, n care aproape toate traducerile i explicaiile lipseau. n acele
momente, de la sentimentul de speran c urmtoarea carte m va stimula i mi
va reaprinde dorina de a cunoate, am ajuns la rutin, la dezamgire i ntr-un final
am ajuns chiar n punctul de a dori s renun. Cu greutate, am trecut peste aceea
dezamgire i ncet, am reuit s pun cap la cap informaiile adunate din cri i
astfel s fac n sfrit primii pai cu C#. Pentru mine acesta a nsemnat trecerea la
nivelul al doilea n drumul devenirii unui programator.
ns, aceast trecere nu a fost de ajuns. Vznd c majoritatea autorilor
crilor din acest domeniu sunt oameni de tiin i distini profesori universitari,
c limbajul dumnealor nu este cel mai apropiat de limbajul tinerilor, studenilor i
chiar cel al elevilor dornici de cunoatere, am hotrt, student fiind, s scriu aceast
carte n spiritul n care mi-a fi dorit eu s gsesc un manual nu cu mult timp n
urm.

Eficien maxim
Dac v ateptai s nvai C# doar citind aceast carte, vei fi
dezamgii de rezultat. Dup cum tii, n acest domeniu nimic nu se poate face
fr efort, fr a porni un mediu de programare i a tasta chiar dumneavoastr
codurile de program pentru a le testa ulterior.
Fiecare capitol este uor de citit i de neles ns este recomandat ca cel
putin jumtate din timpul acordat de dumneavoastr studiului crii s fie destinat
8

practicii. Chiar dac vi se pare prea mult timp v garantez c rezultatele vor fi peste
ateptri.
Din aceste motive cartea conine foarte multe exemple (coduri surs), pe
care v recomand s le scriei i s le rescriei (copy/paste nu v va ajuta la nimic),
s le testai i s le modificai dup bunul plac.

Scurt Istoric
Ar fi neobinuit ca o carte dedicat unui limbaj de programare s nu
prezinte mcar un scurt istoric despre acesta. Aa c, cu riscul de a plictisi, voi
spune cteva idei despre apariia i dezvoltarea tnrului limbaj C#.
Aprut ca variant beta n iunie 2000 i apoi ca variant oficial n
primvara anului 2002, C# (se pronun see sharp) este un limbaj relativ tnr.
C# a fost creat de o echip de programatori i oameni de tiin de la
Microsoft, echip din care face parte i inginerul Anders Hejlsberg, cel care a
participat la crearea altor produse i limbaje celebre cum ar fi: Borland Turbo C++
i Borland Delphi. Scopul acestei echipe a fost crearea unui limbaj de programare
care s colecteze tot ce este mai bun de la limbajele deja existente i abia apoi s
adauge concepte noi pentru a crea ceva extraordinar.
Dup cum se vede n prezent, scopul celor de la Microsoft a fost atins, C#
devenind unul dintre cele mai puternice, cele mai flexibile i cele mai utilizate
limbaje de programare.

De ce C#?

Flexibil

n C# aproape c nu exist limite pentru ceea ce putei face. Cu puin


munc i imaginaie, putei crea de la cele mai simple programe de Windows pn
la cele mai complexe aplicaii Web.

Uor de folosit

Dac avei un minim de cunotine despre limbajele C, C++ i despre


programarea orientat pe obiecte, vei observa ct de uoare i ct de logice sunt
funciile existente n C#.
De exemplu pentru a afia mesajul Salut ntr-o fereastr de mesaj, tot ce
trebuie s facei este s scriei funcia urmtoare:
MessageBox.Show("Salut");

Puternic

Dup cum am spus n paginile anterioare, C# este un limbaj de


programare ce a preluat multe din trasaturile bune ale limbajelor existente n
perioada cnd acesta a fost creat.

10

Capitolul I : S ne pregtim
n cele ce urmeaz am presupus c dumneavoastr avei cunotine
minime de baz legate de C sau C++ i de programarea orientat pe obiecte. n caz
contrar nsuii-v mai nti aceste cunotinte i doar dup aceea ndreptai-v
atenia ctre C# deoarece majoritatea crilor dedicate acestui limbaj pleac de la
nivelul de baz.
Dei poate fi plictisitor pentru unii dintre dumneavoastr, acest capitol
conine informaii necesare (s le zicem pregtitoare) pentru a putea apoi s crem
n sfrit primul nostru program.
Am ncercat s pstrez acest capitol ct mai scurt i mai simplu, dar s
conin totui, toate informaiile necesare pentru a pune bazele cunotinelor
dumneavoastr de programare cu C#.
Obiective:

nelegerea conceptului de .Net;


nelegerea conceptelor: Namespace(spaii de nume), clase, metode;
Crearea unui nou proiect;
nelegerea componentelor unui proiect.
Subcapitole:

1.
2.
3.
4.

.Net
Spaii de nume, clase, metode
Visual Studio
New Project

11

.NET
.NET este o platforma software, realizat la Microsoft, destinat
dezvoltrii de aplicaii. Cele mai importante caracteristici ale acestei platforme sunt
urmtoarele:

Programatorii au la dispoziie o serie de limbaje de programare de nivel


nalt din care pot alege. Printre limbajele puse la dispoziie de Microsoft se
numr i C#, fiind dezvoltat o dat cu platforma .NET.

Pot fi dezvoltate o varietate larg de aplicaii, de la programe pentru desktop


pn la aplicaii pentru dispozitive mobile, aplicaii i servicii web sau
servicii Windows, de la programe izolate i pn la sisteme distribuite de
dimensiuni mari.

Mediul de execuie este strict controlat de un motor de execuie, care ofer o


serie de faciliti ce ridic mult nivelul de calitate a aplicaiilor
(managementul automat al memoriei i securitatea fiind primele dou care
ies n eviden).

Spaii de nume, clase, metode


Cnd dorii s creai un program va trebui mai nti s creai un proiect.
Fiecare proiect pe care l vei crea va fi mprit pe mai multe nivele:

12

I.

Spaii de nume(Namespace)

Imaginai-v aceste nivele ca fiind datele (adresa) de pe un colet. Cnd


dorii s trimitei coletul vei scrie pe spatele lui destinaia: oraul, strada i
numrul (presupunnd c vei trimite coletul n ar). n funcie de aceste date,
coletul dumneavoastr va fi trimis la adresa specificat.
Asemntor se ntmpl i n proiectul dumneavoastr. Putei s privii un
spaiu de nume (in continuare vom folosi doar denumirea de namespace pentru
spaiu de nume) ca pe oraul scris n adresa de destinaie. Acesta reprezint primul
nivel n care coletul dumneavoastr va fi pus n maina ce va transporta marfa n
oraul indicat.
Un namespace conine una sau mai multe clase care conin la la rndul lor
una sau mai multe metode.
Fie urmtoarele 2 namespace-uri:
namespace Name1
{
...
public class Class1
{
...
public void ShowThat()
{
....
}
...
}
...
}
i
namespace Name2
{
...
public class Class2
{
...
public void ShowThat()
{

13

....
}
...
}
...
}

Pentru a folosi metoda ShowThat () din clasa Class1 din namespace-ul


Name1 va trebui sa specificai mai nti c dorii s folosii acel namespace (la
nceputul codului):
using Name1;

i apoi s apelai metoda (n interiorul codului):


Name1.class1.ShowThat();

V ntrebai probabil de ce am scris dou namespace-uri i nu unul. S


presupunem c n programul dumneavoastr avei nevoie la un moment dat de
metoda ShowThat() din Name1 i apoi, dup cteva lini de cod (nu conteaz cte
sau unde dorii s apelai aceste metode att timp ct sunt n acelai proiect), avei
nevoie i de metoda ShowThat() din Name2. n acest caz vei scrie n codul
dumneavoastr urmtoarele:
{
...
Name1.class1.ShowThat();
...
Name2.class2.ShowThat();
...
}

Aceasta este principalul motiv pentru care se folosesc aceste nivele:


previne confuzia ntre variabilele, funciile i clasele cu aceleai nume i este cu
att mai folositoare cu ct codul dumneavoastr este mai mare.
II.

Clase

Mai inei minte asemnarea fcut mai nainte dintre nivelele


dintr-un proiect i adresa de pe un colet? Daca da, va putei imagina acum o clas
ca fiind strada din adresa dat. n acest moment coletul se afl deja la oficiul potal

14

din oraul destinaie i este preluat de potaul care corespunde strzii


dumneavoastr.
Un namespace conine, de regul, mai multe clase. Aceste clase reprezint
n general obiecte i conin metode i caracteristici specifice. Presupunnd c
dumneavoastr avei cunotine legate de programarea orientat pe obiecte, acest
aspect ar trebui s fie bine neles.

III.

Metode

Continund povestea noastr cu adresele i coletul, am ajuns la ultimul


nivel i anume nivelul numrului casei de pe strada dat n adres. n acest moment
coletul este n geanta potaului aflat pe strada respectiv. Destinatarul primete
coletul i astfel am trecut prin toate cele trei nivele i am reuit s trimitem
pachetul (ce reprezint codul de instruciune) unde am dorit. Atenie ns, deoarece
am dorit s fac o legtur ntre aceste nivele i un aspect legat de viaa de zi cu zi
(sistemul potal), comparaia este umpic forat: O metod nu este un obiect, este
modul n care se interacioneaz cu clasa i cu instane ale ei.
O metod conine codul surs format din instruciuni care spun
calculatorului dumneavoastr ce sa fac.

Visual Studio
Toate explicaiile din aceast carte au fost scrise pentru mediile de
programare Microsoft Visual Studio.
Toate exemplele din aceast carte sunt corecte i au fost verificate cu
Microsoft Visual Studio 2008 Express Edition, care poate fi descrcat gratuit de pe
internet (adresa: http://www.microsoft.com/express/download/) . Variantele
professional i altle se pot achiziiona contra cost.

15

New project
De fiecare dat cnd vei ncepe scrierea unui nou program vei creea un
nou proiect. n Visual Studio aceasta se face astfel:
File->New->Project
Dup ce v va aprea fereastra New Project introducei numele proiectului
i verificai ca tipul dumneavoastr de proiect (Project type:) s fie Visual C# - >
Windows iar ablonul (Templates:) s fie selectat cel cu denumirea :Windows
Application sau Windows Form Application.

Felicitri! Ai creat primul dumneavoastr proiect. Presupunem c acesta


se numete WindowsApplication89.

16