Professional Documents
Culture Documents
Obsah
1 een pklady v C# aneb C# skuten prakticky .. 25
1.1 Rozsah knihy ........................................................................... 25
1.2 Verze .NET s pklady ............................................................... 25
1.3 Typografick konvence .......................................................... 26
1.3.1 Peklady termn ................................................................................ 26
8.5 CheckBox................................................................................. 65
8.5.1 Nastaven textu a zakrtnut CheckBoxu ............................................ 66
8.5.2 Povolen a nastaven tetho stavu CheckBoxu ................................... 66
8.7 Label......................................................................................... 67
8.7.1 Zmna textu labelu ............................................................................. 67
8.7.2 Zarovnn textu do stedu objektu ...................................................... 67
8.12 Panel......................................................................................... 75
8.12.1 Nastaven 3D typu okraje ................................................................... 75
8.12.2 Rolujc panel s dynamicky vytvoenm tlatkem ............................. 75
8.13 PictureBox................................................................................. 76
8.13.1 Naten obrzku ze souboru a jeho pizpsoben
na velikost PictureBox ....................................................................... 76
8.14 RichEditControl......................................................................... 76
8.14.1 Vstup nezformtovanho textu ......................................................... 76
8.14.2 Postupn pidvn rzn formtovanch slov do textu ..................... 77
8.14.3 Vstup RTF textu pouit bold a italic fontu na st textu ................ 77
8.14.4 Uloen RTF textu do souboru ........................................................... 77
8.14.5 Naten RTF textu ze souboru ............................................................ 78
8.14.6 Povolen a zpracovn poklepu na odkaz ............................................ 78
8.14.7 Vyhledn hodnoty ............................................................................. 78
9.2 NotifyIcon................................................................................. 88
9.2.1 Jednoduch pklad NotifyIcon .......................................................... 88
14.1.4 Reakce poloky menu na stisk prohozen pznaku zakrnut ........ 113
14.1.5 Zvraznn urit poloky menu ...................................................... 113
14.1.6 Vyvoln akce po najet na poloku menu my nebo klvesou ..... 114
14.1.7 Pipojen kontextovho menu k prvku ikony v lit ......................... 114
Dostv se Vm do rukou publikace, pi jej tyorb byl brn zetel na maximln jednoduchost a praktinost pi
kadodennm pouit.
Prvotnm impulsem, kter vedl k napsn tto knihy, bylo poskytnout jaksi "lexikon", kter programtor vezme do ruky,
kdy mu bude nco nejasn, kdy nebude zrovna vdt, jak to i ono implementovat, kdy bude pouze tuit, e snad takto njak
by to pece mohlo bt, e snad takto njak to ji nkdy dlal, jakpak to jen ale bylo...?
Podailo-li se mi tento kol splnit, mus ten posoudit sm. Doufm, e mu bude tato publikace slouit k jeho pln
spokojenosti.
1.1
Rozsah knihy
Je zejm, e dn kniha tohoto pragmatickho rozsahu" nen schopn obshnout zklady jazyka C#, popsat .NET
model i s jeho metodami, vvojov prosted Visual Studio i samotnho C# a k tomu jet pinst ji zmnn lexikon
pklad a postup.
Dotknu-li se neho novho, napklad zabrousm-li ve vkladu k pekrytm (override) metodm, pokusm se na dvou
tech dcch pojem vysvtlit. Zmiuji se o tom proto, e nkomu by se mohl zdt vklad nkterch termn pli strun - je
to vak proto, e z hlediska elu tto knihy jsou tyto vrazy uvedeny spe navc a pedpokld se, e ten m ji uritou
zkuenost s programovnm i se znalost, prac a pouitm objektovho programovacho jazyka.
1.2
Vtina pklad byla testovna v prosted Microsoft Visual Studio (C#) s knihovnou .NET Framework 1.1. Lze
pedpokldat, e velk st z nich bude funkn i v dalch verzch .NET knihovny.
Ukzky, kter maj za svm titulkem poznmku (NET2.0)" byly testovny v beta verzi Microsoft C# Express 2005 Beta,
kter ji nese novj verzi knihovny. .NET 2.0. Microsoft C# Express si lze pak voln sthnout na adrese:
http://lab.msdn.microsoft.com/express/vcsharp/default.aspx Pklady .NET 2.0 nebudou na star verzi NET 1.1 pracovat.
1.3
Typografick konvence
Rezervovan slova jazyka C# a nzvy objekt, struktur, rozhran, vt apod. nleejc pmo knihovn .NET budou
uvedeny tunm psmem.
Odkazy na nzvy vlastnch promnnch, sel, etzc a nzv technologi budou zvraznny kurzvou.
Ukzkov kdy pak budou odlieny tmto podbarvenm.
1.3.1
Peklady termn
Kniha se sna uvat esk termny, doprovzen alespo v prvnm ppad anglickm pekladem. Peklad vech
dleitjch termn lze nalzt zde:
bezpenost
- security
datov proud (tok)
- stream
fronta
- queue
haovac kd
- hash code
jmenn prostor
- namespace
komplet
- assembly
ladn
- debugging
vet
- enumeration
omezen
- constraint
poklepn my
- doubleclick
poskytovatel
- provider
prhlednost
- opacity
petypovn
- typecasting
sezen
- session
schrnka
- clipboard
udlost
- ebeny
uivatelsk prvek
-usercontrol
vzn dat (vazby)
- databinding
vlastnost
- property
(nepln tdy v C#) - partial types
(ablony typ v C#)
- generics
zsobnk
- stack
zdroj
- resource
1.4
Hned na zatku bude definovno, jakm zpsobem se bude se zdrojovm kdem pracovat. To se tk zejmna pouit
jmennch prostor a uren vstupnch nstroj" pro vrcen vsledky z metod.
Tento zpsob sice uet jedno pouit using, nicmn znamen nutnost pokad prefixovat objekt pslunm jmennm
prostorem, co se vztahuje i na kad jin prvek, nap. vet, kter se ve jmennm prostoru nachz.
Proto tato publikace pouv prvn zpsob s tm, e bude pokad zdraznno, je-li nutn pipojit nkter dal jmenn
prostor. Vjimku tvo pklady pro .NET 2.0 - zde bude pouita cel specifikace jmennho prostoru, nebude-li eeno jinak.
U tohoto kdu se vdy zobraz dialog pouze jednou - potom se smyka opust. Pak by bylo samozejm jednodu vypsat
dialog pmo, bez pouit smyky. Pro ilustraci pkazu continue vak tento kd vyhovuje - i kdy testovn v relnm ivot
vypad asto sloitji. To by vak navc vyadovalo i popis promnnch, kter do testovn logick podmnky continue
vstupuj, co by tene zbyten obtovalo - a to nen clem tto knihy.
2.1
2.1.1
2.1.2
Typ float obecn vyhovuje pro poadavky na uloen sla s desetinnou rkou. Aby kompiltor vdl, e desetinn slo
je piazovno jako float, mus mu to bt eeno znakem f" za piazovanou hodnotou. Jinak je slo chpno jako double.
float fValue = 56.75f;
2.1.3
2.1.4
etzcov hodnota pedstavuje text. Tento text je uvozen znakem uvozovek ().
sValue = ''Zmna hodnoty";
2.1.5
int i = '\x0201';
2.1.6
enum Vyska {
mala, stredni, vysoka }
private void buttonl.Click(object sender, System.EventArgs e) { Vyska vyska = Vyska.stredni;
}
Bzov typ vtu (jeho prvk) jsou implicitn int hodnoty. Hodnoty prvk jsou slovny vzestupn, piem pomoc
znamnka =" je mon za prvkem piadit explitn konkrtn int hodnotu. Pro monost piazen jinho typu neli int lze
vet deklarovat takto:
enum Vyska: byte
{...}
2.2
Vtven programu
2.2.1
if
Zkladn vtvc pkaz. Logick vraz mus bt v zvorkch. Spojovn jednotlivch podmnek vrazu se provd pomoc
logickch opertor.
if ( ( i > 3 ) && ( i < 10))
MessageSex.Show( "Splnn" );
else
MessageSex.Show( "Nesplnno");
Testuje, zda je i vt neli 3 a men neli 10. Nejpouvanj logick opertory pro spojovn vraz:
&& - logick A
||
!
22.2
- logick NEBO
- negace vrazu (uvd se ped vraz)
switch
case2 :
2.2.3
goto
Pm odskok na jin msto v rmci metody. Msto, kam se tmto pkazem penese zen, je oznaeno nvstm, za
kterm je dvojteka.
int i = 1;
zvysit:
MessageBox.Show( ( i++ ).ToString() );
2.2
Smyky
2.3.2
Pkaz while
Cyklus s testem podmnky na potku. Vykonv dan poet opakovn po dobu, po kterou je splnna vodn podmnka.
V ppad nesplnn tto podmnky se smyka opout.
int i = 1;
bool bWhile = true;
while ( bWhile )
{
MessageBox.Show( i.ToString());
i++;
bWhile = ( i < 4 );
}
Tento kd zobraz 3x pslun dialog.
2.3.3
Pkaz do...while
Velmi podobn smyce while, avak test se provd a na konci - to znamen, e smyka se v kadm ppad (nen-li jinak
nsiln peruena) provede alespo jednou.
int i = 1;
bool = bWhile;
MessageBox.Show( i.ToString () );
bWhile =( i < 4 );
Tento kd zobraz 3x pslun dialog.
2.3.4
Pkaz foreach
Jazyky C ani C++ tento druh smyky nativn neobsahovaly - zavd ji a C#. Umouje prochzet prvky kolekc nebo
pol.
string[] aArray = new strstring[]{"Jedna","Dva", "Ti"};
foreach ( string sValue in aArray ) MessageBox.Show( sValue };
2.3.5
Vype dialog s hodnotou 0" a pak s hodnotou 2". Vpis 1" je vynechn.
2.3.6
Zobrazuje dva asi nejpouvanj zpsoby pro vytvoen nekonen smyky. Smyka se opout pomoc rezervovanho
slova break.
2.4.1
2.4.2
2.4.3
for ( int i = 0 ; i < array.Length; i++) sText = sText + " " + array[il.ToString();
MessageBox.Show( sText );
}
private void buttonl_Click(object sender, System.EventArgs e)
{
string[] sArray = { "Ahoj", "love" };
write_array ( sArray );
Pedn parametr pes pole a jejich vpis uvnit metody. Lze tak pomrn jednodue pedat vce parametr, ani je nutn
kad zvl deklarovat v hlavice metody.
2.4.4
Vyvol metodu GetSum() s parametry 10 a 20, provede jejich souet a ten vrt pes parametr typu out.
Pozor! Nese-li metoda parametr out, mus bt s indikac tohoto parametru i vyvolna - ili, i ped pslunm parametrem
ve voln metody mus bt rezervovan slovo out pouito.
Vsledek volm je uloen do promnn iResult (zde hodnota 30).
2.4.5
Petovn opertor
V jazyce C# je mon, podobn jako v C++, petit urit opertory dan tdy, co vlastn znamen, e si definujeme
jejich nov vznam - a to opt v rmci t a t tdy, v nich je petujeme.
Nzorn: eknme napklad, e mme jednoduchou tdu MyInt, kter eviduje jednu int hodnotu. Pokud pouijeme
opertor +" mezi dvmi instancemi td Myln, kompiltor oznm chybu, protoe nev, jak tyto instance sest. Abychom si
pomohli, meme v takovm ppad petit" opertor +" ve td MyInt a urit, co bude vrceno pi pouit konstrukce
MyInt + MyInt".
Petovat v rmci tdy lze unrn opertory (+,-,! atd.), binrn opertory (%, &,<<,>> atd.) a srovnvac opertory (=
=, >, < atd.).
Podobnm zpsobem lze tak petit implicitn a explicitn konverzi (tdy) na dan typ tdy.
3.1.1
class MyInt
{
int value; public MyInt( int value)
{
this.value = value;
}
public static MyInt operator+ (Mylnt left, MyInt right )
return( new MyInt ( (left.value + right.value) * 2 ) );
}
public override string ToString()
return Convert.ToString( value );
}
}
Voln:
MyInt il = new MyInt ( 10 );
MyInt i2 = new MyInt ( 20 );
MyInt result = il + i2;
MessageBox.Show (result.ToString() );
3.1.2
Zde vytvoen instance tdy Mylnt vrac true, je-li hodnota promnn instance tdy MyInt.value vt ne nula. V opanm
ppad je false.
Pozn.: Pi petovn opertoru true je nutn petit i false - a naopak.
3.2
Indexery (indexers)
Indexer umouje odkazovat podobnm zpsobem jako pole pes index na hodnotu, kterou vrac. Lze tak pistupovat k
instanci tdy, kter ho implementuje.
Tento indexer nem sice dn praktick el, ukazuje vak, jak indexer (zde v rmci formule) vytvoit a volat. V
tomto pklad pevd pedanou hodnotu 50 na etzec, kter vrac, a jen se nsledn zobrazuje. Obecn se pak indexer
pouv k pstupu ke lenskm polm i kolekcm tdy.
Pozn.: Na rozdl od C++ se v C# za petovn opertoru [ ] nepovauje. Pesto je tato st zaazena do tto kapitoly.
Tda v jazyce C#me mimo jin poskytovat tzv. statick promnn a metody, ke kterm je mon pistupovat pmo, ani
budeme cokoli deklarovat i vytvet.
Chceme-li vak pracovat s promnnou, kter je instanc datovho typu object, musme tuto promnnou nejprve vytvoit kme, e vytvme instanci objektu.
Zde je nutn upesnn. V ppad, e je nap. prvek TextBox vloen na formul umstnm ve vvojovm prosted (v
ppad C# obvykle Visual Studio), nen poteba vytvet instanci prvku programov - integrovan prosted generuje automaticky odpovdajc kd, kter se vol pi startu aplikace.
4.1
Instance objekt se vytvej pes opertor new. Pokud to pro vs bude pijatelnj, instance je vlastn tot, co promnn.
Tak se pouze nazvaj dynamicky vytven promnn.
Pozn.: To me bt v C# tak troku zavdjc, nebo objekt je tu kad typ (i ten, kter nese hodnotu - nap. int).
4.1.2
Instance objekt se v C# ru automaticky. Nen proto nutn ruit je manuln a zatovat se navc pamatovnm na to, kdy a
kde instanci uvolnm. V uritch situacch to vak me bt vhodnj. Explicitn ruen prostedk se provd
pes pepsanou metodu Dispose() z rozhran IDisposable. Dleitou podmnkou vak je, aby dan tda toto rozhran
implementovala.
4.1.3
U prce s instancemi je poteba vysvtlit vznam klovho slova this. To odkazuje na vytvoenou instanci tdy, ve kter je
this v kdu pouito.
Nejlpe to lze pochopit na pkladu. Pedpokldejme, e mme jednoduchou tdu pro evidenci jedn seln int hodnoty.
Tda obsahuje konstruktor, kter int pedanou hodnotu ukld do lensk promnn tdy:
class MyInt
{
int value;
public MyInt( int value )
this.value = value;
}
Abych byl v rmci konstruktem Mylnt() schopen rozliit, zda chci pracovat se lenskou promnnou tdy i se stejn
pojmenovanm parametrem konstruktoru, pouiji klov slovo this. V takovm ppad pak pistupuji k vytvoen instanci,
kterou slovo this uvnit tdy zastupuje - ili k promnn instance tto tdy. Voln this.value pouit v konstruktoru tdy je
vlastn stejn, jako voln il.value, volan vak mimo tdu, pmo na vytvoen instanci.
4.2
Prce s konstruktory
Konstruktor je voln tsn ped vytvoenm vlastn instance datovho typu. Tda me deklarovat konstruktor, ale nemus
- v takovm ppad je pouit konstruktor implicitn. Konstruktor m stejn jmno jako tda, me jich bt i vce, existuje-li
poadavek na inicializaci instance s rozdlnmi parametry.
4.2.1
Pi vytvoen kad nov instance dochz k pedn celoseln hodnoty 10". Ta je v tomto ppad zobrazena.
4.2.2
Statick konstruktor
Statick konstruktor je vyvoln pouze pro prvn vytvenou instanci danho datovho typu
public class myClass
{
public MyClass (int iValue1)
{
......
MessageBox.Show(iValue1.ToString())
}
Static MyClass()
{
........
MessageBox.Show( "Prvn" );
}
}
MyClass m1 = new MyClass( 10 ); MyClass m2 = new MyClass( 20 );
V tomto ppad dochz k zobrazen textu Prvn" a "10" pro prvn vytvenou instanci datovho typu MyClass; a textu
"20" pro druhou vytvenou instanci.
4.3
Instance objekt uritho datovho typu lze petypovat na jin datov typ. To lze tehdy, existuje-li mezi tdami instance
pm zvislost: nap. lze petypovat TextBox na zkladnho pedka object, protoe ho ji v sob obsahuje"; lze petypovat
pedanou instanci datovho typu object na TextBox, vm-li, e instance byla vytvoena jako TextBox. Nelze vak petypovat
TextBox na DataGrid, protoe se jedn o zcela jin nezvisl objekt.
K tomu, aby se mohlo sprvn a bez chyb petypovvat, pomohou nsledujc pklady.
4.3.1
Tento pklad vrac true, je-li pedan instance v parametru sender tdy List Box (je-li odvozen z tto tdy).
4.3.2
Testuje, zda je pedan instance objektu v parametru sender typu ListBox; pokud ano, provd petypovn instance na typ
ListBox.
4.3.3
Testuje, zda parametr sender nen typu Button nebo potomek tto tdy. Pokud nen, vype hlen, do nho specifikuje, o
jakou tdu objektu se tedy jedn.
4.4
Petypovn
Petypovn umouje, aby se s instanc jednoho typu objektu zachzelo jako s instanc jinho typu objektu. To znamen,
e objekt je deklarovn jako jeden typ, pracuje se s nm jako s jinm typem. Toto vak nelze provst u kad z kombinac typ
objekt. Lehce lze petypovat potomka na pedka, dobe akceptovan jsou tak petypovn mezi numerickmi typy (v jazyce
C# je vak stejn kad typ reprezentovn jako objekt - co je uritou odlinost od jinch konvennch objektovch jazyk).
4.4.1
Ulo do celoseln promnn i double hodnotu d a to s petypovnm na typ int. Uloeno bude 35 - int samozejm
nepracuje s desetinnmi msty. Toto pety-povn na (int) se nazv explicitn a mohli jsme si ho dobe vimnout pi tvorb
explicitnho petypovn u opertor.
Bez tohoto petypovn by kompiltor ohlsil chybu - jde o konverzi, pi n 1 se ztrc informace, a proto je vyadovno,
aby ji programtor vyjdil explicitn. Vechny zuujc" konverze mus bt v C# explicitn pedepsny.
4.4.2
Parametr sender nese odkaz na objekt, kter udlost vyvolal - v ppad tohoto kdu se jedn o udlost, kter obsluhuje stisk
tlatka. Vm-li tedy, e se jedn nap. o tlatko, mohu pmo petypovat pedan typ object na Button a dostat se k
jeho vlastnosti Button.Name, kterou samotn typ object neposkytuje. Tento pklad vype nzev stisknutho tlatka
button1".
4.5
Vlastnosti (properties) zastupuj pstup k promnnm tdy. Programtor tedy pes vlastnosti k lenskm promnnm
tdy pistupuje; ili te, poppad upravuje jejich hodnotu. Vlastnost je tedy jaksi prostednk" mezi programtorem a
promnnou uvnit tdy.
Po pravd eeno, programtor je schopen vyjt i bez pouit vlastnosti a to tak, e deklaruje promnn jako veejn
pstupn a pak pistupuje pmo k nim. Tato technika se vak nedoporuuje.
Velkou vhodu pouit vlastnost vidm osobn v tom, e po zmn promnn mohu jako programtor ci, e m dojt i
k nsledn prav dal promnn i skupiny promnnch, e mohu okamit pekreslit upraven grafick vyjden
instance objektu, jedn-li se o grafick objekt, apod. Pokud budu pistupovat pmo k promnnm instance objektu,
musm na ve toto myslet a vystavuji se riziku opomenut a vzniku chyby. Rovn i pozdj prava kdu je pro m jako
pro programtora nronj, musm sledovat vechny tyto zvislosti, kter jsem mohl vlenit do obsluhy pomoc vlastnost.
public int Valuel get { return this.iValuel; }
if ( value > 10 ) value - 10;
this. iValuel = value;
doAct ion ();
private void doAction( ) { /* voliteln nsledn akce */ }
V rmci tdy MyClass je vidt nov vlastnost Valuel, kter podporuje ten hodnoty (get), tak i jej pravu (set).
Vlastn hodnota je potom uloena v privtn(=z venku tdy nevideln) promnn iValuel.
V bloku set je ped zmnou testovno, zda nov hodnota, reprentovan pomoc value, nen vt ne 10. Pokud ano,
sn se nov hodnota na 10. Voln doAction() pak ilustruje i monost zpracovn nslednch akc, kter se provedou
bezprostedn po zmn promnn.
MyClass myclass = new MyClass();
myclass.Valuel = 20;
MessageBox.Show(myclass.Value1.ToString());
Tento pklad zobraz hodnotu 10 (v set sti dochz ke snen dle zadan Podmnky).
Prce s udlostmi
Udlost (event) pedstavuje msto, kter je vyvolno pro obslouen urit akce - typickm pkladem je reakce na stisk
tlatka. Obsluhu udlosti mus mt tda implementovnu (lze samozejm vytvoit udlost vlastn).
Pro udlosti se v jazyce C# vytv objekt typu delegate, kter udlost zastupuje. To mimo jin umouje piadit pomoc
opertoru += na danou udlost vce reakc. Opertor -= ji me zase odebrat.
5.1.1
Udlost lze pidlit pmo v nvrhu formule v editoru vvojovho prosted (pro C# obecn Visual Studio) - pak je
udlost s prvkem svzna staticky (co uz( meme programov zmnit); alternativou je dynamick pidlen udlosti pmo
za bhu programu - nap. a po startu formule, po stisku tlatka, apod.
Pidl-li se na obsluhu udlosti nap. dv reakce, jsou tak dv (po sob) vyvolny
private void resizeProc( object sender, System.EventArgs e )
MessageBox.Show("Resize");
}
this.Resize += new EventHandler (resizeProc)j;
Pokud se provede:
this.Resize -= new EventHandlen (resizeProc);
5.1.2
5.1.3
Dynamick piazen dvou metod pro obsluhu stisku tlatka buttonl s nslednou ukzkou odebrn metody
Click1:
private void Clickl( object sender, EventArgs e }
KessageBox.Show( "1" );
private void Click2 (object sender, EventArgs e)
MessageBox.Show ("2" );
burttonl.Click += new EventHandler ( Clickl ); button1.Click += new EventHandler ( Click2 );
buttonl.Click. - = Clickl;
Metoda je z obsluhy udlosti odstranna pomoc opertoru -=. Zobraz se pouze dialog s 2".
6.1. 1
Pedpokldm-li, e vjimka me nastat a neznm pesn jej typ (=tdu), vjimka pro m nem konkrtn podobu, nevm co
oekvm, jen tum msto, kde by mohly nastat problmy, definuji blok try...catch. Ten libovolnou vjimku zachyt a
umon obslouit.
6.1.2
Vim-li pedem, kter typ vjimky by mohl nastat, obsloum jej typ pmo, vrem je mon obslouit vechny ostatn
vjimky. Zobraz hlen Nastalo dlen nulou.".
6.1.3
V tomto pklad je pi Suma.doCalc() vyvolna udlost AfterCalcProc. Ta m parametr result, kter je typu ref, co
umouje pes zmnu tohoto parametru v metod udlosti ovlivnit jeho hodnotu zpt do Suma.doCalc().
Prce s vjimkami
Vjimka pedstavuje objekt pochzejc z pedka Exception. Vjimka "obaluje" chybu. Je vytvoena pi vzniku chyby (je-li
vjimka vyvolna) a jako takov pedna do msta obsluhy, kde je zachycena v sti catch. Objekt vjimky pak
popisuje chybu, kter vznikla, jej typ, ppadn i dal informace dleit pro jej obsluhu.
Pro nzornost: v ppad, e nap. programtor provede dlen nulou, je systmem intern vyvolna peddefinovan systmov
vjimka DivideByZeroExcepition kter by se mla obslouit. Obsluhou vjimky v jakkoli form se zabrni
pdu programu a zobrazen implicitnho, asto konenmu uivateli nesrozumitelnho chybovho hlen.
try
{
i = i / i1; }
catch ( Exception el )
{
MessageBox.Show( "Nastala vjimka - chyba * + e1.StackTrace );
Promnn el budou pedny bli informace o vznikl vjimce - nap. originln chybov text, msto jejho vzniku. Tento
pklad etzcov vypisuje nhled na zsobnk v okamiku vzniku vjimky.
Pouit vjimky typu Exception je mon, mla by vak existovat snaha pout co nejspecializovanj typ, abychom u
samotnm typem vjimky co nejpesnji popsali vznikl problm (nap. ArithmeticException).
Pozn.: Tato obsluha pes catch (typ_vyjimky) je univerzln, zachyt vechny vjimky vznikl v .NET prosted. Blok
catch bez specifikace typu vjimky slou k zachycen vjimek, kter vzniknou i mimo prosted .NET- nap. v nezabezpeen
nm kdu v C++.
7.1.1
7.1.2
{
ConsoleWrite ("Vystup\nna\nkonzoli\ndo vice radku")
ConsoleRead();
}
Vype na konzoli pod sebe tyi dky a ek na stisk <Enter>.
7.1.3
double d = 55.555;
Ccnsole.WriteLine( "Hodnota je {0:N2} procenc.", d );
7.1.4
Tmto zpsobem lze zajistit, e jednoduch vstup z instance objektu XmLTextWriter bude automaticky
smovn na konzoli (Console.Out).
7.1.5
.NET 1.1 nepodporoval vymazn konzole - za tmto elem musely bt celkem sloit volny funkce jdra Windows
API. Nyn je tato monost pmo podporovna objektem Console.
7.1.6
Konzolov aplikace ek tak dlouho, dokud nen vyvolna udlost reakce na Console.CancelKeyPress - ta toti
pedstavuje stisk kombinace klves <Ctrl+C>.
Paleta nstroj (tzv. toolbox) se implicitn (v zvislosti na zvolenm typu vytven aplikace) objevuje na lev stran
vvojskho prosted. Objekty, kter nabz, lze my aktivovat a umstit pmo na formul - programtor nen tedy
nucen k tomu, aby kad pryek vytvel dynamicky (programov).
Komponenty lze rozdlit na:
a) vizuln - po sputn aplikace jsou vidt pmo na formuli (TextBox, ListBox, TreeView)
b) nevizuln - maj uritou skrytou innost, jejich umstn na formuli je viditeln pouze ve vvojovm stdiu, v
8.1
Tda Control je spolenm pedkem pro vechny vizuln komponenty. Proto je mon jm poskytovan spolen rysy
vyut u vech tchto zddnch prvk (td).
Pro demonstraci bude pouit objekt TextBox, pamatujte si vak, e stejn tak je mon aplikovat tyto pkazy nap. nad
objektem ListView. Panel atd.
8.1.1
8.1.2
Dal varianta pro zmnu pozice. Prvek bude pesunut na pozici [10, 10].
Alternativa pro zmnu rozmr - zde nastavuje dlku na 100, vku ponechv pvodn.
8.1.5
8.1.6
Zde je vidt pstup k rodiovskmu objektu, na kterm je prvek textBox1 umstn a zmna barvy pozad tohoto rodie.
8.1.7
Po zmn vlastnosti
nsledujcm zpsobem:
Control.Visible je
vyvolna
udlost
Jako praktick vznam lze uvst nap. automatick zobrazen jinho pole po zmn viditelnosti, apod.
8.1.8
textBox1.Enabled = false;
8.1.9
Obsluha tto udlosti umouje pi vstupu do prvku kurzorem provst inicializan akce.
Pozn.: Vstup do vizulnho prvku na formuli (klvesou, my i programov) oznaujeme jako zskn fokusu i zaosten.
Obvykle je prvek i uritm zpsobem graficky odlien - nap. irm rmekem nebo zvraznnm textem. Naopak, po
kud se prvek stane neaktivnm, ztrc fokus, zaosten.
Reakce je volna po ztrt zaosten. Tato udlost je vyvolna jet ped udlosti Control.Leave.
Tento kd nejprve po stisku tlatka aktivuje notifikan metodu (ta je implicitn neaktivn). Metoda je pepsna a mimo
pvodn vznam testuje, zda se vyskytla zprva WM_LBUTTONDOWN (stisk levho tlatka myi) a pokud ano
vypisuje informaci o tto zprv do ListBoxu.
Pozn.: Control.SetStyle() se pouv zejmna k prav voln zpsobu vykreslovn pes metodu Paint() + pouit
vykreslovacch buffer.
Nastav kurzor hodin nad celm formulem (mimo tlatko button1, kde
ponech kurzor implicitn).
8.2 Button
Klasick tlatko.
8.2.1
8.2.3
Pes Button.FlatAppearance lze nastavit zpsob vykreslen tlatka, zde je jako styl pouit Flat (ploch).
8.2.4
8.3
ComboBox
8.3. 1
comboBox1.Items.Clear();
comboBox.Items.Add("Hodnota 1");