You are on page 1of 37

een pklady v C#

aneb C# skuten prakticky


Josef Pirkl

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

1.4 Nkter pravidla pro pouit zdrojov kdy ........................ 27


1.4.1 Pravidla pro uit jmennch prostor (namespace) ............................. 27
1.4.2 Vstupy pro pklady ......................................................................... 28
1.4.3 Pouit znak ... v kdu .................................................................. 29
1.4.4 Upozornn pro zanajc programtory! ........................................... 29

2 Nco ze zkladnch postup C# ................................. 29


2.1 Piazen hodnot promnnm ................................................. 29
2.1.1 Deklarace promnn typu int s inicializac .......................................... 29
2.1.2 Deklarace a piazen promnn typu float s inicializac ..................... 29
2.1.3 Deklarace promnn typu bool s inicializac ....................................... 30
2.1.4 Piazen a zmna etzcov hodnoty .................................................. 30
2.1.5 Piazen hexadecimln hodnoty (estnctkov soustava) ................. 30
2.1.6 Piazen prvku z vtu ...................................................................... 30
2.1.7 Piazen przdn reference ................................................................ 31

2.2 Vtven programu.................................................................... 31


2.2.1 if ......................................................................................................... 31
2.2.2 switch ................................................................................................. 31
2.2.3 goto .................................................................................................... 32

2.3 Smyky .................................................................................... 32


2.3.1 Pkaz for ........................................................................................... 32
2.3.2 Pkaz while ....................................................................................... 32
2.3.3 Pkaz do...while ................................................................................ 33
2.3.4 Pkaz foreach .................................................................................... 33
2.3.5 continue peruen smyky > skok na zatek smyky .................. 34
2.3.6 break peruen smyky > pln ukonen smyky ....................... 34

2.4 Voln metod a pedvn parametr .................................. 34


2.4.1 Pedvn parametr metodm ........................................................... 35
2.4.2 Vyvoln metody s parametry a vrcen vsledku metody .................. 35
2.4.3 Pedn pole jako parametru ............................................................... 35
2.4.4 Vyvoln metody s parametry a vrcen hodnoty pes parametr (out) . 36
2.4.5 Vyvoln metody s parametry a vrcen hodnoty pes parametr (ref) . 36
2.4.6 Voln statick metody deklarovan v jinm jmennm prostoru ......... 37

3 Petovn opertor .................................................. 37


3.1.1 Peten opertoru + ve vlastn nov td ...................................... 38
3.1.2 Peten opertoru pro implicitn petypovn na typ int .................... 39
3.1.3 Peten opertoru pro explicitn petypovn na typ int .................... 39
3.1.4 Peten opertor true a false ........................................................... 40

3.2 Indexery (indexers) ................................................................. 40


3.2.1 Vytvoen jednoduchho indexeru v rmci formule ......................... 41

4 Prce s instanc objekt ............................................... 41


4.1 Dynamick vytvoen a zruen instance objekt................. 41
4.1.1 Vytvoen nov instance objektu Timer .............................................. 41
4.1.2 Zruen objektu Timer ........................................................................ 42
4.1.3 Pouit klovho slova this ................................................................ 42

4.2 Prce s konstruktory ................................................................ 43


4.2.1 Konstruktor s jednm parametrem ...................................................... 43
4.2.2 Statick konstruktor ........................................................................... 43

4.3 Testy na typy objekt.............................................................. 44


4.3.1 Test na tdu instance objektu (i na pedka objektu) .......................... 44
4.3.2 Test na tdu instance objektu a jej petypovn na zvolenou tdu ..... 44
4.3.3 Vpis typu instance objektu ............................................................... 45

4.4 Petypovn .............................................................................. 45


4.4.1 Explicitn petypovn double na int ................................................... 45
4.4.2 Petypovn parametru sender na tdu Button ................................... 46

4.5 Deklarace vlastnost (properties) ........................................... 46

5 Prce s udlostmi ......................................................... 47


5.1.1 Dynamick pidlen udlosti ............................................................. 48
5.1.2 Pidlen vce reakc na jednu udlost ................................................. 48
5.1.3 Odstrann jedn reakce na udlost (jsouli ji pidleny) .................. 49
5.1.4 Ovlivnn vsledku pes udlost ........................................................ 49

6 Prce s vjimkami ......................................................... 50


6.1.1 Obsluha obecn (nekonkrtn) vjimky ............................................. 51

6.1.2 Obsluha konkrtn vjimky ................................................................ 51


6.1.3 Zskn blich informac o vjimce .................................................. 51
6.1.4 Vyvoln vjimky ............................................................................... 52

7 Prce s konzol konzolov aplikace......................... 53


7.1.1 Vstup textu na konzoli ...................................................................... 53
7.1.2 Vstup na konzoli do ty dk pes jeden pkaz ............................. 53
7.1.3 Formtovan vstup na konzoli ......................................................... 54
7.1.4 Uren vstupnho proudu (pro XmlTextWriter) ................................ 54
7.1.5 Vymazn konzole zvolenou barvou (.NET 2.0) ................................ 54
7.1.6 Ukonen pes <Ctrl+C> odchycen klvesy na konzoli (.NET 2.0) . 55

8 Prce s komponentami z palety nstroj .................. 55


8.1 Spolen pro vechny vizuln komponenty ........................ 56
8.1.1 Zmna pozice prvku pes Control.Left a Control.Top ........................ 56
8.1.2 Zmna pozice prvku pes Control.Location ........................................ 56
8.1.3 Zmna dlky prvku pes Control.Width ............................................. 57
8.1.4 Zmna dlky prvku pes Control.Size ................................................ 57
8.1.5 Zmna barvy psma a zmna barvy prvku pozad prvku .................... 57
8.1.6 Zmna barvy rodiovskho objektu ................................................... 57
8.1.7 Skryt objektu na formuli ................................................................ 57
8.1.8 Zkaz prce s objektem objekt je viditeln, zkaz je graficky rozlien .. 58
8.1.9 Reakce na vstup do prvku (podporujeli ji, nap. textov pole) .......... 58
8.1.10 Reakce na vstup z prvku (podporujeli ji, nap. textov pole) .......... 58
8.1.11 Reakce na zskn zaosten prvku (fokusu) ....................................... 59
8.1.12 Reakce na ztrtu zaosten prvku (fokusu) ......................................... 59
8.1.13 Zskn velikosti prvku jako typ Rectangle ......................................... 59
8.1.14 Control.SetStyle a pepsn notifikan metody
Control.OnNotifyMessage() .............................................................. 59
8.1.15 Zmna kurzoru ................................................................................... 60
8.1.16 Naten kurzoru ze souboru ............................................................... 60

8.2 Button ....................................................................................... 60


8.2.1 Zmna textu na tlatku ....................................................................... 60
8.2.2 Zmna textu i obrzku na tlatku s definic jeho zarovnn ................ 61
8.2.3 Zmna barvy tlatka po najet my a zmna na Flat styl (.NET 2.0) . 61
8.2.4 Zkrcen dlouhho textu tlatka a doplnn znaky ... (.NET 2.0) .... 61

8.3 ComboBox ............................................................................... 61


8.3.1 Naplnn hodnot do ComboBoxu s aktivac prvn hodnoty ............... 61
8.3.2 Pidn poloek do ComboBoxu a jejich setdn dle abecedy .......... 62
8.3.3 Vyhledn hodnoty v ComboBoxu ..................................................... 62
8.3.4 Nastaven typu ComboBoxu pouze pro vbr hodnot (zkaz pepisu) 62

8.4 DataGrid .................................................................................. 63


8.4.1 Dynamick pidn t poloek do DataGridu ..................................... 63
8.4.2 Dynamick pidn poloek do DataGridu, zkaz editace
druhho sloupce ................................................................................. 63
8.4.3 Pidn dk tabulky pro DataGrid s podrobnjm nastavenm ....... 64
8.4.4 Dynamick vytvoen vlastnho sloupce v DataGridu ........................ 64
8.4.5 Nastaven celho DataGridu pouze pro ten ...................................... 65
8.4.6 Informace o aktivnm dku a sloupci v DataGridu ............................ 65

8.5 CheckBox................................................................................. 65
8.5.1 Nastaven textu a zakrtnut CheckBoxu ............................................ 66
8.5.2 Povolen a nastaven tetho stavu CheckBoxu ................................... 66

8.6 CheckListBox ........................................................................... 66


8.6.1 Pidn t poloek, prvn dv jako zakrnut ..................................... 66
8.6.2 Prochzen a vpis zakrnutch poloek ............................................ 66
8.6.3 Prochzen a vpis index zakrnutch poloek ................................ 67

8.7 Label......................................................................................... 67
8.7.1 Zmna textu labelu ............................................................................. 67
8.7.2 Zarovnn textu do stedu objektu ...................................................... 67

8.8 LinkLabel .................................................................................. 67


8.8.1 Zobrazen www strnky po kliknut na LinkLabel ............................. 67

8.9 ListBox ....................................................................................... 68


8.9.1 Pidn t poloek do ListBoxu ......................................................... 68
8.9.2 Pidn poloek do ListBoxu z pole ................................................... 68
8.9.3 Pidn poloek z pole pes vlastnost ListBox.DataSource ................ 68
8.9.4 Pidn poloek promtnutm ze sloupce tabulky ................................ 69
8.9.5 Smazn dosavadnch poloek, pidn poloek
a oznaen poloky ............................................................................ 69
8.9.6 Odstrann druh poloky .................................................................. 69
8.9.7 Zaosten poloky dle hodnoty ........................................................... 70
8.9.8 Zaosten poloky dle hodnoty v pesnm tvaru .............................. 70
8.9.9 Zobrazen zvolen poloky po poklepn my ................................... 70
8.9.10 Pouit znaku tabultoru pro zarovnn poloek ................................. 70

8.10 ListView ..................................................................................... 71

8.10.1 Pidn poloek do ListView .............................................................. 71


8.10.2 Pidn poloek do ListView a oznaen druh z nich ........................ 71
8.10.3 Dynamick pidn dvou sloupc a vpis do sloupc ........................ 72
8.10.4 Reakce na vbr prvku ....................................................................... 72
8.10.5 Oznaen celho dku v ListView ..................................................... 73
8.10.6 Vpis zakrtnutch poloek ............................................................... 73
8.10.7 Pepnut na vpis jako velk ikony ................................................. 73
8.10.8 Pepnut na vpis jako mal ikony .................................................. 73
8.10.9 Pepnut na vpis jako seznam ........................................................ 73

