Professional Documents
Culture Documents
C-Sharp Tehnike Vizuelnog Programiranja
C-Sharp Tehnike Vizuelnog Programiranja
Ivan Dunerski
Tehnike vizuelnog
programiranja
C#
Recenzenti
Slobodanka eni
Izdava
Via elektrotehnika kola Beograd
Za izdavaa
Dragoljub Martinovi
Dizajn
Sneana Trstenjak
Lektor i korektor
Anelka Kovaevi
Predgovor
Ova knjiga namenjena je studentima Vie elektrotehnike kole u
Beogradu, kao prirunik za predmet Tehnike vizuelnog programiranja.
Pokazane su tehnike i pravci u razvoju novih aplikacija kroz veliki
broj primera. Svi primeri raeni su na razvojnom okruenju - Microsoft
VisualStudio.NET.
Knjiga moe posluiti svima koji ele da naue osnovne tehnike rada
na .NET platformi, odnosno C# programskog jezika. Gradivo je prilagoeno
itaocima koji vladaju osnovama OOP-a, pa je naglasak na vizuelnom
programiranju.
Autori
SADRAJ
2.
3.
Text ............................................................................................................................... 35
Visible........................................................................................................................... 36
Enabled......................................................................................................................... 36
Fokus kontrole i aktivan prozor.................................................................................... 36
TabIndex i TabStop....................................................................................................... 37
Programsko kreiranje kontrola .......................................................................................... 38
Postavljanje kontrole u fokus ....................................................................................... 42
4.
DOGAAJI............................................................................43
Spy++ ................................................................................................................................ 43
Delegati ............................................................................................................................. 45
Dogaaji i IDE .................................................................................................................. 47
Dogaaji vezani za forme i kontrole ................................................................................. 51
Paint ............................................................................................................................. 52
Resize............................................................................................................................ 52
Dogaaji tastature......................................................................................................... 52
Dogaaji mia............................................................................................................... 53
5.
FORMA .................................................................................55
6.
Dugme ............................................................................................................................... 67
Text ............................................................................................................................... 67
TextAlign ...................................................................................................................... 68
DialogResult................................................................................................................. 68
Image, ImageAlign, ImageList, ImageIndex................................................................. 68
FlatStyle........................................................................................................................ 69
Radio-dugme ..................................................................................................................... 69
Checked ........................................................................................................................ 70
CheckAlign ................................................................................................................... 70
Appearance................................................................................................................... 70
Polje za potvrdu................................................................................................................. 71
Checked ........................................................................................................................ 72
Alignment...................................................................................................................... 72
CheckState .................................................................................................................... 73
ThreeState..................................................................................................................... 73
Appearance................................................................................................................... 74
TEKST kontrole ................................................................................................................ 74
Labela ........................................................................................................................... 74
TextBox ........................................................................................................................ 75
Kombo polje ................................................................................................................. 75
7.
8.
Forma ................................................................................................................................ 89
Panel.................................................................................................................................. 89
Osobine panel kontrole................................................................................................. 89
GroupBox.......................................................................................................................... 90
Stranice svojstava.............................................................................................................. 90
Kontrola Property Sheet ............................................................................................... 93
Dock ............................................................................................................................. 95
ImageList ...................................................................................................................... 96
MultiLine ...................................................................................................................... 97
Alignment...................................................................................................................... 99
Appearance................................................................................................................... 99
Text ............................................................................................................................. 100
9.
DIJALOZI ..............................................................................101
10.
MENIJI.............................................................................107
11.
TOOLBAR.......................................................................117
12.
13.
14.
WEB-SERVISI .................................................................149
15.
ODBC.............................................................................................................................. 160
Data Source Name .......................................................................................................... 160
Konekcija ........................................................................................................................ 162
DataAdapter.................................................................................................................... 166
DataSet............................................................................................................................ 170
DataGrid ......................................................................................................................... 173
Pristupanje podacima objekta DataSet ....................................................................... 173
Promena podataka u bazi............................................................................................ 174
Objekti Command i DataReader ................................................................................ 175
16.
17.
LITERATURA................................................................187
PRIMERI..........................................................................................189
Ovaj
stil
programiranja
ubrzava
stvaranje
kolekcije
specifinog
koda
na
jednom
mestu,
nasuprot
dosadanjem stilu gde se stvaraju redundantne kopije na
mnogo mesta. (Redundantnost je pojam koji se koristi u
tehnici kada je re o nepotrebnom viku ili preobimnosti.) Ovo
svakako poveava efikasnost i opredeljuje za ovakve aplikacije;
TVP C#
C# i Java
TVP C#
C# u odnosu na C++
Mada su slinosti sa VB i Javom oigledne, ipak C# je najblii C++.
Hello World
Po dobrom starom nepisanom pravilu, svi primeri poinju tradicionalnim
programom Hello World. U ovom poglavlju videemo ta nam je sve
potrebno da bismo krenuli sa programiranjem u C#.
TVP C#
using System;
public class HelloWorld
{
public static void Main()
{
// komentar u jednoj liniji
/*
komentar
vise
linija
*/
Console.WriteLine( "Hello World! );
}
}
Komentari
Iz koda se vidi i nain na koji mogu da se piu komentari u C#.
Sintaksa je uobiajena i za C++. Komentari se dele na linijske i oni na
poetku imaju dve kose crte. Druga vrsta komentara se protee izmeu
znakova /* odnosno */ i prenosi se na vie linija.
Mala/velika slova
C# pravi razliku izmeu malih i velikih slova - case-sensitive. Ako bi u
prethodnom primeru napisali console (malim poetnim slovom)
umesto Console (velikim poetnim slovom) program se ne bi preveo,
a prevodilac bi prijavio greku.
Napomena: Odvajanje
programskom jeziku C.
naredbi
kodu
je
identino
kao
Umesto
System.Console.WriteLine(.)
Metod Main
U klasi HelloWorld nalazi se metod Main. Obratite panju da je prvo
slovo veliko ime se pravi razlika u odnosu na C funkciju main. Ova
funkcija je deklarisana kao static i public. Program moe imati samo
jednu ulaznu taku (entry point) i ona se ostvaruje upravo preko ovog
metoda.
TVP C#
helloworld.exe
Pokretanje ovog programa vri se ako otkucate samo ime ( sa ili bez
ekstenzije ) a zatim pritisnete ENTER.
Kompajliranje iz okruenja je jednostavno i radiemo ga u narednim
primerima.
6. Potvrdite pritiskom na OK
Uvod u Visual C#
2.
TVP C#
10
Uvod u Visual C#
i vraate
Postoji vie tipova kontrole toolbar. Ako pored njega kliknete desnim
dugmetom mia videete spisak sa ozaenim objektima toolbar koji su
aktivni. Sliice koje vidite pripadaju tzv. standardnom toolbar objektu.
Bar nazivamo posebnim prozorom, koji je deo aplikacije i na kome se
uobiajeno nalazi neka paleta alatki. Takoe, uobiajeno je da se ta
paleta lepi za neku stranu prozora glavne aplikacije, ali moe stajati i
samostalno.
Ako sa glavnog menija odaberete Tools->Customize moete
podeavati alatke koje e biti na radnoj povrini ili dodavati nove. Ovo
podeavanje izvodite na tabu ( kartici ) Toolbars, kao to je prikazano
na slici ispod.
11
TVP C#
12
Uvod u Visual C#
13
TVP C#
14
Uvod u Visual C#
Class View
Class View daje prikaz klasa u projektu koji stvarate i ujedno vam
omoguava da dodajete i menjate postojee klase. Prikaz klasa dat je u
obliku stabla, dakle hijerarhijski ureenih. Na slici je dat jedan primer
projekta test.
15
TVP C#
16
Uvod u Visual C#
Naziv polja
Opis
Class Name
Namespace
Naziv prostora
pridruuje
imena
kome
se
klasa
File Name
Access
Class Modifiers
17
TVP C#
Kartica Inheritance
18
Uvod u Visual C#
19
TVP C#
Tipovi aplikacija
Pre nego to nastavimo sa novim stvarima vratimo se na primer
kreiranja novog projekta. Na listi Templates odabrali smo Windows
application. Ovo smo uradili preutno, sa namerom da to pre kreirate
vau .NET Windows aplikaciju i osetite bar na trenutak mogunosti
okruenja koje je ispred vas. Sada emo pojasniti neke od opcija koje
vam stoje na raspolaganju.
ablon ( Template )
Kreira se...
Windows Application
Console Application
Empty Project
nita. Sav
aplikaciju.
Windows Service
Class Library
kod
morate
sami
uneti
Promenljive u C#
Postoje dve vrste promenljivih u C#.
vrednosnog tipa, i referentnog tipa.
20
Promenljive
mogu
biti
Uvod u Visual C#
C#
Type
Opseg vrednosti
Defa
ult
sbyte
System.Sbyte
Da
-128 do 127
short
System.Int16
Da
-32768 do 32767
int
System.Int32
Da
-2147483648 do
2147483647
0L
long
System.Int64
Da
9223372036854775
808 do
9223372036854775
807
byte
System.Byte
Ne
0 do 255
ushort
System.UInt16
Ne
0 do 65535
uint
System.UInt32
Ne
0 do 4294967295
0
0
ulong
System.UInt64
Ne
0 do
1844674407370955
1615
float
System.Single
Da
7 cifara preciznost
0.0F
double
System.Double
Da
15-16 cifara
peciznost
0.0D
decimal
System.Decimal
Da
12
28-29 cifara
peciznost
0.0M
char
System.Char
N/A
6-bitni Unicode
karakter
'\0'
bool
System.Boolean
N/A
false
21
TVP C#
Rezultat:
22
Uvod u Visual C#
Rezimirajmo:
Promenljiva referencnog tipa pravi se svaki put kada deklariete
promenljivu kao:
klasu
interfejs
niz
string
objekat
delegat
Integer
Floating
Boolean
Enumeration
Structure
Svojstva u C#
Svojstvo daje (postavlja) informacije o objektu kome pripada. Svojstvo
je jedan metod ili par metoda ( to se klijentskog koda tie ), ali se
23
TVP C#
24
Uvod u Visual C#
// set prop
// get prop
}
}
}
25
TVP C#
26
Uvod u Visual C#
27
TVP C#
Poto smo dodali nae svojstvo nekoj klasi ono postaje za IDE potpuno
ravnopravno kao i sva ostala svojstva. Nadalje ovo svojstvo se nalazi u
listi ponuenih komandi koje nudi IDE pri pisanju koda. Pri tome je
pravilno pridruena sliica koja oznaava da je re o svojstvu, a dodatni
uti pravougaonik sa upustvom predstavlja onaj komentar koji ide uz
svojstvo.
28
Dizajn kontrola
3.
DIZAJN KONTROLA
29
TVP C#
Relacija roditelj-dete
Postoji nekoliko razliitih relacija izmeu prozora koji ine jednu ili vie
aplikacija. Za nas u ovom trenutku, kada govorimo o pozicijama
kontrola, bitan odnos je roditelj-dete tzv. parent-child relationship. Na
primer, kontrola koju ste postavili na neku formu predstavlja prozor iji
roditelj je drugi prozor tj. Forma. Ovo je podrazumevana relacija kada
se kontrole postavljaju i manifestuje se lepljenjem kontrole za tu
formu. Pomeranjem forme pomeraju se sve kontrole na njoj, tj. sva
deca prozori. Ista relacija postoji izmeu formi koje pripadaju nakoj
MDI aplikaciji. ( Pojam MDI aplikacija bie kasnije detaljnije razmatran,
za sada je dovoljno da pomenem kao primer Word ili Exel gde se
istovremeno mogu otvoriti nekoliko dokumenata u posebnim prozorima
i svi prozori su u zajednikom prozoru glavne aplikacije. )
(Osim odnosa izmeu prozora roditelj-dete postoji i druga relacija,
koja bi na ovom mestu unela konfuziju, a ne bi doprinela razumevanju i
nju autori svesno preskau.)
Koordinatni sistem
Da bi bolje razumeli svojstvo Location daemo neka dodatna
objanjenja u vezi koordinatnog sistema koji se primenjuje kada je re
o postavljanju objekata na ekran i odnosima izmeu prozora u Windows
operativnom sistemu.
30
Dizajn kontrola
31
TVP C#
32
Dizajn kontrola
Name
Svaka kontrola ima svojstvo Name. Ovo svojstvo omoguava da se
preko imena pristupi nekoj kontroli ili formi. Ime mora postojati i ono
33
TVP C#
Location
Drugi primer uobiajenog svojstva svih kontrola je njihova lokacija
(Location). Naravno ovo svojstvo je veoma bitno za vizuelni izgled
forme, ali moram pomenuti da postoje kontrole koje se postavljaju na
formu sa namerom da obezbede dodatnu funkcionalnost bez potrebe da
budu vidljive. To je izuzetak kada pozicija kontrole nije od znaaja. Ovo
svojstvo je opisano koordinatama X i Y. Ovo je pozicija gornjeg levog
ugla kontrole u odnosu na prozor na kome se kontrola nalazi. Obratite
panju da je re o vrednosnom tipu, jer su X i Y definisani kao celi
brojevi) a celi brojevi se realizuju kao strukture.
Size
Kada je re o grafikim svojstvima kontrole, osim pozicije, treba
spomenuti i njenu veliinu Size. Svi objekti su po prirodi pravougaonog
oblika pa se veliina jednostavno opisuje. Svojstva koja opisuju veliinu
su: irina ( Width ), odnosno visina ( Height ). Ukoliko se kontrola ne
postavlja programski ve u toku dizajna forme, promena veliine se
obavlja jednostavnim korienjem mia, uz pomo pravougaonika koji
oznaava selektovanu kontrolu. Na pravougaoniku se miem pritisne
kvadrati zavisno od dimenzije koju elimo da promenimo, a zatim se
povlaenjem mia menja dimenzija kontrole.
Cursor
Funkcija
Promena visine
Promena irine
34
Dizajn kontrola
Bounds
Pozicija zajedno sa veliinom smetene su u jednom svojstvu kontrole
koje se naziva Bounds. Ovo svojstvo daje pravougaonik
kontrole/forme. U kodu ovim svojstvom lako se vri repozicioniranje i
promena veliine kontrole.
Text
Veoma korisno svojstvo svake kontrole/forme je Text. Naravno da
postoji kod kontrola koje mogu prikazati tekst. Na primer, kod kontrole
labela Text svojstvo uva tekst koji kontrola prikazuje. Kod kontrole
dugme predstavlja tekst koji se prikazuje na dugmetu. Dalje, kod forme
predstavlja tekstualni sadraj u naslovnoj liniji itd, itd.
Promena ovog svojstva izvodi se u toku dizajna koristei Properties
prozor i biranjem Text polja a zatim ukucavanjem sadraja. Obratite
panju da je podrazumevani tekst u Unicode formatu, tj. lako moete
koristiti srpska ili neka druga slova. Naravno da se tekst moe menjati i
programski. Na primer:
static void Main()
{
Form1 Fm = new Form1();
Fm.Text
= "Employment Application";
35
TVP C#
Fm.Size
= new System.Drawing.Size(450, 320);
Application.Run(Fm);
}
Visible
Ranije smo pomenuli svojstvo koje odreuje da li je kontrola vidljiva ili
ne. Ovo svojstvo se naziva Visible a vrednosti su bulovog tipa (
Boolean type ) True/False. Ako kontrola nije vidljiva onda se
uobiajeno kae da je sakrivena - hidden. Ovo svojstvo takodje se
moe programski menjati jednostavnim dodeljivanjem vrednosti.
Ukoliko kontrola nije vidljiva onda nije ni dostupna logino. Drugim
reima ona je za korisnika sa stanovita unosa i prikaza informacija
potpuno bez funkcije. To ne znai da su takve kontrole nepotrebne
naprotiv. U toku izvravanja programa one se mogu uiniti vidljivim i
dostupnim, ili nevidljivim i nedostupnim, u zavisnosti od toga kakva
vrsta podataka se unosi i ta se sa kontrolom radi.
Enabled
Kada je kontrola vidljiva to ne znai obavezno da je i dostupna
korisniku. Posebno svojstvo definie da li kontrola moe primiti ulaz od
korisnika ak i kada je vidljiva. Ovo svojstvo se naziva Enabled i
takoe je bulovog tipa. Ako je kontrola vidljiva, a Enabled svojstvo
postavljeno na vrednost false, to znai da korisnik moe samo itati
vrednosti te kontrole bez mogunosti da ih menja. Podrazumevani
izgled kontrole u tom sluaju je blago zasivljenje (dimmed). Ovo
svojstvo se esto programski, u samom kodu menja. Obino kada unos
nekih podataka povremeno (ili stalno) treba zabraniti, a prikaz
podataka ostaviti.
36
Dizajn kontrola
TabIndex i TabStop
Ovde emo pomenuti jo jedno veoma bitno svojstvo u programiranju
na grafikim okruenjima (GUI). Ovo svojstvo nije vidljivo bar ne na
prvi pogled. Obino ga nazivamo tab redosled ili u originalu tab
ordering. Kretanje sa kontrole na kontrolu na jednoj formi koja je
aktivna moete izvesti i preko tastature koristei Tab taster. Kada se on
pritisne fokus kontrole se prebacuje na sledeu. Upravo tab svojstvo
odreuje redosled kontrola u ovom sluaju.
I ne samo to. Kada govorimo o tab redosledu i tab svojstvima treba
znati jos neto. Postoje kontrole koje ne mogu primiti fokus na primer
labela. Takoe, kontrola koja moe da primi fokus mora imati svojsto
TabStop postavljeno na true, ako treba da primi fokus. U suprotnom ta
37
TVP C#
ClassName VariableName;
Na primer: Deklarisanje objekta btnSubmit tipa Button u prostoru
imena System.Windows.Forms.
System.Windows.Forms.Button btnSubmit;
Da bi kontrola (objekat) zaista mogla da se koristi mora se odvojiti i
memorijski prostor, korienjem operatora new, i odraditi sva
neophodna podeavanja. Podeavanja se obavljaju u konstruktoru koji
se automatski poziva pri kreiranju objekta pozivom operatora new.
38
Dizajn kontrola
Linijom koda
System.Windows.Forms.Button btnSubmit;
39
TVP C#
Tab
redosled
nisu
btnSubmit.TabIndex = 0;
btnSubmit.Text = "Submit";
40
Dizajn kontrola
Dakle iza jednostavne tehnike drug and drop stoji desetak linija koda.
Bitno je da razumete da je sve to uradite koristei IDE predstavljeno
promenama u kodu projekta na kome radite. Drugim reima, sve je to
mogue i programski na isti, ili slian, nain uraditi. Alati vam stoje na
raspolaganju za jednostavniji i lakki rad.
Sada ete videti ta se dogaa ako dodate formi jo jedno dugme i
jednu labelu, na isti nain ( preko liste toolbox ).
1. Deklaracije
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label1;
2. Kreiranje i inicijalizacija
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(96, 120);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(136, 24);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
//
// button2
//
this.button2.Location = new System.Drawing.Point(152, 168);
this.button2.Name = "button2";
41
TVP C#
bool Focus();
42
Forma
4.
DOGAAJI
Spy++
Spy++ je poseban programski alat, deo Visual Studia, namenjen
praenju poruka nekog procesa ili prozora ( i jo poneto ). Spy++
moete da pokrenete iz menija Tools ili sa spiska programa
Programs->Microsoft Visual Studio .Net > Visual Studio .Net Tools>Spy++
43
TVP C#
44
Forma
Delegati
Delegat je pojam uveden sa C# (itaj .NET). Delegati se koriste za
prenos metoda kao argumenata drugim metodama. Mada se delegati
mogu smatrati novom vrstom objekata sutinski delegati su pokazivai
45
TVP C#
Prethodni primer opisuje metod koji vraa void a kao parametre ima
dve celobrojne vrednosti tipa int. Ako se prisetite programskog jezika C
jasno ete uoiti analogiju kada se koriste pokazivai na funkcije.
delegate int myDelegate(int a, int b);
je deklaracija delegata koji vraa celobrojnu vrednost, a za ulazne
argumente ima dve celobrojne vrednosti. Pretpostavimo da negde u
vaoj klasi imate definisane dve funkcije koje odgovaraju delegatu, tj.
da vraaju int i da imaju dva argumenta tipa int. esto se kae da
imaju isti potpis. Na primer:
int add( int a, int b ){return a+b;}
int sub( int a, int b ){return a-b;}
Kada pravimo analogiju sa objektima recimo da ove dve funkcije
odgovaraju klasama za tipine objekte. One definiu ponaanje
delegata koje tek treba da kreiramo. Kreiranje delegata vri se na isti
nain kao i kod svih drugih objekata, pomou operatora new.
myDelegate x = new myDelegate( add );
myDelegate y = new myDelegate( sub );
Nadalje, imamo dva objekta x,y koji su po svojoj prirodi funkcije, a
koje moemo koristiti na isti nain kao i te funkcije kojima su oni
opisani, dakle:
int r = x( 4, 3 ); // r = 7;
r = y( 4, 2 );
// r = 2;
46
Forma
Dogaaji i IDE
IDE daje programeru prilino jasnu sliku o dogaajima koje moe da
pridrui nekoj kontroli ili formi. Na prozoru Properties postoji dugme
. Kada kliknete na to dugme dobijate spisak dogaaja koji
Events
su pridrueni kontroli ili formi koja je selektovana. Na slici ispod dat je
prikaz Properties prozora sa listom dogaaja koji stoje na raspolaganju
korisniku za formu.
47
TVP C#
48
Forma
49
TVP C#
50
Forma
TVP C#
Paint
Iscrtavanje kontrola u grafikim okruenjima ini kontrole vidljivim i
predstavlja veoma bitnu i zahtevnu operaciju. Kontrole se iscrtavaju
kada se vri promena njihovog poloaja ili kada tek postaju vidljive.
Kad god treba iscrtati kontrolu izvrava se dogaaj Paint. Sintaksa
ovog dogaaja je:
Resize
Veliina kontrole je parametar koji se menja u toku izvravanja
aplikacije bilo akcijama minimizovanja, ili maksimizovanja prozora, bilo
namernim podeavanjima koje je obezbeeno kodom te aplikacije. Pri
tome nije samo bitna nova pozicija i veliina kontrole ve i prethodna.
Razlog je to u ponaanju kontrole treba obezbediti da se ona moe
vratiti na prethodnu veliinu.
Kada se veliina kontrole promeni nastaje dogaaj Resize() sa tipom
EventArgs.
Dogaaji tastature
Posebna klasa dogaaja koje windows kontrole obrauju su dogaaji sa
tastature. Tastatura predstavlja jedan od dva osnovna ureaja za unos
podataka u kontrole. Drugi je mi.
Kad god se pritisne neki taster aktivira se dogaaj KeyDown, a tip
poruke je KeyEventArgs. Analogno postoji i poruka kada se taster
otpusti - KeyUp i ona je takoe tipa KeyEventArgs. Ukoliko
korisnika interesuje da detektuje koji karakter je pritisnut prethodne
dve poruke nisu dobar izbor. KeyPress poruka se emituje ako korisnik
pritisne taster koji je tipa karaktera. Dakle, ovo mora biti neki
prepoznatljiv simbol. Mala slova, brojevi, znaci interpunkcije itd.
Ukoliko se na primer pritisne Shift+5 tj. taster % detektuje se kao
jedan karakter tj. KeyChar=37 '%'.
52
Forma
Dogaaji mia
U nameri da ne ponavljamo ono to svi znaju neemo da objanjavamo
ta je mi i kako radi. Pomenuemo samo osnovne dogaaje vezane za
ovaj ureaj koji slui za unos podataka.
Upotreba mia izaziva: promenu pozicije kursora, pritisak tastera (levo,
desno, srednje), otputanje istih tastera i na kraju skrolovanje ako mi
ima toki. Takoe se posebno detektuje i dvosturki klik. Pritisak na levi
taster je Click, a na desni Right-Click.
MouseDown je poruka koja se dogaa kada se pritisne levi taster
mia. MouseEventArgs je tip ove poruke.
Analogno je i za otputanje tastera tj. MouseUp, odnosno
MouseEventArgs koji se prosleuje MouseEventHandler na obradu.
Pomeraj
mia
se
MouseEventArgs.
detektuje
53
porukom
MouseMove
tipa
Forma
5.
FORMA
Izgled forme
Forma je osnovni grafiki objekat koji se koristi u aplikacijama koje
rade u grafikom okruenju kao to su Windows-i. Sama forma ne znai
nita. Njena osnovna uloga je da dri kontrole i obezbeuje
interakciju korisnika sa raunarom.
55
TVP C#
dodajete
ga
Ikona - Icon
Na levom delu naslovne linije forma prikazuje malu sliku koju nazivamo
ikonom
ili
sistemskom
ikonom.
Visual
Studio
obezbeuje
podrazumevanu ikonu za sve forme. Ako pak elite da koristite drugu
ikonu to moete izvesti biranjem Icon polja u prozoru Properties kada
. Tada se otvara
je forma selektovana, a zatim kliknite na dugme
Open dijalog pomou koga moete nai novu ikonu koju e aplikacija
nadalje koristiti. Inae, ako ikonu elite da promenite programski
morate prvo ikonu programski kreirati. Ikona je u prostoru imena
System.Drawing. Primer:
56
Forma
57
TVP C#
58
Forma
6. Klik OK.
7. Da biste napravili ikonu transparentnom ostavite istu boju koja je
bila na startu kao pozadinsku.
Sistemska dugmad
U krajnjem desnom uglu naslovne linije nalaze se sistemski dugmii:
minimize
, maximize
, restore ili dugme za zatvaranje prozora
.
Postojanje ovih dugmia je takoe opciono, tj. nema smisla da se sve
forme minimizuju, ovo naroito vai za modalne dijaloge, o emu emo
govoriti kasnije. Podeavanje ovih sistemskih dugmia izvodi se
svojstvima MinimizeBox odnosno MaximizeBox.
59
TVP C#
Na primer
private void Form1_Load(object sender, System.EventArgs e)
{
System.Drawing.Icon IC = new
System.Drawing.Icon("C:\\Programs\\alarm1.ico");
Icon = IC;
60
Forma
MinimizeBox = true;
MaximizeBox = false;
FormBorderStyle = FormBorderStyle.FixedDialog;
}
Ako elite od forme da napravite neku paletu alatki, tj. nekakav tool,
preporuuje se (potujui nepisane windows grafike standarde) da
forma ima samo malo Close dugme. Tool moe biti sa ivicama koje
dozvoljavaju promenu veliine, ili ne tj.
FormBorderStyle = FormBorderStyle.FixedToolWindow;
odnosno
FormBorderStyle = FormBorderStyle::SizableToolWindow;
Tool prozor ima naslovnu liniju male visine i nema ikonu, kao na slici
Klijentska oblast
Najvei deo forme pripada oblasti koju obino nazivamo klijentskom ili
samo telo forme. Na tu povrinu postavljamo kontrole ili je koristimo
kao grafiku oblast preko koje ispisujemo tekst ili iscrtavamo neto.
Ova oblast mora imati inicijalno postavljeno svojstvo pozadinske boje
BackColor. Boju biramo iz palete ukoliko koristimo Properties prozor ili
iz Color strukture programski:
61
TVP C#
BackColor = Color.AliceBlue;
BackgroundImage
Ako ipak vie volite da u pozadinu postavite neku sliku onda koristite
svojstvo BackgroundImage na primer
WindowState
Kada je forma u veliini istoj kao kad je i postavljena u toku dizajna,
kaemo da je stanje forme normal. Moe se posebno podesiti da bude
minimizovana ili maksimizovana kada se aplikacija pokrene. Ovo se
podeava svojstvom WindowState. Podrazumevana vrednost ovog
svojstva je Normal, tj. forma e se pojaviti na nain na koji je
podeena u dizajnu. Ukoliko pak programski elite da promenite izgled
forme tj. da je minimizujete ili maksimizujete u nekom delu koda onda
se to izvodi svojstvima Minimized ili Maximized.
Fm.WindowState = FormWindowState.Maximized;
Ovo svojstvo se koristi i kod itanja stanja forme. Drugim reima, kada
elite da proverite stanje vae forme programski potrebno je da
vrednost ovog svojstva poredite sa odgovarajuim vrednostima Normal,
Maximized ili Minimized.
ShowInTaskbar
Kada kreirate jednu aplikaciju koja se sastoji od vie formi ( to je u
praksi najei sluaj ) morate da podesite da se sve forme ne vide u
liniji na dnu ekrana task bar, koja pokazuje koje su sve aplikacije
otvorene (taskbar presence). Uobiajeno je da samo jedna ( poetna ili
glavna ) forma bude prikazana, dok se ostale moraju sakriti. Ovo se
regulie pomou svojstva ShowInTaskbar.
Forma
Kreiranje forme obavljate na isti nain kao i svih ostalih objekata. Klasa
Form je u okviru prostora imena Forms, u okviru prostora imena
System. Prikaz forme obezbeujete metodom Show. Na primer
Form3 f = new Form3();
f.Show();
Zatvaranje forme
Kao to kreirate jednu formu da biste preko nje izveli neke UI akcije,
tako je morate i zatvoriti poto zavrite sa tim. Zatvaranje forme
obavljate pomou metode Close(). Sintaksa je
void Close();
Ako ovom metodom pokuate da zatvorite glavnu formu vae aplikacije
zatvarate i vau aplikaciju
Pokretanje forme
Kada su dve ili vie formi pokrenute na vaem raunaru samo jedna
moe primati ulaz od korisnika ( ovo smo ve spominjali ). Takva forma
ima naslovnu liniju drugaije obojenu od ostalih i predstavlja aktivni
prozor. Ostali prozori su neaktivni.
Dogaaj Activated() detektuje kada neki prozor postaje aktivan.
Pokretanje prozora izvodi se ili korisniki, putem mia na primer, ili
programski metodom Activate().
Nasuprot ovog dogaaja postoji i dogaaj koji registruje trenutak kada
neka forma gubi korisniki ulaz. Ovo je dogaaj Deactivated().
vam
omoguiti
da
63
TVP C#
64
Forma
65
TVP C#
66
Kontejneri kontrola
6.
WINDOWS KONTROLE
Dugme
Dugme je Windows kontrola koja se koristi za iniciranje jedne akcije.
Akcija se izvodi kada se miem klikne na dugme. esto se klasino
dugme naziva i komandno dugme. Naravno, postoje i druge kontrole
koje mogu inicirati akciju tako to se klikne na njih ba kao i kod
dugmeta. Vizuelno, dugme je kontrola od koje korisnik programa
oekuje neku akciju kada izvri pritisak na njega.
Sa stanovita programera jedno dugme zahteva kontejner kontrolu.
Kontejner moe biti forma, toolbar ili neto drugo.
Najee dugme u Windows aplikacijama je pravougaona kontrola koja
prikazuje re ili kratku reenicu. Tekst na dugmetu obino opisuje
akciju koja sledi pritiskom na to dugme. U .Net aplikacijama ova
kontrola se realizuje korienjem Button kontrole. Postavlja se na
klasian nain korienjem liste toolbox ili programski. Kada postavite
neko dugme na formu, nadalje moete izvesti njeno podeavanje
korienjem svojstava ove kontrole preko Properties prozora.
Text
Najbitnije svojstvo dugmeta za korisnika je poruka na njemu. Ova
poruka zapisana je u svojstvu koje se naziva Text. Tekst se uvek
prikazuje na vrhu kontrole i moe biti dodatno formatiran. Uobiajeno
je da opisuje akciju koju dugme pokree/izvrava.
Najei tekstovi koje dugmad prikazuju su OK i Cancel. Poruka OK se
obino prikazuje na dijalozima koji informiu korisnika o nekoj greci,
nekom stanju, ili je to samo informacija koja zahteva potvrdu od
korisnika. Ukoliko se korisniku daje mogunost da odustane od
nastavka neke akcije obino se nudi Cancel dugme.
Naravno, tekst na dugmetu moe se programski menjati u toku
izvravanja aplikacije, u zavisnosti od stanja u kome se aplikacija
nalazi, na primer:
Button1.Text = "Let Me Go!";
67
TVP C#
TextAlign
Mesto teksta na dugmetu odreuje svojstvo TextAlign, kao na slici
ispod.
DialogResult
Kada korisnik klikne na neko dugme da bi zatvorio dijalog vano je da u
kodu postoji informacija o tome na koje dugme je kliknuto. .Net
okruenje prua mehanizam kojim se moe izvesti ova identifikacija.
Ovo se postie korienjem svojstva DialogResult. Vrednost moe biti
neka iz odreenog skupa koji je definisan. Mogue vrednosti su None,
OK, Cancel, Abort, Retry, Ignore, Yes, i No. Podeavanjem neke od ovih
vrednosti preko Properties prozora definiete vrednost koju dijalog
vraa, ako se pritiskom na vae dugme izvede zatvaranje istog
dijaloga.
68
Kontejneri kontrola
FlatStyle
Standardno, dugme se prikazuje kao da je izdignuto. Ako elite da
promenite ovakav izgled menjaete svojstvo FlatStyle:
Radio-dugme
Radio-dugme, neko ga naziva jo i opciono dugme, je kontrola krunog
oblika koja se pojavljuje u grupama sa drugima kontrolama istog tipa, tj.
vie radio-dugmadi pojavljuju se zajedno. Svako dugme sastoji se od
malog praznog kruga i labele koja opisuje dugme, tj. daje korisniku neku
informaciju o akciji. Kada korisnik pritisne jedno od dugmia koji su u
grupi ono dobija oblik a ostali ostaju prazni. Ovo znai da se grupom
radio-dugmia realizuje korisnika akcija izbora samo jedne stavke iz
grupe.
69
TVP C#
Checked
Ovo svojstvo definie da li je radio-dugme selektovano ili ne. Ukoliko
jeste, to znai da su sva ostala neselektovana. Osim za itanje stanja u
kome se dugme nalazi isto svojstvo moete upotrebiti i u suprotnom
pravcu. Ovim svojstvom moete programski podeavati izbor nekog
radio-dugmeta. Na primer:
private void Form1_Load(object sender, System.EventArgs e)
{
this.radioButton2.Checked = true;
}
CheckAlign
Podrazumevano podeavanje radio-dugmeta je tako izvedeno da se
krui nalazi sa leve strane od teksta koji je pridruen ovoj kontroli.
Kao i kod polja za potvrdu, i ovde postoji puno mogunosti za fino
podeavanje prikaza. Pozicija kruia u odnosu na tekst vri se pomou
svojstva CheckAlign. Mogue vrednosti su: TopLeft, TopCenter,
TopRight, MiddleRight, BottomRight, BottomCenter, odnosno
BottomLeft. Programski podeavanja moete izvesti kao na primeru:
private void Form1_Load(object sender, System.EventArgs e)
{
this.radioButton1.CheckAlign = ContentAlignment.MiddleRight;
}
Appearance
70
Kontejneri kontrola
Polje za potvrdu
Polje za potvrdu je kontrola koja daje samo dve opcije: potvreno ili
prazno. Vizuelno ova kontrola prikazuje malo kvadratno polje na koje
korisnik moe da klikne (tanije, korisnik moe da klikne na celu
kontrolu ukljuujui tekst). Na startu polje je prazno . Ako korisnik
klikne na njega oznaka o potvrdi pojavljuje se u kvadratnom polju .
Da bi se korisniku omoguilo da zna ta polje za potvrdu predstavlja
kontroli je pridruena labela koja prikazuje tekst. Kada je kvadratno
polje prazno , vrednost je false. Kada je polje ispunjeno oznakom za
potvrdu , vrednost je true.
71
TVP C#
CheckBox.
Checked
Podrazumevano ponaanje ove kontrole je da se pojavljuje netriklirana
(nepotvrena), tj. njena vrednost je inicijalno postavljena na False. Da
bi se promenila korisnik treba da klikne na kontrolu. Meutim, ako
elimo da je svojstvo inicijalno postavljeno na vrednost True, tj. da
kontrola pri prvom pojavljivanju bude potvrena, moemo ili promeniti
vrednost svojstva Checked na true, ili programski to uiniti na sledei
nain:
private void Form1_Load(object sender, System.EventArgs e)
{
this.checkBox1.Checked = true;
}
Alignment
72
Kontejneri kontrola
CheckState
Neretko, kontrola Checkbox osim stanja True, odnosno False, treba da
pokae i neko meustanje. Ovo stanje obino se naziva "half-checked"
ili u nekom slobodnom prevodu polupotvreno. U tom stanju polje za
potvrdu izgleda kao da je onemogueno ( disabled ). Ovakvo specifino
ponaanje kontrolie se preko svojstva CheckState. Da biste podesili
meustanje postavite vrednost ovog svojstva na Indeterminate ili
programski:
this.checkBox1.CheckState = CheckState.Indeterminate;
ThreeState
Jedino svojstvo CheckState dozvoljava postavljanje polja za potvrdu u
meustanju. Ako elite da se koriste tri stanja dugmeta za potvrdu, na
primer oznaeno, poluoznaeno i neoznaeno, koristite svojstvo
ThreeState.
Postavljanjem svojstva CheckState ( Boolean tipa ) na vrednost True
korisnik treba da klikne dva do tri puta do eljene vrednosti. Dobijanje
stanja dugmeta za potvrdu u ovom sluaju izvodite preko svojstva
Indeterminate.
Primer postavljanja nekog polja za potvrdu tako da ima tri stanja:
private void Form1_Load(object sender, System.EventArgs e)
{
this.checkBox1.Checked = true;
this.checkBox1.ThreeState = true;
73
TVP C#
Appearance
Oekivani izgled ove kontrole je kvadrati koji moe da primi komandu
od korisnika aplikacije ili prikae neku tekuu vrednost. Meutim,
alternativa je da polje za potvrdu prikaete i kao standardno dugme. U
tom sluaju kada kliknete na njega ono ostaje u donjem poloaju, tj.
poloaj dugmeta dole ili gore odreuje u stvari stanje polja za potvrdu
True odnosno False. Ako korisnik klikne na dugme jo jednom ono se
podie u gornji poloaj.
Da biste promenili standardni prikaz treba promeniti svojstvo
Appearance. Sa vrednosti Normal prebaciti na vrednost Button.
Programski to moete uiniti ovako:
private void Form1_Load(object sender, System.EventArgs e)
{
this.checkBox1.Appearance = Appearance.Button;
}
TEKST kontrole
Labela
Labela je kontrola za prikaz teksta. Korisnik ne moe direktno da menja
tekst u ovoj kontroli. Labela moe biti koriena sama na formi, za
ispisivanje tekstualnih poruka u toku izvravanja programa, ili stajati uz
neku drugu kontrolu koju svojim tekstom dodatno opisuje.
Da biste kreirali jednu labelu kliknite na dugme Label na listu Toolbox a
zatim na formu.
Programski, kreiranje ove kontrole ide na nain koji smo ve upoznali.
Koristei operator new kreirate objekat koristei podrazumevani
konstruktor. Kada kreirate ovu kontrolu podesite njena svojstva, na
primer:
private void Form1_Load(object sender, System.EventArgs e)
{
Label lblFirstName = new Label();
74
Kontejneri kontrola
TextBox
Kontrola tekst polje koristi se za prikaz tekstualnih poruka ili za
unoenje teksta. Tekst polje je kontrola pravougaonog oblika. Povrina
za prikaz, odnosno unos teksta, zauzima celu povrinu kontrole. Zbog
toga uz ovo tekst polje, uobiajeno, ide labela kojom se opisuje
namena tekstualnog polja.
Kreiranje ove kontrole izvodi se tako to kliknete na TextBox, a zatim
na formu.
Tekst polje kontrola bazirana je na klasi TextBox. Uz pomo ove klase
moe se programski kreirati i modifikovati novo tekstualno polje.
Kombo polje
Kombo polje je standardna grafika kontrola koju ste sigurno ve sreli.
Kontrola sadri listu stringova koje korisnik aplikacije moe videti pre
nego to izabere samo jednu sa liste. Tipino, kombo polje je kontrola
pravougaonog oblika sa tekstualnim poljem i jednim dugmetom sa
strelicom nadole. Ovim dugmetom otvara se lista stavki koje stoje na
raspolaganju. Kada otvori listu korisnik jednostavnim klikom na eljenu
stavku, ili koristei tastere strelice nadole i gore ( pritiskom na Enter ),
bira eljenu stavku iz liste.
75
TVP C#
Pritiskom na dugme
slici:
76
Kontejneri kontrola
77