8.11 MonthCalendar ....................................................................... 74


8.11.1 Oznaen 15.1.2005 (skok do msce ledna/2005) ............................. 74
8.11.2 Oznaen 15.1.2005 symbolem dnenho dne .................................... 74
8.11.3 Oznaen vce dn v intervalu 3.1.2005 7.1.2005 ........................... 74
8.11.4 Zobrazen dvou msc v dcch i sloupcch ..................................... 74
8.11.5 Zvraznn t dn tunm psmem .................................................... 75
8.11.6 Zjitn zvolenho data ....................................................................... 75

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

8.15 RadioButton ............................................................................. 78


8.15.1 Oznaen pepnae programov ........................................................ 78

8.16 StatusBar .................................................................................. 79


8.16.1 prava textu v prvnm oddlu ............................................................ 79
8.16.2 Dynamick pidn t novch oddl ................................................. 79

8.17 TabControl ................................................................................ 80


8.17.1 Dynamick pidn t zloek ............................................................ 80
8.17.2 Nastaven aktivn zloky ................................................................... 80

8.18 TextBox ...................................................................................... 80


8.18.1 Nastaven inicializanho textu a vstup do prvku ................................ 80
8.18.2 Pidn vce dk do vcedkovho (multiline) textboxu ................. 80
8.18.3 Pidn obou rolujcch lit do vcedkovho textboxu ...................... 81
8.18.4 Rozdlen dk TextBox pomoc objektu podpory
regulrnch vraz (Regex) ................................................................ 81
8.18.5 Vypsn oznaenho textu .................................................................. 82
8.18.6 Oznaen sti etzce v TextBoxu ..................................................... 82
8.18.7 Oznaen celho textu a jeho vloen do schrnky s jeho smaznm ... 82
8.18.8 Vyvoln validace editanho pole ...................................................... 83

8.19 Toolbar ...................................................................................... 83


8.19.1 Reakce na stisk tlatka na toolbaru .................................................... 83

8.20 TrackBar ................................................................................... 83


8.20.1 Inicializace prvku ............................................................................... 84
8.20.2 Obsluha zmny hodnoty TrackBar.Value ........................................... 84

8.21 TreeView ................................................................................... 84


8.21.1 Naplnn stromu ................................................................................. 84
8.21.2 Zobrazen nzvu aktivn poloky stromu po kliknut .......................... 85
8.21.3 Obsluha editace textu poloky stromu ................................................ 85
8.21.4 Pi oznaen/odznaen rodiovskho uzlu stromu,
ozna/odzna pm potomky ............................................................. 85

8.22 WebBrowser (.NET 2.0) ............................................................. 86


8.22.1 Navigace na specifickou strnku ........................................................ 86
8.22.2 Navigace na domovskou strnku ....................................................... 86
8.22.3 Krok zpt (o strnku dozadu) ............................................................. 86
8.22.4 Krok dopedu (o strnku dopedu) .................................................... 86
8.22.5 Zskn zdrojovho kdu webov strnky .......................................... 87
8.22.6 Uloen klientsk sti obrazovky webov strnky do souboru .bmp ..... 87

9 Prce s nevizulnmi komponentami ......................... 87


9.1 ErrorProvider ............................................................................. 87
9.1.1 Vizuln zvraznn vznikl chyby ..................................................... 87

9.2 NotifyIcon................................................................................. 88
9.2.1 Jednoduch pklad NotifyIcon .......................................................... 88

9.3 PerformanceCounter ............................................................... 89

9.3.1 Dotaz na volnou pam v MB ............................................................ 89

9.4 Process ..................................................................................... 89


9.4.1 Pokus o sputn procesu notepad.exe ............................................... 89
9.4.2 Sputn notepad.exe a ekn na vstup .............................................. 90
9.4.3 Ukonen sputn aplikace pomoc existujcho procesu .................. 90

9.5 ServiceController ...................................................................... 90


9.5.1 Zskn seznamu existujcch slueb ................................................... 90
9.5.2 Zjitn stavu sluby, jej zastaven a sputn .................................... 91
9.5.3 Vpis zvislch slueb ....................................................................... 91

9.6 Timer ......................................................................................... 92


9.6.1 Zobrazen asu na formuli ............................................................... 92
9.6.2 Dynamick vytvoen Timeru na formuli ........................................ 92

9.7 ToolTip ....................................................................................... 92


9.7.1 Nastaven vcedkovho tooltipu ...................................................... 92

10 Prce s formuli ........................................................... 93


10.1.1 Metoda volan bezprostedn ped zobrazenm formule ................. 93
10.1.2 Nastaven tzv. Cancel tlatka pro formul ........................................ 93
10.1.3 Nastaven tzv. Accept tlatka pro formul ........................................ 93
10.1.4 Zskn identifikanho sla okna ...................................................... 94
10.1.5 Vpis jmna aktivnho formule ....................................................... 94
10.1.6 Zjitn aktivnho prvku formule .................................................... 94
10.1.7 Nastaven formule tak, aby byl vdy navrchu .............................. 95
10.1.8 Maximalizace aktivnho formule ..................................................... 95
10.1.9 Minimalizace aktivnho formule do lity ......................................... 95
10.1.10 Skryt formule po minimalizaci ....................................................... 95
10.1.11 Zakzn uzaven formule .............................................................. 95
10.1.12 Prochzen vech prvk na danm rodii (formuli) ......................... 96
10.1.13 Prochzen vech prvk typu Button na danm rodii (formuli) ..... 96
10.1.14 Dynamick vytvoen prvku na formuli .......................................... 97
10.1.15 Postupn zobrazen formule pomoc zmny jeho prhlednosti ........ 97
10.1.16 Definovn novho tvaru formule pes Form.OnPaint .................... 98

10.2 Vyvolvn modlnch a nemodlnch formul ............... 99


10.2.1 Vyvoln modlnho formule ........................................................... 99
10.2.2 Vpis hodnoty textovho pole z vyvolanho modlnho formule
po jeho ukonen ................................................................................ 99
10.2.3 Zobrazen dialogu jako nemodlnho okna ......................................... 99

10.3 MDI aplikace/MDI dtsk okna .......................................... 100


10.3.1 Vytvoen MDI dtskho okna ......................................................... 100
10.3.2 Seznam MDI dtskch oken do poloky menu ................................ 101
10.3.3 Pstup k aktivnmu dtskmu oknu ................................................. 101
10.3.4 Zjitn MDI dtskch oken formule ............................................ 102
10.3.5 Zaosten druhho dtskho okna v seznamu ................................... 102
10.3.6 Seazen dtskch oken do kaskdy ................................................. 102
10.3.7 Seazen dtskch oken do horizontlnch dladic ............................ 102
10.3.8 Seazen dtskch oken do vertiklnch dladic ................................ 103
10.3.9 Seazen minimalizovanch dtskch oken ...................................... 103

11 Peddefinovan dialogy ............................................ 104


11.1 Standardn dialogy ............................................................... 104
11.1.1 Vpis textu do dialogu ..................................................................... 104
11.1.2 Vpis textu (v dialogu) na vce dek ............................................... 104
11.1.3 Dotazov dialog Ano/Ne ................................................................. 104

11.2 Speciln dialogy .................................................................. 105


11.2.1 Dialog pro vbr barvy .................................................................... 105
11.2.2 Dialog pro vbr psma .................................................................... 105
11.2.3 Dialog pro vbr souboru ................................................................ 106
11.2.4 Nastaven vcensobnho filtru pro vbr soubor .......................... 107
11.2.5 Dialog pro vbr adrese ................................................................ 107

12 Drag & Drop (thni a pus) ..................................... 108


12.1.1 Taen textu z prvku TextBoxu do ListBoxu .................................... 108
12.1.2 Taen soubor/zstupc do formule ............................................. 109

13 Prce s klvesnic ....................................................... 109


13.1.1 Reakce na stisknutou klvesu ........................................................... 110
13.1.2 Testovn stisku klvesy <Shift> + znaku ........................................ 110
13.1.3 Testovn stisku klvesy <Shift> + <Alt> + znaku
za pomoci KeyEventArgs ................................................................ 110
13.1.4 Testovn stisku klvesy <Shift> + <Alt> + znaku .......................... 110
13.1.5 Prce s klvesami v konzolov aplikaci ........................................... 111

14 Prce s menu............................................................... 112


14.1.1 Dynamick vytvoen hlavnho menu formule a jeho poloek ....... 112
14.1.2 Programov vyvoln kontextovho menu ....................................... 113
14.1.3 Zmna daj u prvn poloky kontextovho menu ........................... 113

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

14.2 ContextMenuStrip (.NET 2.0) ................................................. 114


14.2.1 Vytvoen menu, pidn obsluhy a zobrazen nad volajcm tlatkem ... 114

15 Prce se schrnkou (clipboard) ............................... 115


15.1.1 Koprovn textu z TextBoxu do schrnky ....................................... 115
15.1.2 Koprovn textu ze schrnky do TextBoxu ..................................... 115
15.1.3 Test na ptomnost textovho formtu ve schrnce ........................... 115
15.1.4 Kopie instance objektu do schrnky/ze schrnky ............................. 116

16 Pole a kolekce objekt .............................................. 117


16.1 Pole (array) ............................................................................ 117
16.1.1 Vytvoen a inicializace pole o tech prvcch ..................................... 117
16.1.2 Vytvoen a inicializace pole Color[] ................................................ 117
16.1.3 Vytvoen a inicializace pole typu Point[] ......................................... 117
16.1.4 Dynamick vytvoen pole (pes Array.CreateInstance()) ................ 118
16.1.5 Vcerozmrn pole a vrcen potu rozmr pole ............................. 118
16.1.6 Inicializace prvku pole na zklad volan metody ............................ 118
16.1.7 Vymazn pole .................................................................................. 119
16.1.8 Kopie prvk z pole do pole .............................................................. 119
16.1.9 Klonovn pole kopie pole do nov vytvoenho pole .................. 119
16.1.10 Vzestupn a sestupn setdn pole ................................................. 120
16.1.11 Prohledvn pole ............................................................................. 120

16.2 Kolekce prvk (ArrayList) ..................................................... 121


16.2.1 Vytvoen kolekce prvk .................................................................. 121
16.2.2 Hledn v kolekci prvk ................................................................... 121
16.2.3 Binrn vyhledvn ......................................................................... 122

16.3 Fronta (queue) ....................................................................... 123


16.3.1 Pidn prvk do fronty a vbr z fronty .......................................... 123

16.4 Zsobnk (stack) ................................................................... 124


16.4.1 Zaloen zsobnku, vbr hodnot a prochzen prvk ..................... 124

16.5 Haovac tabulka .................................................................. 124


16.5.1 Ukzka prce s haovac tabulkou .................................................... 125
16.5.2 Haovac kd (hashcode) ................................................................. 125
16.5.3 Pepsn GetHashCode() ................................................................. 125

16.6 SortedList (.NET 2.0) ................................................................ 126


16.6.1 Zaloen seznamu, vloen hodnot a vyhledn hodnoty dle kle ..... 126

17 Prce s datovm typem etzec, datum, vet


a struktura .................................................................... 127
17.1 Prce s etzci ........................................................................ 127
17.1.1 Piazen przdnho etzce .............................................................. 127
17.1.2 Inicializace etzce z pole znak char[] ............................................. 127
17.1.3 Pevod etzce do pole char[] ........................................................... 128
17.1.4 Spojen prvk pole do etzce a jejich oddlen specifickm etzcem ... 128
17.1.5 Vytvoen danho potu stejnch znak ........................................... 128
17.1.6 Zjitn dlky etzce ........................................................................ 128
17.1.7 Prochzen etzce po jednotlivch znacch ...................................... 128
17.1.8 Vrcen sti etzce ......................................................................... 129
17.1.9 Vyhledn pozice prvnho vskytu podetzce v etzci ................... 129
17.1.10 Vyhledn pozice poslednho vskytu podetzce v etzci .............. 129
17.1.11 Vyhledn slova od potku do vskytu jednoho ze seznamu znak ..... 129
17.1.12 Pouit String.Format() .................................................................... 130
17.1.13 Dal formtovn vstupu pes String.Format() .............................. 130
17.1.14 Rozdlen etzce dle oddlova ..................................................... 131
17.1.15 Pevod logick hodnoty na etzec ................................................... 131
17.1.16 Test na shodnost etzc velikost psmen rozhoduje ..................... 132
17.1.17 Test na shodnost etzc velikost psmen nerozhoduje .................. 132
17.1.18 Pevod etzce na mal psmena ....................................................... 132
17.1.19 Pevod etzce na velk psmena ...................................................... 132
17.1.20 Nhrada sti etzce za jin ............................................................. 133
17.1.21 Odstrann mezer z potku a konce etzce ..................................... 133
17.1.22 Odstrann specifickch znak z potku a konce etzce ................ 133
17.1.23 Test na znaky na konci etzce .......................................................... 133
17.1.24 Odstrann poslednho znaku z etzce ............................................. 134
17.1.25 Dotaz, zda je prvn znak etzce psmeno ......................................... 134
17.1.26 Dotaz, zda je prvn znak etzce slo ............................................... 134
17.1.27 Dotaz, zda je prvn znak etzce slo nebo psmeno ........................ 134
17.1.28 Dotaz, zda je prvn znak etzce mal psmeno ................................. 134
17.1.29 Dotaz, zda je prvn znak etzce velk psmeno ................................ 134
17.1.30 Vpis uvozovek v etzci ................................................................. 135

17.2 StringBuilder ........................................................................... 135


17.2.1 Vytvoen a pidn textu do StringBuilder ....................................... 135

17.3 Prce s datem a asem ....................................................... 135


17.3.1 Zjitn aktulnho datumu a asu ..................................................... 135
17.3.2 Vytvoen datumu z jednotlivch prvk data .................................... 136
17.3.3 Test, zda souasn rok je pestupn ................................................. 136
17.3.4 Vrcen jmna aktuln asov zny (pro bn as) ........................ 136
17.3.5 Vrcen jmna aktuln asov zny (pro letn as) .......................... 136
17.3.6 Zjitn, zda je v pedanm datu aktuln zny uvn letn as ........ 136
17.3.7 Rozklad aktulnho asu na hodinu, minutu a vteinu ...................... 137
17.3.8 Pidn danho potu dn k datumu .................................................. 137
17.3.9 Zskn datumu z etzce .................................................................. 137
17.3.10 Zformtovn datumu dle masky ...................................................... 137
17.3.11 Pipraven metody pro formtovn data a asu ............................... 138
17.3.12 Pokus o pevod etzce do datumu v oekvanch formtech .......... 139

17.4 TimeSpan ................................................................................ 139


17.4.1 Prce s rozdlem dvou datum ......................................................... 139
17.4.2 Zskn intervalu od zatku do konce voln ................................... 140

17.5 Prce s vtovm typem ...................................................... 140


17.5.1 Deklarace vtu a promnn typu vet ........................................... 140
17.5.2 Pouit OR opertoru pro nastaven vce hodnot vtu .................... 140
17.5.3 Nastaven bitovch hodnot do promnn a jejich testovn .............. 141
17.5.4 Odnastaven bitov hodnoty ............................................................. 141
17.5.5 Prochzen prvk vtu .................................................................... 141

17.6 Prce se strukturami .............................................................. 142


17.6.1 Deklarace struktury a promnn struktury ....................................... 142

18 Pevody a zaokrouhlovn ......................................... 143


18.1 Pevody .................................................................................. 143
18.1.1 Pevod etzce na slo ..................................................................... 143
18.1.2 Pevod z etzce na boolean ............................................................. 143
18.1.3 Pevod etzce na double .................................................................. 143
18.1.4 Pevod hodnoty do dvojkov, osmikov a estnctkov soustavy . 143
18.1.5 Oeten chybnho pevodu ............................................................. 144
18.1.6 Binrn posun posunut hodnoty o dva bity doleva ........................ 144

18.2 Pevody souadnic ................................................................ 145


18.2.1 Pevod souadnice v rmci prvku na souadnice obrazovky ............ 145
18.2.2 Pevod souadnic obrazovky na souadnice v rmci prvku .............. 145

18.3 Zaokrouhlovn ...................................................................... 145


18.3.1 Zaokrouhlen na dan poet desetinnch mst .................................. 145
18.3.2 Zaokrouhlen na nejbli ni cel slo ......................................... 146
18.3.3 Zaokrouhlen na nejbli vy cel slo ......................................... 146
18.3.4 Nastaven hodnoty reln kladn nekoneno do typu double ........ 146

19 Kdovn ..................................................................... 146


19.1.1 Pevod znaku na ASCI selno hodnotu .......................................... 146
19.1.2 Pevod seln ASCII hodnoty na znak ........................................... 147
19.1.3 Pevod UNICODE na kdovn ASCII (a pevod etzce na byte[]) 147
19.1.4 Vytvoen etzce z pole byte[] pomoc UNICODE kdovn ......... 147

20 Prce s databz ......................................................... 147


20.1 Datov spojen (OleDB)......................................................... 148
20.1.1 Oteven spojen ............................................................................... 148
20.1.2 Reakce na zmnu stavu spojen udlost ...............................................
OleDbConnection.StateChange ........................................................ 149
20.1.3 Test na stav spojen .......................................................................... 149
20.1.4 Vpis pouitho poskytovatele z OleDbConnection.ConnectionString ... 149
20.1.5 Seznam vech tabulek pod spojenm ................................................ 150
20.1.6 Seznam uivatelskch tabulek pod spojenm .................................... 150
20.1.7 Seznam vech tabulek pod spojenm s upesnnm typu objektu ..... 150
20.1.8 Vpis seznamu vech sloupc nad vemi tabulkami pod spojenm .. 150
20.1.9 Naplnn seznamu existujcch tabulek pod spojenm ....................... 151

20.2 Datov adaptr ..................................................................... 151


20.2.1 Oteven adaptru a naplnn do datov mnoiny ............................. 151

20.3 Datov mnoina (DataSet) ................................................... 151


20.3.1 Naplnn datov mnoiny z adaptru a napojen do DataGridu ........ 151
20.3.2 Naplnn datov mnoiny z adaptru a napojen do DataGridu
varianta s pojmenovnm tabulky .................................................. 152
20.3.3 Vytvoen XML souboru z dat datov mnoiny ............................... 152
20.3.4 Naten prvnch t dek do datov mnoiny a vrcen jako XML .. 152

20.4 Datov tabulka (DataTable) ................................................ 153


20.4.1 Odkaz na tabulku z datov mnoiny ................................................. 153
20.4.2 Vpis potu dk tabulky ............................................................... 153
20.4.3 Prochzen dk tabulky ................................................................. 153

20.4.4 Zmna nadpisu pro DataGrid ........................................................... 154

20.5 Datov pkaz dotaz (OleDbCommand) .......................... 154


20.5.1 Vrcen jedn hodnoty z dotazu ........................................................ 154
20.5.2 Prochzen vsledku dotazu (prochzen vrcench dk dotazu) .. 154
20.5.3 Dotaz s parametry ............................................................................ 155
20.5.4 Zmna v datech pes datov pkaz .................................................. 155

20.6 Datov relace (DataRelation) .............................................. 155


20.6.1 Relace mezi tabulkami a vstup do DataGridu ................................. 156

20.7 Datov sloupce ..................................................................... 157


20.7.1 Vytvoen kalkulanho sloupce s pevn nastavenou hodnotou ........ 157
20.7.2 Vytvoen kalkulanho sloupce na zklad funkce .......................... 157
20.7.3 Vytvoen kalkulanho pole s etzcovou funkc ............................. 157

20.8 Editace dat (update, insert, delete) .................................... 158


20.8.1 Prochzen dk tabulky, kter byly zmnny (zde pes DataGrid) 158
20.8.2 Dogenerovn UPDATE, INSERT, DELETE pkazu ..................... 158
20.8.3 Uloen dat ....................................................................................... 159
20.8.4 Pidn novho zznamu do tabulky ZAMESTNANCI ................... 159
20.8.5 Smazn dk tabulky ZAMESTNANCI s ID_ZAMESTNANEC
vtm ne 3 ..................................................................................... 160
20.8.6 Prochzen dk a zmna hodnot kalkulanho sloupce .................. 160

20.9 Navzn dat (databinding) ............................................... 161


20.9.1 Vytvoen nov databinding vazby navzn hodnoty pole
do TextBox.Text ............................................................................... 161
20.9.2 Zskn managera pro obsluhu vazeb ............................................... 161
20.9.3 Posun na pedchoz vtu .................................................................. 162
20.9.4 Posun na nsledujc vtu ................................................................. 162
20.9.5 Reakce na zmnu pozice Binding managera vpis aktulnho
dku do Label ................................................................................. 162
20.9.6 Vytvoen vazby s monost formtovn vstupu ........................... 163
20.9.7 Vytvoen vazby na pole ................................................................... 163

20.10 Prce s daty v .NET 2.0 .......................................................... 164


20.10.1 Napojen dat na BindingSource ........................................................ 164
20.10.2 Zkaz pidvn dku nastaven pes BindingSource ................... 165
20.10.3 Pouit BindingNavigator ................................................................. 165
20.10.4 Zaosten specifick buky tabulky DataGridView .......................... 166
20.10.5 Oznaen a prchod dk DataGridView (oznaen celch dk) . 166
20.10.6 Oznaen a prchod bunk DataGridView ....................................... 166
20.10.7 Pidn tlatka na msto druhho sloupce v DataGridView ............. 167
20.10.8 Reakce na stisk tlatka v DataGridView.......................................... 167
20.10.9 Pidn fixovanho ComboBoxu mezi sloupce DataGridView ........ 167

21 Regulrn vrazy ......................................................... 168


21.1 Dleit zstupn znaky pro vyhodnocovn
regulrnch vraz ................................................................ 168
21.2 Testy na platnost vraz (odpovd masce?) .................... 169
21.2.1 Hledn nhradou za znak ................................................................ 169
21.2.2 Test dle prvnho znaku ..................................................................... 170
21.2.3 Hledn teky ................................................................................... 170
21.2.4 Povolen vce ppustnch znak ...................................................... 170

21.3 Rozklady regulrnch vraz do vskyt (Match) ............. 170


21.3.1 Rozklad na jednotliv znaky, kter nejsou mezerou .......................... 170
21.3.2 Rozklad na jednotliv znaky/slova, kter nejsou mezerou ................ 171
21.3.3 Vrcen znak etzce, za ktermi je mezera ..................................... 171
21.3.4 Rozklad na jednotliv znaky/slova, za ktermi je mezera ................. 171
21.3.5 Separace hodin z etzce ................................................................... 172
21.3.6 Separace datumu z etzce ................................................................ 172

21.4 Rozklad regulrnch vraz s vyuitm skupin (Group) ..... 172


21.4.1 Rozklad datumu a asu s vyuitm skupin ........................................ 173

22 Funkce ......................................................................... 173


22.1 Matematick funkce ............................................................ 173
22.1.1 Vrcen absolutn hodnoty ................................................................ 173
22.1.2 Pouit konstanty PI ......................................................................... 173
22.1.3 Vrcen minimln hodnoty ze dvou sel ......................................... 174
22.1.4 Vrcen minimln hodnoty ze t sel .............................................. 174
22.1.5 Vrcen odmocniny z hodnoty .......................................................... 174
22.1.6 Vrcen hodnoty sinu hlu ............................................................... 174
22.1.7 Celoseln dlen a zskn zbytku po celoselnm dlen .............. 174

22.2 Nhodn sla ......................................................................... 175


22.2.1 Generovn nhodnho sla v danm rozsahu ................................. 175
22.2.2 Generovn nhodnho sla mezi 0.0 1.0 ..................................... 175

23 Prce s grafikou .......................................................... 175


23.1 Fonty ....................................................................................... 176

23.1.1 Tvorba instance novho fontu Tahoma ............................................. 176


23.1.2 Tvorba instance novho implicitnho fontu ...................................... 176
23.1.3 Zmna fontu objektu ........................................................................ 176
23.1.4 Vrcen vky fontu ......................................................................... 176
23.1.5 Prochzen jmen instalovanch font (.NET 2.0) ............................. 177

23.2 Barvy ...................................................................................... 177


23.2.1 Vyhledn barvy dle jmna ............................................................... 177
23.2.2 Pstup k systmovm barvm ......................................................... 177
23.2.3 Vytvoen nov barvy z palety a obarven formule ........................ 178

23.3 Pera (pens) ............................................................................ 178


23.3.1 Vytvoen ervenho pera ................................................................. 178
23.3.2 Vyuit peddefinovanho pera ......................................................... 178
23.3.3 Vytvoen ervenho peruovanho pera o ce 5 bod ................. 178
23.3.4 Vytvoen ervenho pera o ce 5 bod s definovanm
tvarem zakonen .............................................................................. 179

23.4 ttce (brush) ........................................................................ 179


23.4.1 Vytvoen ttce plnho vzoru .......................................................... 179
23.4.2 Vyuit peddefinovanho ttce ....................................................... 179
23.4.3 Vytvoen ttce se vzorkem ............................................................. 179
23.4.4 Vytvoen a pouit gradientnho ttce ............................................. 180
23.4.5 Vytvoen ttce dle dat z bitmapy .................................................... 180

23.5 Kresba ar ............................................................................. 180


23.5.1 Vykreslen ry ................................................................................ 180
23.5.2 Vykreslen vce r jednm pkazem (dle pole Point[]) .................... 181
23.5.3 Vykreslen ry o ce 5 bod se ipkou na konci ........................... 181

23.6 Kresby zkladnch geometrickch tvar .......................... 182


23.6.1 Kresba rmeku ............................................................................... 182
23.6.2 Kresba rmeku vyplnnho ervenou barvou ................................. 182
23.6.3 Kresba krunice ............................................................................... 182
23.6.4 Kresba elipsy ................................................................................... 182
23.6.5 Kresba vyplnn elipsy .................................................................... 182
23.6.6 Kresba kruhov vsee .................................................................... 182
23.6.7 Kresba kruhov vsee vyplnn ervenou barvou ......................... 183

23.7 Kresba grafickho textu .................................................... 183


23.7.1 Jednorzov vykreslen grafickho textu .......................................... 183
23.7.2 Jednorzov vykreslen grafickho pootoenho textu ................. 183
23.7.3 Formtovn vstupu grafickho textu centrovn do stedu oblasti ... 184
23.7.4 Vykreslen vertiklnho grafickho textu .......................................... 184
23.7.5 Vykreslen textu do rmeku, zmen velikosti grafickho etzce .. 184

23.8 Obrzky ................................................................................. 185


23.8.1 Naten bitmapy ze souboru ............................................................. 185
23.8.2 Vykreslen bitmapy na formul ....................................................... 185
23.8.3 Dynamick kreslen do bitmapy ....................................................... 185
23.8.4 Dynamick kreslen do bitmapy dal varianta .............................. 186
23.8.5 Jednorzov vykreslen obrzku ve skuten velikosti ..................... 186
23.8.6 Jednorzov vykreslen obrzku 10x zmenenho ........................... 186
23.8.7 Otoen obrzku ............................................................................... 187
23.8.8 Klonovn obrzku vytvoen novho obrzku z sti jinho ........ 187
23.8.9 ikm vykreslen obrzku ................................................................ 187
23.8.10 Naten obrzku pes pole byte[], vytvoen datovho
proudu MemoryStream (.NET 2.0) .................................................. 188

23.9 Ostatn kolem grafiky... ........................................................ 188


23.9.1 Pepsn metody Form.OnPaint() .................................................... 188
23.9.2 Pekreslen barvy celho objektu ...................................................... 189
23.9.3 Vykreslen obrazce s gradientnm vzorem ........................................ 189
23.9.4 Zadn souadnic pro grafiku absolutn hodnotou ............................ 190
23.9.5 Sjednocen a prnik dvou oblast ..................................................... 190

24 Prce s adresi .......................................................... 190


24.1.1 Zaloen adrese .............................................................................. 190
24.1.2 Kontrola existence adrese a ppadn zaloen novho .................. 190
24.1.3 Naplnn seznamu logicky pipojench diskovch jednotek ............ 191
24.1.4 Informace o adresi ......................................................................... 191
24.1.5 Pesun adrese ............................................................................... 191
24.1.6 Smazn adrese i s podadresi ...................................................... 191
24.1.7 Vrcen aktivnho adrese ............................................................... 191
24.1.8 Zmna aktivnho adrese ................................................................. 192
24.1.9 Informace o zmn v adresi ........................................................... 192
24.1.10 Informace o umstn specilnch adres ....................................... 192
24.1.11 Vypsn cesty k systmovmu (system32) adresi ......................... 193
24.1.12 Vypsn cesty pro ukldn aplikanch dat pro vechny uivatele ..... 193
24.1.13 Vypsn cesty pro ukldn aplikanch dat pro konkrtnho uivatele .. 193

25 Prce se soubory......................................................... 193

25.1 Obecn prce se soubory ................................................... 193


25.1.1 Informace o souboru ........................................................................ 193
25.1.2 Testovn atribut souboru ............................................................... 193
25.1.3 Kontrola existence souboru .............................................................. 194
25.1.4 Koprovn souboru ......................................................................... 194
25.1.5 Koprovn souboru vdy pepi existujc .................................... 194
25.1.6 Pesun souboru ................................................................................ 195
25.1.7 Smazn souboru .............................................................................. 195
25.1.8 Vpis data poslednho zpisu do souboru ........................................ 195
25.1.9 Naten a zobrazen obsahu adrese (disku) do stromu TreeView .. 196
25.1.10 Prochzen uritch typ soubor (zde dle koncovky) ..................... 196
25.1.11 Vrcen jmna konfiguranho souboru ............................................ 197

25.2 Prce s cestami ..................................................................... 197


25.2.1 Vpis cel cesty ke sputnmu souboru ......................................... 197
25.2.2 Extrakce a vpis cesty bez jmna souboru ....................................... 197
25.2.3 Extrakce a vpis jmna souboru ....................................................... 197
25.2.4 Extrakce a vpis koncovky souboru ................................................ 197
25.2.5 Extrakce a vpis root adrese .......................................................... 198
25.2.6 Zmna koncovky u jmna souboru ................................................. 198

26 Prce s daty v souborech .......................................... 198


26.1 ten/zpis textovch soubor ............................................ 198
26.1.1 Vytvoen StreamReader z FileInfo .................................................. 198
26.1.2 Vytvoen StreamWriter z FileInfo ................................................... 198
26.1.3 Naten textu ze souboru pes StreamReader ................................... 199
26.1.4 Zpis textu do souboru pes StreamWriter ....................................... 199
26.1.5 Kopie textovho souboru pes FileStream ....................................... 199
26.1.6 Kopie textovho souboru pes FileStream s vyuitm bufferu ......... 200
26.1.7 Kopie textovho souboru pes StreamReader/StreamWriter ............ 200
26.1.8 Zpis a ten do souboru s kdovnm ASCII ................................. 201
26.1.9 Naten celho souboru do etzce (.NET 2.0) ................................. 201

26.2 ten/zpis binrnch soubor ............................................. 201


26.2.1 Zpis pevn dlky pole byt do souboru pes FileStream ................ 201
26.2.2 Zpis promnn dlky pole byt do souboru pes FileStream .......... 202
26.2.3 Binrn zpis etzce do souboru pes BinaryWriter ........................ 202
26.2.4 Zpis a ten jednotlivch typ do/z binrnho souboru ................... 203
26.2.5 Binrn kopie dvou soubor pes BinaryReader/BinaryWriter ......... 204

26.3 Asynchronn prce se soubory ............................................ 204


26.3.1 Asynchronn zpis textu do souboru ................................................ 204
26.3.2 Asynchronn zpis textu do souboru s eknm na ukonen zpisu .. 205

27 Prce s XML.................................................................. 206


27.1.1 ten prvk ze XML souboru .......................................................... 206
27.1.2 Naplnn ComboBoxu z dat XML souboru ..................................... 207

27.2 Prce s XML pes XmlTextWriter/XmlTextReader .................. 207


27.2.1 Vytvoen XML souboru pes XmlTextWriter ................................. 208
27.2.2 Naten XML dokumentu a kopie do novho XML souboru .......... 209
27.2.3 Naten a prochzen XML souboru pes XmlTextReader ............... 209

28 Serializace dat ............................................................ 210


28.1.1 Serializace cel instance objektu do souboru .................................... 210
28.1.2 Dal zpsob serializace tentokrt pes XmlSerializer ................... 211

29 Prce s registry ............................................................ 213


29.1.1 Naten zznamu z prvku registru .................................................... 213
29.1.2 Naten hodnoty z prvku registru neexistujeli vtev, zalo novou .... 213
29.1.3 Zaloen nov vtve a zpis dvou zznam do registru .................... 214
29.1.4 Naten nzv nich podkl registru ........................................... 214

30 Tisk ................................................................................ 214


30.1 PrintDocument........................................................................ 214
30.1.1 Tisk t dk na tiskrnu ................................................................. 214
30.1.2 Tisk prvku z formule na tiskrnu .................................................. 215

30.2 PrintPreviewDialog ................................................................. 215


30.2.1 Zobrazen tiskovho nhledu. ........................................................... 215

30.3 PrintPreviewControl ................................................................ 216


30.3.1 Dynamick vytvoen nhledu .......................................................... 216

30.4 PrintDialog .............................................................................. 217


30.4.1 Zobrazen tiskovho dialogu ............................................................ 217

30.5 PageSetupDialog .................................................................. 217


30.5.1 Zmna nastaven tiskrny ................................................................. 217

31 Prce se st a v sti ...................................................... 218


31.1.1 Informace o sti ................................................................................ 218
31.1.2 Informace o sti pes objekt Environment ......................................... 219
31.1.3 Zskn jmna stanice a sla IP adresy stanice ................................. 219

31.1.4 Zskn jmna stanice z IP adresy ..................................................... 219


31.1.5 Zskn informac o adrese ze jmna domny ................................... 219

31.2 Internet ................................................................................... 220


31.2.1 Zobrazen www strnky v implicitnm prohlei ............................. 220
31.2.2 Staen kdu strnky z internetu ....................................................... 220
31.2.3 Staen obrzku z internetu a jeho vykreslen ................................... 220
31.2.4 Staen obrzku z internetu pes PictureBox (.NET 2.0) .................. 221

31.3 Pota ....................................................................................... 221


31.3.1 Jednoduch odesln potovn zprvy .............................................. 222
31.3.2 Odesln potovn zprvy s podrobnjm nastavenm ..................... 222
31.3.3 Odesln potovn zprvy s plohou ................................................ 222

31.4 Bezpenost (Security) ........................................................... 223


31.4.1 Vrcen jmna souasnho pihlenho uivatele ............................ 223
31.4.2 Informace o ptomnosti rol v tu uivatele ................................... 223

32 Prce se zdroji ............................................................. 223


32.1.1 Naplnn seznamu pipojench zdroj ............................................. 224
32.1.2 Naten etzce ze zdroje .................................................................. 224
32.1.3 Naten ikony ze zdroje a jej vykreslen na formuli ...................... 224

32.2 Konfiguran soubor .............................................................. 224


32.2.1 ten prvku z konfiguranho souboru ............................................. 225
32.2.2 Vpis vech <AppSettings> kl a hodnot z konfiguranho souboru ... 225

33 Prce s procesy ........................................................... 225


33.1.1 Vpis probhajcch proces do ListBoxu ........................................ 225
33.1.2 Vyhledn konkrtnho procesu ........................................................ 226

33.2 Voln externch proces ...................................................... 226


33.2.1 Zobrazen www strnky ................................................................... 226
33.2.2 Zobrazen soubor v adresi (vyvoln przkumnka) ................. 226
33.2.3 Zobrazen textovho souboru v notepadu ......................................... 226
33.2.4 Nastaven podrobnjch informac k vytvenmu procesu ............ 227

34 Prce s vlkny ............................................................. 227


34.1.1 Vytvoen a sputn novho vlkna ................................................. 227
34.1.2 Vytvoen a sputn novho vlkna s eknm na jeho dokonen .. 228
34.1.3 Pojmenovn souasnho vlkna ...................................................... 228
34.1.4 Nastaven priority souasnho vlkna na maximum ......................... 228
34.1.5 Peruen innosti vlkna na zvolenou dobu .................................... 228
34.1.6 Proveden operace asynchronn v jinm vlknu (.NET 2.0) ............ 229

35 Regionln nastaven systmu .................................. 229


35.1.1 Vrcen jmna nastaven kultury ...................................................... 230
35.1.2 azen dle abecedy s ohledem na nastavenou kulturu ...................... 230
35.1.3 Vrcen symbolu pro mnu pro nastavenou kulturu ......................... 231
35.1.4 Prochzen existujcch kultur ........................................................... 231
35.1.5 Nastaven specifick kultury pro vlkno a zobrazen datumu
v tto kultue .................................................................................... 231
35.1.6 Vpis dn v tdnu ve specifick kultue .......................................... 231
35.1.7 Zmna systmovho desetinnho oddlovae .................................. 232
35.1.8 Pepnut do nminy datum (vypisuje nzvy dn v nmin) ....... 232

36 Prce s mdii ............................................................... 232


36.1 Zvuky ...................................................................................... 232
36.1.1 Ppnut .............................................................................................. 232
36.1.2 Pehrn WAV souboru .................................................................... 233
36.1.3 Pehrn zvuku pes System.Media.SoundPlayer (.NET 2.0) .......... 233
36.1.4 Pehrn systmovch zvuk jsouli piazeny (.NET 2.0) ........... 233

36.2 Pouit MCI pkaz ................................................................ 233


36.2.1 Pehrn MP3 souboru ..................................................................... 234
36.2.2 Programov oteven dvek CD mechaniky .................................... 234
36.2.3 Programov uzaven dvek CD mechaniky .................................... 234
36.2.4 Pehrn AVI video souboru ............................................................ 234
36.2.5 Pehrn AVI video souboru s umstnm na pozici obrazovky ........ 235
36.2.6 Pehrn MPEG video souboru se specifikac
oddo snmku ................................................................................... 236
36.2.7 Pehrn MPEG video souboru s uzavenm po pehrn ................. 236

37 Prce s Windows Management Instrumentation (WMI) 237


37.1.1 Dotaz na souborov systm pouvan logickm diskem c:\ ........ 238
37.1.2 Dotaz na informace o logickm disku c:\ ...................................... 238
37.1.3 WMI dotaz na data o procesoru ....................................................... 239
37.1.4 WMI dotaz na data o biosu .............................................................. 240
37.1.5 Zmna v systmu aplikovan pomoc WMI ..................................... 240

38 Npovda ................................................................... 241


38.1.1 Obsluha udlosti HelpRequested ..................................................... 241

39 Implementace pipravench rozhran (interfaces) .. 241

39.1.1 Implementace rozhran IDisposable ................................................. 241


39.1.2 Implementace rozhran IEnumerable ................................................ 242
39.1.3 Implementace rozhran ICompareble ................................................ 244
39.1.4 Implementace rozhran IFormattable ................................................ 246
39.1.5 Implementace rozhran ICloneable ................................................... 247

40 Komplety a reflexe ...................................................... 248


40.1 Prce s komplety (assemblies) ............................................ 250
40.1.1 Pstup k informacm o vstupnm kompletu ..................................... 251
40.1.2 Nalezen vstupnho bodu kompletu .................................................. 251
40.1.3 Vpis referencovanch komplet ze vstupnho kompletu ................ 252

40.2 Reflexe .................................................................................... 252


40.2.1 Dotazy ohledn typu promnn ........................................................ 252
40.2.2 Pevod aktuln hodnoty vtu na etzec ........................................ 252
40.2.3 Informace o typech v provdnm kompletu .................................... 253
40.2.4 Zjitn informac o td (konstruktory tdy) .................................. 254
40.2.5 Prochzen metod uvnit danho typu .............................................. 254

40.3 Dynamick kompilace kdu ............................................... 254


40.3.1 Kompilace dynamicky vytvoenho kdu
z programu > vytvoen test.exe ...................................................... 255

41 Nezabezpeen kd a Garbage Collection ........... 256


41.1 Nezabezpeen kd ............................................................ 256
41.1.1 Zjitn velikosti typu pes sizeof .................................................. 256
41.1.2 Pm alokace dan velikosti ze zsobnku ....................................... 256
41.1.3 Vytvoen reference na msto v pamti ............................................. 257

41.2 Garbage Collection .............................................................. 257


41.2.1 Vynucen uvolnn nepotebn pamti .............................................. 257
41.2.2 Vynucen uvolnn prostedk pomoc bloku using ......................... 258

42 Pstup k Windows API ................................................. 258


42.1.1 Voln funkce Windows API ........................................................... 258
42.1.2 Odesln a pijet uivatelsk Windows zprvy ................................ 259
42.1.3 Zskn HDC .................................................................................... 259

43 Rzn testovn ehokoli... ........................................ 260


43.1.1 Zskn ky pracovn plochy z promnn Screen ........................... 260
43.1.2 Informace o nzvu fontu pro menu (.NET 2.0) ................................ 260

43.2 SystemInformation ................................................................. 260


43.2.1 Jakm zpsobem byl zaveden pota? ............................................ 260
43.2.2 Test na ptomnost myi ................................................................... 261
43.2.3 Dal zpsob zskn ky obrazovky .............................................. 261

43.3 SystemEvents ......................................................................... 261


43.3.1 Jednoduch asova (timer) pes SystemEvents .............................. 261
43.3.2 Obsluha ukonen sezen (session) .................................................. 262
43.3.3 Testovn nzk pamti ..................................................................... 262
43.3.4 Reakce na zmnu v nastaven displeje .............................................. 262
43.3.5 Reakce na pidn/odebrn fontu do/ze systmu .............................. 263
43.3.6 Reakce na zmnu asu stanice .......................................................... 263

44 Tipy a triky v prci s jazykem a prostedm .............. 264


44.1.1 Pepsn chovn existujcch vlastnost ........................................... 264
44.1.2 Pekryt override metody .................................................................. 265
44.1.3 Pepsn metody ToString() ............................................................. 265
44.1.4 Vyuit klvesy <TAB> pro pidn kdu do tdy ........................... 266
44.1.5 Ochrana ped celoselnm peteenm ............................................ 266
44.1.6 Pouit rezervovanho slova pro promnnou, metodu, konstantu .... 267
44.1.7 Nov tda s vyuitm ablony tdy (.NET 2.0) ............................... 268

45 Nco z ostatnch oblast... .......................................... 269


45.1 Aplikace ................................................................................ 269
45.1.1 Filtrovn specifickho typu zprvy pes Application ...................... 269
45.1.2 Zpracovn vech ekajcch zprv ................................................... 270
45.1.3 Ukonen cel aplikace ..................................................................... 270
45.1.4 Reakce na ukonen aplikace ............................................................ 270

45.2 Pkazov dek ..................................................................... 270


45.2.1 Zskn celho pkazovho dku i s parametry ............................... 270
45.2.2 Prochzen pedanch parametr pkazovho dku ....................... 271

45.3 Promnn prosted ............................................................... 271


45.3.1 Prochzen a vpis hodnot existujcch promnnch prosted ......... 271
45.3.2 Naten hodnoty promnn prosted ............................................... 271

46 Programov ladn programu .................................. 272


46.1.1 Vstup informace do ladicho okna .................................................. 272
46.1.2 Vstup ladic informace do kategorie ............................................... 272
46.1.3 Podmnn vstup ladic informace ................................................. 272
46.1.4 Stromov vpis ladic informace ...................................................... 273

46.1.5 Vstup Assert() ladic informace ...................................................... 273


46.1.6 Vyvoln chyby s monost ukonit program ................................... 273
46.1.7 Smrovn ladicch hlen do souboru a do proudu konzole ........... 274

46.2 Zznam informac do urnlu .............................................. 274


46.2.1 Test existence danho typu urnlu .................................................. 274
46.2.2 Generovn zpisu do urnlu .......................................................... 274
46.2.3 Vpis hlen ze urnlu ................................................................... 274

47 C# a ASP .NET ............................................................... 275


47.1 Postup pro vytvoen ASP .NET aplikace v C#: .................... 275
47.2 ASP .NET pklady bez prce s daty ................................. 276
47.2.1 Prvotn inicializace formule ........................................................... 276
47.2.2 Dynamick vpis textu pes Response ............................................ 276
47.2.3 Pepsn metody Page.Render() ....................................................... 277
47.2.4 Zobrazen dialogovho okna s hlenm ........................................... 277
47.2.5 Vyvoln strnky do dialogu ............................................................ 277
47.2.6 Odesln emailu z ASP .NET ......................................................... 278
47.2.7 Vytvoen cookie a odesln na stanici .............................................. 278
47.2.8 Naten hodnoty cookie .................................................................... 278

47.3 ASP .NET prce s daty........................................................ 279


47.3.1 Oteven dat a napojen na DataGrid ................................................ 279
47.3.2 Jednoduch jednorzov vpis dat do DataGridu ............................ 279
47.3.3 Zmna barvy pozad v ASP .NET DataGridu aplikovan
na tetm dku ................................................................................. 279
47.3.4 Dynamick formtovn sloupce DataGridu na datum ..................... 280
47.3.5 Navrcen textu z odkazu LinkButton v DataGridu .......................... 280

48 Atributy ........................................................................ 281


48.1.1 Tvorba novho atributu .................................................................... 281
48.1.2 Pouit atributu praktick ukzka na Obsolete atributu .................. 282

49 Direktivy pedprocesoru ............................................. 282


49.1.1 Definovn symbolu pro pedprocesor ............................................. 282
49.1.2 Podmnn kontrola direktivy SYMBOL ..................................... 282
49.1.3 Podmnn kontrola SYMBOL/SYMBOL1 pouit opertoru OR .. 283
49.1.4 Vyuit direktivy #DEBUG .............................................................. 283
49.1.5 Vyuit direktiv #region a #endregion .............................................. 283

50 Jak do programu pidat... .......................................... 284


50.1 ...nov formul? .................................................................... 284
50.2 ...nov jmenn prostor s novou tdou? ............................... 284
50.3 ...dll knihovnu? ...................................................................... 284
50.3.1 Ukzkov implementace nov .dll knihovny .................................... 284

50.4 ...uivatelsk prvek (User Control)? ...................................... 285


50.4.1 Umstn uivatelskho prvku do projektu ....................................... 285
50.4.2 Umstn uivatelskho prvku do vlastn knihovny .......................... 285

50.5 ...konfiguran soubor? ......................................................... 286


50.6 ...novou vlastnost konfigurace? (Properties) (.NET 2.0) ...... 286

51 Zmny jazyka C# specifikace 2.0 .............................. 287


51.1 ablony typ (generics) ....................................................... 287
51.1.1 Omezen pro ablony typ (constraint) ............................................ 288

51.2 Anonymn metody ................................................................ 289


51.3 Nepln tdy (partial class) ................................................. 289
51.4 Nullpodporujc typy (nullable types) ................................ 290
51.4.1 Zjitn, zda nullpodporujc typ m piazenou hodnotu ................ 290
51.4.2 Vracen jin hodnoty, jeli nullpodporujc promnn null ............... 290

Rejstk ............................................................................... 291

een pklady v C# aneb C# skuten prakticky

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

Verze .NET s pklady

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

Nkter pravidla pro pouit zdrojov kdy

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.

1 4.1 Pravidla pro uit jmennch prostor (namespace)


Pro ilustraci pedpokldejme tuto deklaraci, kter pipojuje objekt XmlDocu-ment, jen pedstavuje dokument ve formtu
XML:
XmlDocument doc = new XmlDocument();

V ppad, e nebude v hlavice pipojena deklarace using pomoc:


using System.Xml;

oznm kompiltor pi kontrole chybu.


Druhou monost, jak jmenn prostor urit, a to ji bez pouit pkazu using, je jmennm prostorem pmo specifikovat
objekt. Pak by deklarace vypadala takto:

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.

1.4.2 Vstupy pro pklady


Pro ilustraci vstup mohou bt v kdech pouity tyto elementy:
l) MessageBox.Show() - zobrazuje daj do dialogovho boxu
2) listBoxl
- prvek ListBox pro vpisy rozshlejch informac J
3) textBoxl
- ppadn i prvek TextBox
Dle je nutn poznamenat, e nkter pklady se mohou zdt na prvn pohled nesmysln a e by bylo lep eit je zcela
jinak. Pkladem me bt nap. kd uveden u pkazu continue:
for ( int i = C; i < 3; i++ )
{
if { i == 1 ) continue; MessageBox.Show( "Krok . " + i.ToString());
}

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.

1.4.3 Pouit znak.... "v kdu


Ti znaky teek (..."), kter budou pouity uvnit kdu, znamenaj libovoln dal jin kd".

1.4.4 Upozornn pro zanajc programtory!


Jazyk C# stejn jako jazyky C/C++ rozliuje velikost psmen! Lze proto pout kd:
int Int = 10;

a jeho vsledkem je deklarace a inicializace promnn Int datovho typu int.

Nco ze zkladnch postup C#


V tto kapitole si ukeme nkter zkladn pravidla prce s jazykem C#.

2.1

Piazen hodnot promnnm

Zaneme deklaracemi a piazenm hodnot promnnm.

2.1.1

Deklarace promnn typu int s inicializac

int pedstavuje velmi asto pouvan celoseln typ.


int i = 5;

Nsledn je demonstrativn provedeno piazen nov hodnoty do tto promnn.

2.1.2

Deklarace a piazen promnn typu float s


inicializac

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

Deklarace promnn typu bool s inicializac

bool je logick promnn, kter me nabvat stav Ano/Ne - (true/false).


bool bValue = false; bValue = tree;

Nsledn je demonstrativn provedeno piazen nov hodnoty do tto promnn.

2.1.4

Piazen a zmna etzcov hodnoty

etzcov hodnota pedstavuje text. Tento text je uvozen znakem uvozovek ().
sValue = ''Zmna hodnoty";

Nsledn je demonstrativn provedeno piazen nov hodnoty do tto promnn.

2.1.5

Piazen hexadecimln hodnoty (estnctkov


soustava)

int i = '\x0201';

Piazovan hexadecimln hodnota pedstavuje destkov slo 513.

2.1.6

Piazen prvku z vtu

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.1.7 Piazen przdn reference


Nadsazen si lze toto piazen pedstavit jako nastaven nuly do selnho typu (int, double). k, e reference b nem
piazenou hodnotu - nikam neukazuje.

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

Umouje pehledn rozvtvit kd dle vce testovanch hodnot jednoho vrazu.


Vraz za switch mus bt v zvorce. Kad alternativa ase mus bt ukonena explicitnm penosem zen mimo pkaz
switch nebo na nkter jin nvst case v tme pkazu switch. To me obstarat pkaz break, goto, continue, return,
throw.
Blok default je proveden, kdy hodnota nebyla mezi ase hodnotami naleze- na. Tento default blok je nepovinn.
int i = 2:
switch (i)
{
case1: MessageBox.Show( "Jedna" ); break;
MessageBox.Show ( "Dv" ); break;

case2 :

case3 : MessageBox.Show( "Ti" ); break;


default : MessageBox.Show( "Jin" ); break;
}

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 };

Vype postupn vechny ti prvky pole.


Pozn.: Aby kolekce mohla bt ve foreach pouita, mus implementovat rozhran IEnumerable - to s sebou nese povinnost
implementace metod tohoto rozhran.

2.3.5

continue pruen smyky -> skok na zatek smyky

for ( int i = 0; i < 3; i++ )


{
if (i==1 ) continue;
MessageBox.Show( "Krok ." + i.ToString() );
}

Vype dialog s hodnotou 0" a pak s hodnotou 2". Vpis 1" je vynechn.

2.3.6

break - peruen smyky -> pln ukonen myky

for ( int i = 0; i < 3; it++ )


{
if ( i == 1 ) break;
MessageBox.Show("Krok . " + i.ToString() );
}

Vype pouze dialog s hodnotou 0". Pak je smyka peruena a pokrauje se a za n.


Pozn.: Pkaz break se asto pouv k ukonen alternativ ase v pkazu switch.

2.3.7 Implementace nekonen smyky


while ( true )
{
....
break;
}

Zobrazuje dva asi nejpouvanj zpsoby pro vytvoen nekonen smyky. Smyka se opout pomoc rezervovanho
slova break.

2.4 Voln metod a pedvn parametr


Metody a jejich voln tvo jednu z nejdleitjch oblast, kter je nutn zvldnout.
pozn.: Metoda je nzev pro funkci, kter je deklarovna v rmci objektu.

2.4.1

Pedvn parametr metodm

Sprvn deklarace pro funkci s parametry je tato:


public TestHash( string item1, string item2 ) Pozor! Nelze pout tvar: public TestHash (string item1, item2 )

2.4.2

Vyvoln metody s parametry a vrcen vsledku metody


int GetSum( int _iParam1, int _iParam2 )

{ re turn _iParaml + _iParam2);


private void buttonl_Click(object sender, System.EventArgs e)
}
int iResult = GecSum( 10, 20 );
MessageBox.Show( iResult.ToString() );
........
Vype hodnotu 30".

2.4.3

Pedn pole jako parametru


void write_array( string [ ] array )
{
string sText = '";

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

Vyvoln metody s parametry a vrcen hodnoty pes parametr (out)

void GetSum ( int _iParam1, int _iParam2, out int _iResult )


_iResult = _iParaml + _iParam2;
pTivate void buttonl_Click( object sender, System. Ever.tArgs e)
{
int iResult;
GetSum( 10, 20, out iResult );
MessageBox.Show(iResult.ToString() );
}

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

Vyvoln metody s parametry a vrcen hodnoty pes parametr (ref)

void GetSum{ int .iPararsl, int _iParam2, ref int _iResult )


{
_iResult = iParaml + _iParam2;
private void buttonl_Click(object sender, System.EventArgs e)
{
int iResult = -1;

Get.Sum( 10, 20, ref iResult );


MessageBox.Show ( iResult.ToString());
Vyvol metodu GetSum() s parametry 10 a 20, provede jejich souet a ten vrt pes parametr typu ref.
Pozor! Nese-li metoda parametr ref, mus bt s indikac tohoto parametru i vyvolna - ili i ped pslunm parametrem ve
voln metody mus bt rezervovan slovo ref pouito.
Rozdl oproti voln out je v tom, e hodnota ref parametru mus bt navc inicializovna ped prvnm pouitm v ref
voln metody.
Vsledek voln je uloen do promnn iResult (zde hodnota 30).

2.4.6 Voln statick metody deklarovan v jinm jmennm prostoru


Mme-li nov jmenn prostor s objektem MyMath, jen nese jednu statickou metodu MyMath.Sum():
namespace MyMathNtemeSpace
public class MyMath
{
static public int Sum( irnt iValue1, int iValue2 )
retun ( iValuel + iValue2 );
}
pak pro voln metody ze zkladn jednotky pouijeme: using MyMathNameSpace;

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

Peten opertoru +" ve vlastn nov td

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() );

zobraz text 60 - dvojnsobek soutu 10+20.


pozn.: Ve td je vidt zpsob pepsn metody MyInt.ToString() pro snadn textov vstup.

3.1.2

Peten opertoru pro implicitn petypovn na typ int

Vyjdeme-li z pedchoz tdy MyInt, pak, aby mohlo bt pouito:


int i = result

mus bt opertor (int) rovn ve td peten v tto metod:


public static implicit opertor int( Mylnt obj )
{
return( obj.value );
}

To zpsob, e do promnn i (typu int) bude uloena hodnota 60.


Pozn.: Implicitn konverzi pouvme, kdy se nov hodnota vejde" do clov a nehroz ztrta dat. Typickm pkladem je
pevod hodnoty typu int do long -long m dost prostoru, aby int hodnotu pojalo.

3.1.3 Peten opertoru pro explicitn petypovn na typ int


Vyjdeme-li opt z pedchoz tdy Mylnt, pak aby mohlo bt pouito:
int i = (int)result;

mus bt opertor (int) rovn ve td peten v tto metod:


public static explicit opertor int i (MyInt obj )
{
retum i(obj, value );
}

To zpsob, e do promnn i (typu int) bude uloena hodnota 60.


Pozn.: Explicitn konverzi pouvme, kdy se nov hodnota nevejde" do clov a hroz ztrta dat (nap. velk long do
menho int). Tak se pouv pro konverze mezi instancemi td. Je-li definovno implicitn i explicitn peten opertoru na
stejn typ, kompiltor vyvol chybu.

3.1.4 Peten opertor true a false


Po peten opertora true a false lze instance tdy pmo podrobovat logickmu testovn.
class Mylnt
{
public int value;
public MyInt( int value )
{
this.value = value;
}
}
public static bool opertor true ( MyIn obj )
{
retum obj.value > 0;
}
ublic static bool opertor false ( Mylnt obj )
{
retum obj.value <= 0;
}
}

MyInt i = new MyInt ( -100 );


MessageBox.Shcw ( "true" );
MessageBox.Show( "false" );

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.

3.2.1 Vytvoen jednoduchho indexem v rmci formule


public string this[ int iValue ];
{
return ( iValue.ToString());
}
privace void buttonl_Click(object sender, System.EventArgs e!)
{ MessageBox.Show( this[50] );
}

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.

Prce s instanc objekt

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

Dynamick vytvoen a zruen instance objekt

4-1 1 Vytvoen nov instance objektu Timer


System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 500;

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

Zruen objektu Timer


System.Timers.Timer timer = new System.Timer();
timer.Interval = 500;
.........
timer.Dispose;

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

Pouit klovho slova this

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;
}

K vytvoen instance tto tdy pouiji nsledujc voln:


MyInt il = newMyInt( 10 );

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

Konstruktor s jednm parametrem


public class MyClass
{
public MyClass ( int iValuel )
{
......
MessageBox.Show( iValuel.ToString() );
}
}
MyClass m1 = new MyClass( 10 );

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

Testy na typy objekt

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

Test na tdu instance objektu (i na pedka objektu)

K testovn, zda dan instance je dan tdy, se pouv opertor is.


private void listBoxl.DoubleClick(object sender, System.EventArgs e)
{
bool b = ( sender is ListBox); MessageBox.Show( b.ToString () );
}

Tento pklad vrac true, je-li pedan instance v parametru sender tdy List Box (je-li odvozen z tto tdy).

4.3.2

Test na tdu instance objektu a jej petypovn na zvolenou tdu

private void listBoxl.DoubleClick(object sender, System.EventArgs e)


{
if ( sender is ListBox)
ListBox li = (ListBox)sender;
}

Testuje, zda je pedan instance objektu v parametru sender typu ListBox; pokud ano, provd petypovn instance na typ
ListBox.

4.3.3

Vpis typu instance objektu

private void button1_Click(object sender, System.EventArgs e)


{
/* pokud neni Button, tak... */
if( !( sender is Button ))
MessageBox.Show( "Prvek nen typu Button, ale " + sender.GetType() .ToString());
return;
}
/* je-li Button, pokrauj zde */
Button button = (Button)sender;
........
}

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

Explicitn petypovn double na int

double d = 35.6; int i = (int)d;

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

Petypovn parametru sender na tdu Button

private void button1_Click(object sender, System.EvemArgs e)


Button b = (Button)sender;
MessageBox.Shcw( b.Name );

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

Deklarace vlastnost (properties)

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

Dynamick pidlen udlosti

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);

a udlost nen zatm piazena, nic se nedje.

5.1.2

Pidlen vce reakc na jednu udlost

Dynamick piazen dvou metod pro obsluhu stisku tlatka buttonl:


private void Clickl ( object sender, EventArgs e )
MessageBox.Show ("1" );
private void Click2 (object sender, EventArgs e)
{
MessageBox.Show( "2" );
}
buttonl.Click += new EventHandler( Clickl );
buttonl.Click += new EventHandler( Click2 );

Po stisku tlatka buttonl se zobraz dialog s 1" a pak s 2".

5.1.3

Odstrann jedn reakce na udlost (jsou-li ji pidleny)

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".

5.1.4 Ovlivnn vsledku pes udlost


asto se udlosti pouvaj i ve smyslu notifikanm - v prototypu metody udlosti je tento parametr pedn referenc
(odkazem).
Obsluha vlastn metody udlosti pak tuto promnnou bu ponech nebo uprav. Podle toho, co je v tomto parametru
vrceno, se pak chov program, kter metodu udlosti vyvolal.
Public delegate void CalcHandler( double d1, double d2, ref double result ); public class Suma public Suma( double dl, double d2 )
{
this.d1 = d1;
this.d2 = d2;
}
Public double doCalc()
{

6.1. 1

Obsluha obecn (nekonkrtn) vjimky


int i = 10;
int i = 0;
try
{
i= i / i1;
}
catch
{
MessageBox.Show( "Nastala vzjimka chyba");
}

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

Obsluha konkrtn vjimky


int i = 10;
int i = 0;
try
{
i = i / i1
}
catch(System.DivideByZeroExceptions)
{
MessagBox..Show( "'Nastalo dlen nulou." );
catch
{
MessagBox..Show( "'Nastala vyjmka chyba." );
}

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

Zskn blich informac o vjimce


int i = 10;
int i = 0;
double result= ( d1 + d2 );
AfLerCalc( d1, d2, ref result );
return (result);
double dl;
double d2;
public event CalcHandler AfterCalc;
private void AfterCalcProc( double dl, double d2, ref double result )
{
MessageBox.Show( Scring.Format( "Udlost probhla - {0}, {1}", dl, d2 ) );
resuit *= 2; }
private void buttonl_Click(object sender,: System.EventArgs e) { Suma s = new Suma( 10, 50 );
s.AfterCalc += new CalcHandler( AfterCalcProc);
double d = s.doCalc();
MessageBox.Show ( String.Format("Vsledek = {0}", d ) );

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++.

6.1.4 Vyvoln vjimky


int i = 10; int i1 = 5;
try { if (i1==S) throw new Exception( "Ptkou nelze dlit." );
catch ( Exception e1 ) {
MessageBox.Show ( "Chyba - " - e1.Message );
}

V ppad, e dlitel vrazu je roven pti, vyvol vjimku s pslunm hlenm.


Pozn.: Pklad je nesmysln, lze jej vyeit i podmnkou, zpsob vyvoln vjimky vak ukazuje nzorn.

Prce s konzol - konzolov aplikace


pouv se pro jednodu aplikace s textovm vstupem v dosovm" okn.
Pi vytven projektu konzolov aplikace se postupuje pes "New Project..." -> Console Application".

7.1.1

Vstup textu na konzoli


static vold Main(string[] args)
Console.WriteLine ( "Vstup na konzoli ...");
Console. Read ();

Vype na konzoli jeden dek a ek na stisk <Enter>.

7.1.2

Vstup na konzoli do ty dk pes jeden pkaz

{
ConsoleWrite ("Vystup\nna\nkonzoli\ndo vice radku")
ConsoleRead();
}
Vype na konzoli pod sebe tyi dky a ek na stisk <Enter>.

7.1.3

Formtovan vstup na konzoli

double d = 55.555;
Ccnsole.WriteLine( "Hodnota je {0:N2} procenc.", d );

Lze pouvat stejn masky, kter jsou pstupn u metody String.Format().


Tento pklad vype ,Hodnota je 55.56 procent".
Pozn.: Pklady na hlub pouit formtovacch masek lze nalzt v kapitole Prce s datovmi typy " - Prce s
etzci".

7.1.4

Uren vstupnho proudu (pro XmITextWriter)


System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter( Console.Out );
writer. WriteStart.Document ();
writer.WriteStartElement ( "Text");
.......
writer.WriteEndDocument () ;
writer.Closse();
Console.Read();

Tmto zpsobem lze zajistit, e jednoduch vstup z instance objektu XmLTextWriter bude automaticky
smovn na konzoli (Console.Out).

7.1.5

Vymazn konzole zvolenou barvou (.NET 2.0)


Console.BackgroundColor = ConsoleColor.Gray;
Console.Clear();
Console.ForegroundColor - ConsoleColor.Yellow;
Console.WriteLine( "Vystup na ed barv Zlutm psmem" );

.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

Ukonen pes <Ctrl+C> - odchycen klvesy na konzoli (.NET 2.0)

static void Main (string[] args)


{
Console.CancelKeyPress += new
ConsoleCancelEventHandler (Console.CancelKeyPress);
Console.WriteLine( "ekn na ukonen pes CTRL-C );
wile (true) { };
}
static void Console.CancelKeyPress(object sender, CcmsoleCancelEvenLArgs e)
Console.WriteLine( "Stisk klvesy/CTRL+C" );

Konzolov aplikace ek tak dlouho, dokud nen vyvolna udlost reakce na Console.CancelKeyPress - ta toti
pedstavuje stisk kombinace klves <Ctrl+C>.

Prce s komponentami z palety nstroj

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

bcm programu vak vidt nejsou (Timer, EventLog)

8.1

Spolen pro vechny vizuln komponenty

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

Zmna pozice prvku pes Control.Left a Control.Top


textBoxl.Left = 10; textBoxl.Top = 10;

Prvek bude pesunut na pozici [10,10].

8.1.2

Zmna pozice prvku pres Control.Location

textBoxl.Location = new Point: ( 10, 10 i;

Dal varianta pro zmnu pozice. Prvek bude pesunut na pozici [10, 10].

8.1.3 Zmna dlky prvku pes Control.Width


textBoxl.Width = 100;

Dlka prvku bude nastavena na 100 pixel.

8.1.4 Zmna dlky prvku pes Control.Size


textBoxl.Size = new Size( 1000, textBoxl.Height );

Alternativa pro zmnu rozmr - zde nastavuje dlku na 100, vku ponechv pvodn.

8.1.5

Zmna barvy psma a zmna barvy prvku pozad prvku


textBox1.ForeColor = Color.Red;
textBoxl.BackColor = Color.Yellow;

Nastavuje barvu poped (barvu textu) na ervenou a barvu pozad na lutou.

8.1.6

Zmna barvy rodiovskho objektu


if ( textBox1.Parent != null ) textBoxl.Parent.BackColor = Color.Red;

Zde je vidt pstup k rodiovskmu objektu, na kterm je prvek textBox1 umstn a zmna barvy pozad tohoto rodie.

8.1.7

Skryt objektu na formuli

Po zmn vlastnosti
nsledujcm zpsobem:

Control.Visible je

vyvolna

udlost

Con-trol.VisibleChanged. Tu lze pepsat, nap.

Private void textBoxlVisibleChanged(object sender, System.EventArgs e)


MessageBox.Show ("'Visible=" + c.Visible.ToString());

Jako praktick vznam lze uvst nap. automatick zobrazen jinho pole po zmn viditelnosti, apod.

8.1.8

Zkaz prce s objektem - objekt je viditeln, zkaz je graficky rozlien

textBox1.Enabled = false;

Po zmn vlastnosti Control.Enabled je vyvolna udlost Control.EnabledChanged. Tu lze pepsat, nap.


nsledujcm zpsobem:
private void textBoxl_EnabIedChanged(object.sender, System.EventArgs e)
{
Control c = (Control)sender;
MessageBox.Show( "Enabled=" + c.Enabled.ToString() );
}

8.1.9

Reakce na vstup do prvku (podporuje-li ji, nap. 1 textov pole)

private void textBoxl_Enter(object sender, System.EventArgs e)


{
labell.Text = 'Vstup do prvku';
}

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.

8.1.10 Reakce na vstup z prvku (podporuje-li ji, nap. textov pole)


private void textBoxl_Leave(object sender, System.EventArgs e)
labell.Text = "vstup z prvku";

Udlost je volna pi oputn prvku.

8.1.11 Reakce na zskn zaosten prvku (fokusu)


private void textBox1.GotFocus(object sender, EvenLArgs e)
{
label.Text = "Focus prvku";
}

Reakce je volna po zaosten prvku. Tato udlost je vyvolna a po udlosti Control.Enter.

8.1.12 Reakce na ztrtu zaosten prvku (fokusu)


private void textBox1.LostFocus(object sender, EventArgs e)
labell.Text = "Bez focusu";

Reakce je volna po ztrt zaosten. Tato udlost je vyvolna jet ped udlosti Control.Leave.

8.1.13 Zskn velikosti prvku jako typ Rectangle


Rectangle r = buttonl.ClienlRectangle;

Tato metoda je velmi vyuvna zejmna ve vykreslovn grafiky.

8.1.14 Control.SetStyle a pepsn notifikan metody Control.OnNotifyMessage()


Je-li nad prvkem formule nastaven atribut ControlSty-les.EnableNotifyMessage, je pro kadou zprvu, kter je
obsluhovna v procedue okna (WndProc), volna notifikan metoda OnNotifyMessage. Tuto metodu lze Pekrt a upravit
chovn pro specifickou zprvu.
private void buttonl_Click{object sender, EventArgs e)
{
this.SetStyle( ControlStyles.EnableNotifyMessage, true );
}
protected override void OnNtotifyMessage(Message m);
{
base.OnNotifzMessage (m);
if ( m.Msg == '\x201' )
listBoxl.Items.Add( m.ToString()); }

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.

8.1.15 Zmna kurzoru


this.Cursor - Cursors.WaitCursor; buttonl.Cursor = Cursors.Default;

Nastav kurzor hodin nad celm formulem (mimo tlatko button1, kde
ponech kurzor implicitn).

8.1.16 Naten kurzoru ze souboru


Cursor myCursor = new Cursor(@ "c:\lano.cur");
if ( myCursor != null ) this.Cursor = mzCursor;

Z externho souboru c:\lano.cur nat kurzor a aktivuje ho.

8.2 Button
Klasick tlatko.

8.2.1

Zmna textu na tlatku

8 2.2 Zmna textu i obrzku na tlatku s definic jeho zarovnn


button1.Text = "Text";
button1.TextAlign = ContentAlignraent.TopCenter;
button1.Image = Image.FromFile( @"c:\calc.bmp" ); button1.ImageAlign = ContentAlignment.BottomCenter;

Uruje se zarovnn textu i zarovnn obrzku (kter byl naten ze souboru).

8.2.3

Zmna barvy tlatka po najet my a zmna na Flat styl (.NET 2.0)


buttonl.FlatAppearance.MouseOvnerBackColor; buttonl.FlatStyle = FlatStyle.Flat;

Pes Button.FlatAppearance lze nastavit zpsob vykreslen tlatka, zde je jako styl pouit Flat (ploch).

8.2.4

Zkrcen dlouhho textu tlatka a doplnn znaky "..."(.NET 2.0)


buttonl. Autoelipsis = true;
button1.Text = 'Toto je del tex";

Del text, kter by jinak pesahoval, je zkrcen a ukonen znaky ...".

8.3

ComboBox

Seznam hodnot, v jeden okamik me bt viditeln jedna hodnota.

8.3. 1

Naplnn hodnot do ComboBoxu s aktivac prvn hodnoty

comboBox1.Items.Clear();
comboBox.Items.Add("Hodnota 1");

You might also like