Obsah Úvod Co v knize najdete Poděkování
Základy 1. Komentáře 2. Dokumentační komentáře 3. Přehled značek XML dokumentace 4. Vykonání příkazu po splnění podmínky (neúplný příkaz if) 5. Vykonání příkazu i po nesplnění podmínky (úplný příkaz if) 6. Správné použití logických operátorů 7. Kladení několika podmínek (příkaz switch) 8. Omezení kladená na příkaz switch 9. Nejjednodušší výpis čísel pomocí cyklu for 10. Dynamické počítání iterační proměnné (cyklus for bez aktualizační části) 11. Využití možnosti neprovést cyklus ani jednou (cyklus while) 12. Možnost kontroly podmínky po vykonání příkazu (cyklus do-while) 13. Výpis všech prvků pole (cyklus foreach) 14. Nucené ukončení jednotlivého průchodu cyklem – příkaz continue 15. Násilné ukončení běhu cyklu – příkaz break 16. Přehled předdefinovaných datových typů 17. Balení a vybalování (boxing a unboxing) 18. Jak zjistit datový typ hodnoty uložené v proměnné typu object 19. Upozornění na zastaralou metodu 20. Metoda s proměnným počtem parametrů (klíčové slovo params) 21. Jak potlačit funkčnost metody rodičovské třídy ve třídě odvozené 22. Vyvoláváme výjimku 23. Vyvoláváme výjimku se specifickým hlášením 24. Jak zachytit výjimku 25. Zachytávání více druhů výjimek 26. Jak vyvolat výjimku u tichého přetečení (příkaz checked) 27. Provedení příkazu výjimka/nevýjimka (blok finally) 28. Jak získat chybovou zprávu vyvolané výjimky 29. Vykonání příkazu i po chybovém hlášení (return v bloku try) 30. Předávání parametrů odkazem (použití klíčového slova ref) 31. Předávání parametru bez přiřazení hodnoty (Použití klíčového slova out) 32. Modifikátory určující přístup k položkám třídy 33. Deklarace konstruktoru 34. Kopírování tříd a struktur
27 27 27
29 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 39 39 40 40 40
3
K1562.indd 3
6.6.2008 10:52:31
Obsah 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
Rozdíly mezi třídou a strukturou Jak rozdělit třídu na více částí (.NET 2.0) Přístup ke třídě bez nové instance (využití statické třídy) Definice rozhraní společného pro odvozené třídy (abstraktní třída) Deklarace zapečetěné třídy Deklarace výčtového typu Vypsání jednotlivých položek výčtového typu Vypsání jednotlivých položek výčtového typu 2 Jak vykonávat daný kód neustále dokola Jak vykonávat daný kód neustále dokola bez zamrznutí Jak nastavit proměnnou pouze pro čtení Deklarace vlastnosti Co jsou a k čemu slouží vlastnosti Přetěžování operátorů Co je a k čemu slouží indexer? Deklarace metody Přetěžování metod Modifikátory metod Ukončení běhu metody s vrácením její návratové hodnoty (return) Deklarace konstanty Import jmenných prostorů (příkaz using) Jak zjistit, zda nulovatelný datový typ obsahuje nějakou hodnotu Podmíněný překlad kódu Zjištění, zda aplikace běží v režimu ladění, či nikoli Číslování řádků kódu při překladu (direktiva #line) Ukrytí řádků kódu před debuggerem (direktiva #line hidden) Výpis textu při překladu (direktiva #warning) Výpis chybové hlášky při překladu (direktiva #error) Rozdělování kódu na přehlednější oblasti (direktivy #region a #endregion) Zjištění zbytku po dělení dvou čísel Zjištění kompatibility objektu s daným typem (operátor is) Přetypovaní objektu na daný typ (operátor as) Zjištění, jak dopadlo vyhodnocení podmínky (operátor ?:) Reprezentace typu pomocí třídy Type Rozdíl ve využití prefixových a postfixových operátorů
Algoritmy 70. 71. 72. 73. 74. 75. 76. 77. 78.
Zjištění, zda je číslo sudé Zjištění, zda je číslo dělitelné jiným beze zbytku Jak získat pole všech prvočísel v intervalu od 2 do N Zjištění minimální a maximální hodnoty číselného typu Vytvoření instance číselného datového typu z řetězce Jak z řetězce získat číslo zapsané s oddělovačem tisíců Jak zaokrouhlit číslo nahoru Jak vypočítat sinus úhlu vyjádřeného ve stupních Jak vypočítat kosinus úhlu vyjádřeného ve stupních
41 41 42 42 43 43 43 44 44 44 45 45 45 46 47 47 48 48 49 49 49 50 50 50 51 51 51 52 52 52 53 53 54 54 54
55 55 55 55 56 56 56 56 56 57
4
K1562.indd 4
6.6.2008 10:52:31
Obsah 79. Jak vypočítat tangens úhlu vyjádřeného ve stupních 80. Zaokrouhlení čísla na několik desetinných míst 81. Získání absoulutní hodnoty daného čísla 82. Výpočet n-té odmocniny daného čísla 83. Výpočet n-té mocniny daného čísla 84. Zaokrouhlení ceny na padesátihaléře 85. Výpočet logaritmu 86. Převod hodnoty úhlu ve stupních na radiány 87. Vygenerování pseudonáhodného čísla 88. Vygenerování řetězce z náhodných znaků abecedy 89. Vygenerování řetězce z náhodných písmen a číslic 90. Náhodné vygenerování řetězce z předdefinovaných znaků 91. Vygenerování série náhodných čísel 92. Vygenerování pseudonáhodného čísla typu double v intervalu 0–1 93. Ověření, zda jde o celé číslo 94. Jak získat desetinnou část čísla 95. Řešení kvadratické rovnice 96. Převedení časového údaje v sekundách na hodiny, minuty a sekundy 97. Nalezení nejmenšího čísla v nesetříděném poli 98. Jak nalézt nejčastěji se vyskytující číslo v poli 99. Nalezení největšího čísla v poli čísel 100. Zjištění souřadnic maxima kvadratické funkce 101. Jak v poli nalézt prvek a vrátit index jeho prvního či posledního výskytu 102. Jak vypočítat aritmetický průměr z hodnot uložených v poli 103. Jak vypočítat geometrický průměr z hodnot uložených v poli 104. Výpočet faktoriálu 105. Výpočet počtu variací n prvků k-té třídy bez opakování 106. Vypočet počtu kombinací z n prvků k-té třídy bez opakování 107. Výpočet počtu kombinací z n prvků k-té třídy s opakováním 108. Trojúhelníková nerovnost 109. Zjištění pohlaví z rodného čísla 110. Ověření validity rodného čísla 111. Ověření validity IČO 112. Vypočet poslední (kontrolní) číslice IČO 113. Převod čísla z decimální soustavy do binární 114. Převod čísla ze šestnáctkové soustavy 115. Převod čísla o základu menším než 10 na číslo typu int 116. Převod čísla typu int na číslo o základu menším než 10 117. Jak rozložit číslo na součin prvočísel 118. Seřazení řetězců od nejkratšího po nejdelší 119. Součet prvních n členů aritmetické posloupnosti 120. Součet prvních n členů geometrické posloupnosti 121. Zjištění, zda je posloupnost klesající, konstantní či rostoucí 122. Tvoří čísla uložená v poli aritmetickou posloupnost? 123. Tvoří čísla uložená v poli geometrickou posloupnost? 124. Vypsání všech čísel dělitelných daným číslem v určitém intervalu
57 57 57 58 58 58 58 59 59 59 59 60 60 61 61 61 61 62 62 62 63 63 64 64 64 64 65 65 65 65 66 66 66 67 67 68 68 68 69 69 70 70 71 71 72 72
5
K1562.indd 5
6.6.2008 10:52:31
Obsah 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139.
Jak převést teplotu v kelvinech na stupně Celsia Jak převést teplotu ve stupních Celsia na kelviny Jsou čísla v poli setříděna od největšího po nejmenší? Jsou čísla v poli setříděna od nejmenšího po největší? Jak setřídit čísla uložená v poli Jak v setříděném poli vyhledat prvek Převrácení pořadí znaků v řetězci Jak vypočítat medián Jak nalézt modus ve skupině čísel Jak vypočítat průměrnou odchylku Jak vypočítat rozptyl Jak vypočítat směrodatnou odchylku Jak spočítat řetězový index Jak spočítat základní index Jak spočítat tempo přírůstku
Práce s kolekcemi 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167.
Co je to pole a jak s ním pracovat Vytvoření instance nového pole Jak vytvořit pole z daných prvků Zpřístupnění jednotlivých prvků pole Jak zjistit počet prvků pole Iterace jednotlivých prvků jednorozměrného pole pomocí cyklu for Iterace jednotlivých prvků jednorozměrného pole pomocí příkazu foreach Jak překopírovat pole do jiného, tak aby jeho prvky začínaly na konkrétním indexu Jak nastavit všechny prvky pole na určitou hodnotu Jsou všechy prvky v poli stejné? Jak z pole vybrat prvek náhodným způsobem Jak posunout prvky pole o určitý počet pozic (cyklický posun) Jak zjistit, jakého datového typu jsou prvky v poli typu object Jak vytvořit vícerozměrné pole a zjistit počet jeho prvků Vypsání jednotlivých řetězců pole oddělených oddělovačem Jak iterovat jednotlivé prvky dvourozměrného pole Jak získat počet všech prvků v poli Jak v jednorozměrném poli vyhledat prvek pomocí algoritmu binárního vyhledávání (Binary Search) Jak nastavit prvky pole ležící v určitém rozsahu na jejich implicitní hodnotu Jak převrátit pořadí prvků v poli Jak získat index prvního výskytu prvku v poli Jak získat index posledního výskytu prvku v poli Jak zjistit počet dimenzí pole Jak překopírovat prvky pole, jež začínají na určitém indexu, do pole jiného Jak překopírovat pole do jiného Jak vytvořit mělkou kopii pole Jak setřídit prvky pole Jak setřídit pouze určitý úsek pole
72 73 73 73 73 73 74 74 74 75 75 75 76 76 76
77 77 77 77 77 77 78 78 79 79 79 79 80 80 80 81 81 81 81 82 82 82 82 83 83 83 83 84 84
6
K1562.indd 6
6.6.2008 10:52:32
Obsah 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213.
Jak získat vrchní hranici pole Jak náhodně promíchat prvky v poli Jak procházet kolekci pomocí enumerátoru Jak deklarovat zubaté pole Co je to zásobník a jak s ním pracovat Jak vytvořit zásobník z jiné kolekce Jak do zásobníku vložit prvek Jak ze zásobníku získat objekt Zjištění, zdali zásobník obsahuje určitý objekt Jak zjistit počet prvků zásobníku Iterace jednotlivých prvků zásobníků Jak ze zásobníku získat objekt, aniž bychom ho odstranili Ověření, zda nevybíráme z prázdného zásobníku Jak odstranit všechny prvky zásobníku Jak převrátit pořadí prvků v zásobníku Jak iterovat jednotlivé prvky zásobníku Co je to fronta a jak s ní pracovat Jak vytvořit frontu z jiné kolekce Jak do fronty vložit prvek Jak prvek z fronty získat Jak zjistit počet prvků fronty Jak zjistit, zda fronta obsahuje konkrétní prvek Jak odstranit všechny prvky z fronty Jak snížit kapacitu fronty na aktuální počet prvků Co je třída System.Collections.ArrayList a k čemu slouží Jak vytvořit instanci třídy ArrayList z jiné kolekce Přidání jiné kolekce Jak z instance třídy ArrayList odstranit rozsah prvků Jak do kolekce typu ArrayList přidat obsah jiné kolekce na zadanou pozici Jak vytvořit kolekci typu ArrayList s předem daným počtem prvků Jak do kolekce přidat nový objekt Jak odstranit prvek z kolekce Jak do kolekce přidat prvek na určité pozici Jak v kolekci nahradit určitý prvek Jak převrátit pořadí prvků v kolekci typu ArrayList Jak setřídit prvky kolekce typu ArrayList Jak setřídit pouze určitou část kolekce typu ArrayList Jak v kolekci vyhledat prvek Jak vyhledat prvek v určitém úseku kolekce Zjištění, zda je možné prvky v kolekci setřídit Jak převést prvky kolekce na pole určitého typu Jak vytvořit kopii kolekce typu ArrayList pouze pro čtení Jak vytvořit instanci třídy ArrayList obsahující určitý počet stejných prvků Jak vytvořit instanci třídy ArrayList o stálé velikosti Jak setřídit řetězce v kolekci ArrayList dle národních zvyklostí Co je a k čemu slouží kolekce System.Collections.Hashtable
84 84 85 85 85 86 86 86 86 86 87 87 88 88 88 89 89 89 89 89 90 90 90 91 91 91 91 91 92 92 92 92 92 93 93 94 94 94 95 95 95 96 96 96 97 97
7
K1562.indd 7
6.6.2008 10:52:32
Obsah 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241.
Jak vložit do hešové tabulky objekt s určitým klíčem Jak zjistit délku kolekce Hashtable Jak z kolekce Hashtable získat hodnotu určenou daným klíčem Zjištění, zda hešová tabulka obsahuje určitý klíč Zjištění, zda hešová tabulka obsahuje určitou hodnotu Jak nahradit určitý prvek v hešové tabulce jiným Jak iterovat jednotlivé prvky či klíče hešové tabulky Co je a k čemu slouží třída System.Collections.SortedList Jak do seznamu přidat prvek s daným klíčem Ověření, zda kolekce již neobsahuje klíč, který do ní chceme vložit Jak odstranit prvek z kolekce Zjištění, zda kolekce typu SortedList obsahuje určitý klíč či určitou hodnotu Jak z kolekce SortedList získat určitou hodnotu Získání kolekce všech hodnot Jak pozměnit hodnotu určitého prvku v kolekci typu SortedList Jak získat jeden či všechny klíče kolekce typu SortedList K čemu slouží bitové pole (System.Collections.BitArray) Argumenty konstruktoru třídy BitArray Bitový součin (AND) Exkluzivní nebo (XOR) Bitová negace (NOT) Bitové nebo (OR) Jak nastavit všechny logické hodnoty kolekce typu BitArray na určitou hodnotu K čemu se dají využít generické kolekce Iterace slovníkových kolekcí Vytvoření nové instance generické třídy Jak vytvořit vlastní komparátor Jak vytvořit vlastní enumerátor kolekce
Regulární výrazy a práce s textem 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257.
Jak zjistit, zda řetězec začíná či končí určitým podřetězcem Jak zjistit, zda jsou dva řetězce shodné Jak zjistit, zda jsou dva řetězce shodné bez ohledu na velikost písmen Zjištění indexu prvního výskytu podřetězce v řetězci Jak zjistit index posledního výskytu podřetězce v řetězci Převedení pole bajtů na řetězec a naopak Jak vložit jeden řetězec do druhého Jak z řetězce odstranit vybrané podřetězce Vypsání textu po řádkách Jak vypsat jednotlivá slova v řetězci Jak zjistit počet slov a vět v řetězci Zjištění, zda je řetězec celým číslem Změna počátečních písmen ve větě na velká Jak v řetězci napsat uvozovky Nastavení velikosti písmen určitého řetězce Jak zjistit délku řetězce
97 98 98 98 98 98 99 99 99 99 100 100 100 101 101 101 102 102 102 103 103 103 103 103 104 104 104 105
107 107 107 107 108 108 108 108 108 109 109 109 110 110 111 111 111
8
K1562.indd 8
6.6.2008 10:52:32
Obsah 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303.
Jak doplnit řetězec zleva či zprava nějakým znakem Jak umístit každou větu řetězce na samostatný řádek Převod pole znaků na řetězec Jak převést řetězec na pole znaků Odstranění zdvojených mezer v řetězci Ukončení vět v řetězci tečkami Jak zjistit, zda je znak číslem Jak zjistit, zda je znak velké, či malé písmeno Jak v řetězci vyhledat slova napsaná velkými písmeny Jak převést číslo na řetězec Konverze řetězce na číslo Vyjmutí podřetězce ze řetězce Jak vybrat z řetězce podřetězec, který začíná určitým podřetězcem Jak vybrat z daného řetězce řetězec, který končí určitým podřetězcem Jak do řetězce přidat nový řádek Jak rozdělit řetězec pomocí oddělovačů Převedení znaku typu string na char Odstranění části řetězce Jak vypsat řetězec po jednotlivých znacích Spojování řetězců Procházení jednotlivých znaků řetězce Odstranění zadaných znaků ze začátku či konce řetězce Vyhledání řetězce podle regulárního výrazu Vyhledání více podřetězců v řetězci Jak zjistit, zda řetězec obsahuje podřetězec definovaný regulárním výrazem Jak zjistit délku nalezeného podřetězce Nastavení kritérií regulárních výrazů Jak zjistit počet nalezených podřetězců Odstranění nalezeného podřetetězce ze řetězce Jak ze zdrojového kódu vybrat poznámky (komentáře) Jak zjistit index prvního výskytu hledaného řetězce Jak v řetězci nahradit nalezené podřetězce Jak nastavit vyhledávání podřetězců v řetězci od konce Vyhledání IP adres v řetězci Nalezení rodného čísla v řetězci Vyhledání IP adres v řetězci a kontrola, zdali je IP validní Jak očíslovat jednotlivé řádky v řetězci Jak vyhledat v řetězci datum ve formátu dd.mm.rrrr Jak vyhledat v řetězci čas ve formátu hh.mm.ss Jak v řetězci vyhledat webovou adresu Jak v řetězci vyhledat e-mailovou adresu Jak v řetězci najít cestu k souboru či ke složce Je zadána cesta k souboru, či ke složce? Získání jednotlivých vět z řetězce Jak získat z řetězce slova uzavřená do uvozovek Jak v textu nalézt vzorec lineární rovnice ve tvaru y = ±ax ± b
111 112 112 112 113 113 113 114 114 114 115 115 115 116 116 116 116 117 117 117 118 118 118 119 119 120 120 121 121 122 122 122 123 123 124 124 125 125 126 126 127 127 127 127 128 129
9
K1562.indd 9
6.6.2008 10:52:32
Obsah 304. 305. 306. 307. 308. 309.
Jak získat jednotlivé parametry lineární rovnice Nalezení kvadratické rovnice ve tvaru y= ±ax2 ±bx ±c Získání jednotlivých koeficientů kvadratické rovnice Jak v řetězci najít jméno osoby Jak získat stanovený počet podřetězců nalezených v řetězci Zjištění počtu řádků v řetězci
Ovládací prvky 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347.
Jak otevřít nové okno Nastavení či zjištění titulku formuláře Nastavení rozměrů formuláře Zjištění rozměrů formuláře Jak skrýt nebo zobrazit okno Jak skrýt zobrazení okna v hlavní liště Jak nastavit pozici okna Jak zjistit pozici formuláře na obrazovce Zjištění, že se změnila pozice formuláře Jak detekovat změnu rozměrů formuláře Jak minimalizovat nebo maximalizovat okno Zjištění, zda je okno minimalizováno, nebo maximalizováno Nastavení průhlednosti okna Nastavení barvy a stylu písma daného formuláře Nastavení stylu písma daného formuláře Nastavení průhledné klientské oblasti Nastavení kurzoru, jež bude zobrazen nad oknem aplikace Nastavení obrázku na pozadí okna Jak zamezit problikávání obrázku na pozadí okna Způsoby umístění obrázku na pozadí Jak znepřístupnit veškeré prvky na formuláři Jak nastavit ikonu aplikace Nastavení nejmenšího a největšího možného rozměru formuláře Jak nastavit okno bez titulkové lišty Nastavení okrajů formuláře Jak z formuláře odstranit tlačítko pro minimalizování či maximalizování okna Odstranění tlačítek lišty daného formuláře Nastavení rozměrů okna při jeho maximalizování Okno vždy v popředí Vycentrování formuláře Jak nastavit počáteční umístění okna Jak aktivovat okno Jak zamezit úpravám rozměru formuláře Zjištění, zda bylo na formulář klepnuto levým, či pravým tlačítkem myši Zjištění, kterým tlačítkem bylo klepnuto mimo formulář Zjištění souřadnic bodu ukazatele myši nad formulářem Zjištění souřadnic ukazatele myši na obrazovce Znemožnění uzavření okna
129 129 130 130 130 131
133 133 133 133 133 134 134 134 134 134 134 135 135 135 135 136 136 136 137 137 137 137 137 137 138 138 138 138 138 139 139 139 139 139 139 140 140 140 140
10
K1562.indd 10
6.6.2008 10:52:32
Obsah 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393.
Zjištění důvodu uzavření okna Uzavření okna Zakreslení okna do obrázku Zachycení stisknuté klávesy Zjištění, zda je okno zobrazeno Jak vytvořit vlastněné okno? Jak formuláři vytvořit vlastněné okno Jak získat výčet vlastněných oken daného formuláře Jak na formulář přidat komponentu za běhu aplikace Zjištění počtu komponent na formuláři Odstranění komponenty z formuláře Jak odstranit všechny komponenty z formuláře Dětské a hlavní okno v MDI Zjištění, zda jde o dětské okno v MDI Přístup ke kolekci dětských oken Zjištění počtu dětských oken Jak aktivovat dětské okno Jak získat aktivní dětské okno Uspořádání dětských oken Několik způsobů uspořádání dětských oken Tlačítko, zarovnání textu Tlačítko, nastavení vizuálního stylu tlačítka Zaškrtávací políčko, zjištění stavu zaškrtnutí Zaškrtávací políčko, nastavení vzhledu tlačítka Zaškrtávací políčko, nastavení stavu zaškrtnutí Zaškrtávací políčko, trojhodnotová logika Zaškrtávací seznam (CheckedListBox), zjištění počtu zaškrtnutých políček Zaškrtávací seznam, přidávání záznamů Zaškrtávací seznam, odstranění záznamů Zaškrtávací seznam, ověření existence prvku Zaškrtávací seznam, získání či nastavení hodnoty zaškrtnuté položky Zaškrtávací seznam, nastavení počtu vybíraných položek Zaškrtávací seznam, přístup k označeným položkám Zaškrtávací seznam, nastavení stavu zaškrtnutí políčka Zaškrtávací seznam, zjištění stavu zaškrtnutí označeného záznamu ComboBox, vložení nového záznamu ComboBox, zjištění textu zvoleného záznamu Kontextová nabídka, přiřazení ovladácímu prvku Kontextová nabídka, práce s položkami Kontextová nabídka, zobrazení nabídky Kombo (ComboBox), naplnění z položek výčtového typu DataGridView, naplnění daty z tabulky DataGridView, nastavení pouze pro čtení a zákaz výběru více hodnot DataGridView, výpis názvů sloupců DataGridView, nastavení způsobu výběru políček DataGridView, označení všech záznamů
141 141 141 141 142 142 142 142 143 143 143 143 143 144 144 144 144 145 145 145 145 146 146 146 146 146 147 147 147 147 147 148 148 148 148 148 149 149 149 149 150 150 150 150 150 151
11
K1562.indd 11
6.6.2008 10:52:32
Obsah 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439.
DataGridView, zrušení označení vybraných záznamů DataGridView, třídění hodnot DataGridView, přístup k jednotlivým hodnotám DataGridView, zákaz kopírování do clipboardu DataGridView, několik druhů kopírování do schránky DataGridView, přidání sloupce obsahujícího zaškrtávací políčko DataGridView, zjištění čísla prvního řádku prvního sloupce DateTimePicker, nastavení data DomainUpDown, přesun na předchozí či další hodnotu ErrorProvider, vyvolání chyby ErrorProvider, odstranění varovných ikonek ErrorProvider, nastavení ikony ErrorProvider, nastavení blikání varovné ikony ErrorProvider, nastavení odsazení ikony FlowLayoutPanel, nastavení uspořádání jednotlivých komponent Vodorovný posuvník (HScrollBar), zjištění pozice táhla Vodorovný posuvník, zjištění pozice táhla v procentech Vertikální posuvník (VscrollBar), zjištění hodnoty táhla Nápis (Label), změna písma Nápis (Label), změna barvy písma Seznam (ListBox), přidání nové hodnoty Seznam (ListBox), odstranění všech záznamů Seznam (ListBox), zjištění textu označené položky Seznam (ListBox), zjištění počtu všech záznamů Seznam (ListBox), zjištění počtu označených záznamů Seznam (ListView), vkládání položek Seznam (ListView), nastavení barvy písma a barvy pozadí jednotlivých záznamů Seznam (ListView), jak urychlit vkládání položek Seznam (ListView), skok na poslední položku Seznam (ListView), povolení označení více položek Seznam (ListView), vložení záznamu na určitou pozici Seznam (ListView), odstranění posuvníků Seznam (ListView), uložení jednotlivých hodnot do pole typu string Seznam (ListView), procházení označených položek Seznam (ListView), odstranění všech položek Seznam (ListView), třídění řetězců Pruh nabídky (MenuStrip), přidání položky Pruh nabídky (MenuStrip), odstranění položky Pruh nabídky (MenuStrip), zjištění, zda je položka označena Pruh nabídky (MenuStrip), přiřazení obrázku položce Pruh nabídky (MenuStrip), nastavení stylu písma Kalendář (MonthCalendar), nastavení data Kalendář (MonthCalendar), zjištění vybraného data Kalendář (MonthCalendar), nastavení rozmezí dat Kalendář (MonthCalendar), nastavení tučně zvýrazněných dat NotifyIcon, zobrazení bublinové nápovědy
151 151 151 151 152 152 152 152 153 153 153 153 153 154 154 154 154 154 155 155 155 155 155 155 155 155 156 156 156 156 157 157 157 157 157 157 158 158 158 159 159 159 159 159 159 160
12
K1562.indd 12
6.6.2008 10:52:32
Obsah 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485.
Číselník (NumericUpDown), zjištění hodnoty Číselník (NumericUpDown), nastavení minima a maxima Číselník (NumericUpDown), zobrazení čísla v šestnáctkové soustavě Panel, pozadí v lineárně gradientním přechodu Panel, překreslení obsahu do bitmapy Panel, nastavení dokování Panel, nastavení ukotvení Obrázek (PictureBox), načtení obrázku ze souboru či webové adresy PictureBox, načtení obrázku ze souboru PictureBox, přizpůsobení rozměrů rozměrům obrázku PictureBox, zjištění barvy vybraného pixelu obrázku Indikátor postupu (ProgressBar) Přepínač (RadioButton), nastavení či zjištění stavu zaškrtnutí RichTextBox, přiblížení obsahu RichTextBox, zjištění počtu slov RichTextBox, zjištění délky textu RichTextBox, zjištění délky označeného textu RichTextBox, nastavení maximální délky textu RichTextBox, načtení obsahu ze souboru RichTextBox, uložení obsahu do souboru RichTextBox, nastavení barvy písma vybraného textu RichTextBox, nastavení stylu a barvy písma RichTextBox, nastavení barvy pozadí RichTextBox, vložení textu ze schránky RichTextBox, zkopírování textu do schránky RichTextBox, vyjmutí textu a uložení do schránky RichTextBox, získání označeného textu RichTextBox, nastavení zarovnání RichTextBox, získání řádků a zjištění jejich počtu RichTextBox, vyhledání řetězce RichTextBox, nastavení způsobu vyhledávání RichTextBox, vyhledávání od konce RichTextBox, vyhledání řetězců a jejich barevné označení RichTextBox, barevné zvýraznění řetězců odpovídajících regulárnímu výrazu RichTextBox, nastavení pozice kurzoru na určitou pozici RichTextBox, nastavení pozice kurzoru na začátek aktuálního řádku RichTextBox, nastavení pozice kurzoru na konec textu RichTextBox, odrážky RichTextBox, nastavení horního a dolního indexu RichTextBox, zobrazení předchozího obsahu TabControl, nastavení nadpisu záložek Textové pole (TextBox), zjištění textu Textové pole (TextBox), přečtení číselné hodnoty Textové pole (TextBox), text na více řádků Textové pole (TextBox), zjištění počtu řádků Textové pole (TextBox), maskování znaků
160 160 160 161 161 161 161 162 162 162 162 162 163 163 163 163 163 164 164 164 164 164 164 165 165 165 165 166 166 166 166 166 167 167 167 167 168 168 168 168 168 169 169 169 169 169
13
K1562.indd 13
6.6.2008 10:52:32
Obsah 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511.
Textové pole (TextBox), text pouze pro čtení Textové pole (TextBox), nastavení písma a jeho barvy Textové pole (TextBox), zjištění označeného textu Textové pole (TextBox), text pouze velkým či malým písmen Textové pole (TextBox), otevření textového soboru Textové pole (TextBox), uložení obsahu textového souboru Textové pole (TextBox), nastavujeme zaměření Časovač (Timer) Bublinová nápověda (ToolTip) Strom (TreeView), překreslení obsahu do bitmapy Strom (TreeView), přidání nového uzlu Strom (TreeView), přístup k jednotlivým uzlům Strom (TreeView), odstraňování uzlů Strom (TreeView), získání kořenového uzlu Strom (TreeView), získání vybrané položky Strom (TreeView), rozbalení a sbalení položek Strom (TreeView), zjištění počtu uzlů Webový prohlížeč (WebBrowser), navigování na stránku Webový prohlížeč (WebBrowser), zjištění stavu načítání stránky Webový prohlížeč (WebBrowser), zjištění počtu stažených bajtů dané stránky Webový prohlížeč (WebBrowser), aktualizace Webový prohlížeč (WebBrowser), zastavení načítání stránky Webový prohlížeč (WebBrowser), tisk Webový prohlížeč (WebBrowser), zjištění, zda je prohlížeč zaneprázdněn Webový prohlížeč (WebBrowser), zjištění titulku a zdrojového kódu webové stránky Webový prohlížeč (WebBrowser), vlastnosti webové adresy
Datum a čas 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529.
Jak zjistit aktuální datum Jak zjistit, zda je rok přestupný Zjištění názvu dnešního dne Jak zjistit, kolikátým dnem v roce je dnešek Zjištění, kolik dní zbývá do konce roku Jak zjistit počet dnů v určitém měsíci Vytvoření data ze dne, měsíce a roku Jak zjistit, které ze dvou dat je starší Zjištění aktuálního času ve tvaru hh.mm.ss Zjištění, kolik dní uplynulo mezi dvěma daty Zjištění, kolik celých měsíců je mezi dvěma daty Jak zjistit, jaký je aktuální rok, měsíc či den Vypsání data podle nastavení dané kultury Vytvoření instance struktury DateTime z rodného čísla Zjištění průměrného věku určité skupiny Setřídění pole kalendářních dat od nejstaršího po nejnovější Spočtení věku osoby v letech na základě zadaného data Jak zjistit, kolik dní víkendu leží mezi dvěma daty
170 170 170 170 170 171 171 171 172 172 172 173 173 173 173 173 173 174 174 174 174 175 175 175 175 176
177 177 177 177 177 177 178 178 178 178 179 179 179 179 180 180 180 180 181
14
K1562.indd 14
6.6.2008 10:52:32
Obsah 530. 531. 532. 533. 534. 535. 536. 537. 538.
Zjištění ročního období dle data Nalezení nejstaršího data v poli Nalezení nejnovějšího data v poli Sečtení dvou časů Odečtení dvou časů Zjištění názvu časového pásma Zjištění názvu posledního dne v měsíci Zjištění data začátku letního času v daném časovém pásmu Zjištění data začátku zimního času v daném časovém pásmu
Databáze 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573.
Několik druhů poskytovatelů Jak se připojit k databázi Vytvoření připojovacího řetězce SqlConnection Vytvoření připojovacího řetězce k databázi OLE DB Jak ukončit připojení k databázi Přehled vlastností třídy SqlConnection Zjištění verze Microsoft SQL serveru Zjištění stavu připojení k databázi Jak vykonat určitý příkaz Jak vytvořit snímač dat (třída *DataReader) Jak získat název sloupce dle jeho pořadí v tabulce Jak získat pořadí sloupce v tabulce dle jeho názvu Procházení řádků tabulky pomocí třídy *DataReader Čtení řádku pomocí třídy *DataReader Jak získat hodnotu z konkrétního sloupce tabulky Metody třídy *DataReader Zjištění, zda je určitá položka v tabulce prázdná Jak získat instanci třídy Type představující datový typ určitého sloupce tabulky Zjištění, zda tabulka obsahuje alespoň jeden řádek Definice chování třídy *DataReader Vytvoření datové tabulky z dat uložených v instanci třídy *DataReader Čtení hodnot typu NULL Jak uzavřít čtenáře dat (*DataReader) spolu s připojením Zjištění, zda je *DataReader uzavřen Detekování změny stavu připojení Zachycení varovných zpráv MS SQL Serveru Událost reagující na dokončení vykonávání příkazu SQL Jak získat jedinou položku z výsledku dotazu Převod výsledků dotazu do formátu XML Nahrazení konkrétních položek dotazu parametry Jak vrátit všechny změny provedené v instanci třídy DataSet Jak potvrdit všechny změny provedené v instanci třídy DataSet Jak získat tabulku obsahující změněné údaje Implementace agregačních funkcí jazyka SQL Zachytávání výjimek SQL Serveru
181 182 182 182 182 183 183 183 183
185 185 185 185 186 186 186 187 187 188 188 188 188 189 189 189 190 190 191 191 191 192 192 192 193 193 193 194 194 195 195 196 196 196 196 197
15
K1562.indd 15
6.6.2008 10:52:32
Obsah 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618.
Vlastnosti výjimky typu SqlException Hodnocení závažnosti chybových hlášení SQL Serveru Použití třídy *DataAdapter k načtení dat z databáze do datové sady (DataSet) Jak naplnit daty danou tabulku v datové sadě Přístup k jednotlivým tabulkám třídy DataSet Manipulace s jednotlivými tabulkami v instanci třídy DataSet Přehled událostí třídy System.Data.DataTable Jak do datové sady (DataSet) přidat tabulku Jak z datové sady (DataSet) odebrat tabulku Jak zapsat data uložená v instanci třídy DataSet do formátu XML Jak naplnit DataSet daty z dokumentu XML Jak získat formát XML dat uložených v datové sadě Zjištění údajů o sloupcích tabulky Přístup k hodnotě ležící na určitém řádku určitého sloupce tabulky Přehled metod určených pro manipulaci s jednotlivými sloupci tabulky Přehled metod určených pro manipulaci s jednotlivými řádky tabulky Jak do tabulky vložit nový sloupec Jak odstranit všechny údaje v tabulkách v datové sadě Zjištění počtu sloupců a řádků v tabulce Výpis názvů všech tabulek v instanci třídy DataSet Výpis názvů jednotlivých sloupců tabulky Jak získat kolekci relací tabulek uložených v datové sadě Použití vypočtených hodnot ve sloupci Jak do tabulky přidat nový řádek hodnot Ověření, zda počet vkládaných hodnot nepřesahuje počet sloupců tabulky Jak číst jednotlivé hodnoty řádků tabulky typu DataTable Ověření, zda tabulka obsahuje určitý sloupec Provedeme výběr v tabulce (metoda SELECT) a získáme pole Jak z tabulky odstranit jeden či více řádků Přidání nového řádku a kontrola shody datových typů vkládaných objektů s datovými typy sloupců Vykonání transakce Vytvoření datového pohledu (DataView) Vyhledání konkrétního řádku v datovém pohledu Iterace jednotlivých řádků v datovém pohledu Vytvoření relace mezi tabulkami Jak z objektu typu DataRelation zpětně získat řádky hlavní nebo podřízené tabulky Jak z tabulky získat primární klíč nebo jak jej tabulce přiřadit Aritmetický průměr vybraných hodnot – funkce AVG Nalezení nejmenšího čísla z vybraných hodnot – funkce MIN Nalezení největšího čísla z vybraných hodnot – funkce MAX Součet všech hodnot určitého sloupce – funkce SUM Získání počtu záznamů v určitém sloupci – funkce COUNT Zaokrouhlení čísla na určitý počet desetinných míst – funkce ROUND Zaokrouhlení desetinného čísla – funkce FLOOR a CEILING Převod písmen řetězce na malá – funkce LOWER
197 197 198 198 198 198 199 199 199 199 200 200 200 200 201 201 202 202 202 202 203 203 203 203 204 204 205 205 205 205 206 207 207 207 208 208 208 208 208 209 209 209 209 209 209
16
K1562.indd 16
6.6.2008 10:52:32
Obsah 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650.
Převod písmen řetězce na velká – funkce UPPER Výběr podřetězce – funkce SUBSTRING Spojování více řetězců dohromady – funkce CONCAT Generování náhodných čísel – funkce RAND Konverze datových typů – funkce CAST Výběr dat – příkaz SELECT Výběr dat příkazem SELECT z více tabulek Podmínky příkazu SELECT – klauzule WHERE Řazení výsledků vybraných příkazem SELECT – klauzule ORDER BY Použití agregačních funkcí (podmínka HAVING) Řazení hodnot – operátor DESC Určení maximálního počtu hodnot vrácený příkazem SELECT – příkaz LIMIT Jak vytvořit tabulku – příkaz CREATE TABLE Jak odstranit tabulku – příkaz DROP TABLE Jak přidat sloupce do tabulky –- příkaz ALTER TABLE ADD Jak odstranit sloupce z tabulky – příkaz ALTER TABLE DROP Úprava hodnot tabulky - příkaz UPDATE Jak vložit hodnoty do tabulky – příkaz INSERT Smazání hodnot z tabulky – příkaz DELETE Množinové sloučení tabulek - příkaz UNION Množinový průnik tabulek – příkaz INTERSECT Množinový rozdíl – příkaz MINUS Vytvoření pohledu na data tabulky – příkaz CREATE VIEW Odstranění pohledu – příkaz DROP VIEW Spojení více podmínek – funkce IN Výběr hodnot z určitého rozsahu – podmínka BETWEEN Výběr prvních n řádků – operátor TOP Výběr řetězců dle určitého vzoru – operátor LIKE Přehled zástupných znaků operátoru LIKE Konjukce – operátor AND Disjunkce – operátor OR Negace – operátor NOT
Práce se soubory 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662.
Jak přečíst soubor třídou StreamReader Jak zapsat text do souboru Jak zapsat text do souboru s určitým kódováním Získání názvu kódování a čísla kódové stránky textového souboru Jak zapsat text po řádcích do souboru metodou WriteLine Zapisujeme pole bytů do souboru třídou FileStream Jak přečíst pole bajtů třídou FileStream Přidání textu do již existujícího textového souboru Vytvoření nového souboru Zkopírování souboru Smazání souboru Zjištění existence souboru
210 210 210 210 210 210 211 211 211 211 211 212 212 212 212 213 213 213 213 213 214 214 214 214 214 214 215 215 215 215 215 216
217 217 217 217 218 218 219 219 219 219 219 220 220
17
K1562.indd 17
6.6.2008 10:52:33
Obsah 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701.
Vypsání atributů souboru Nastavení atributů souboru Jak skrýt soubor Jak rozdělit soubor na více částí Jak sloučit více částí souboru v jeden Zjištění času vytvoření, otevření a posledního zápisu do souboru Přesunutí souboru z jedné složky do druhé Přečtení všech bajtů souboru Jak nastavit datum vytvoření souboru Jak nastavit čas posledního přístupu k souboru Jak zapsat pole bajtů do souboru Zjištění velikosti souboru v bajtech Zjištění přípony souboru Jak vytvořit novou složku Smazání složky Jak skrýt složku Jak zjistit, zda určitá složka existuje Jak zjistit čas vytvoření složky Získání výčtu podsložek určité složky Jak vyhledat všechny podsložky určité složky dle zadaného názvu Zjištění velikosti složky Jak získat výčet souborů ve složce Jak zjistit počet souborů ve složce a podsložkách Zjištění data vytvoření, posledního přístupu a posledního zápisu do složky Jak přesunout složku Výpis kořenového adresáře Jak nastavit datum vytvoření složky Jak nastavit datum posledního přístupu k určité složce Jak nastavit datum posledního zápisu do složky Jak vygenerovat náhodný název souboru Jak změnit příponu souboru Je název souboru validní? Jak zjistit, zda je cesta absolutní, či relativní Jak získat jméno souboru či jeho příponu z absolutní cesty Jak získat název složky z cesty k souboru Kontrolování změn souborovém systému Jak vymezit sledování pro konkrétní změny v adresáři Jak serializovat třídu Deserializace třídy
XML 702. 703. 704. 705. 706.
Třída XmlDocument Načtení dokumentu XML Uložení dokumentu XML Výpis kořenového elementu dokumentu XML Čtení dokumentu XML pomocí třídy XmlTextReader
220 220 220 221 221 222 222 222 222 223 223 223 223 224 224 224 224 224 224 225 225 226 226 227 227 227 227 228 228 228 228 228 229 229 229 229 230 231 231
233 233 233 233 233 234
18
K1562.indd 18
6.6.2008 10:52:33
Obsah 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737.
Typy elementů Vytváříme dokument XML Odsazování v dokumentu XML Zapisujeme řetězec do uzlu Jak přečíst hodnotu uzlu Jak do dokumentu XML přidat nový uzel Jak do dokumentu XML vložit nový komentář Získání uzlu na základě výrazu XPath Získání kořenového uzlu Rekurzivní procházení uzlů dokumentu XML Jak přečíst hodnotu atributu Jak do elementu přidat atribut Úprava hodnoty atributu elementu Jak z elementu odstranit atribut Serializace objektu Deserializace objektu Jak uložit binární soubor do dokumentu XML Jak načíst binární soubor z dokumentu XML Jak zapsat schéma XML popisující strukturu dokumentu XML Validace dokumentu XML Validace dokumentu XML dle XSD-schématu Transformace z XML do HTML Výběr elementů Výběr všech elementů určitého názvu Výběr všech elementů libovolného názvu Přístup k jednotlivým atributům Kombinování více výrazů Výběr uzlů, které mají určitý počet poduzlů – funkce count() Výběr rodičovských uzlů určitého uzlu Podmínky Přehled funkcí
Práce se sítí – System.Net 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750.
Zasíláme textovou zprávu prostřednictvím protokolu UDP Jak naslouchat příchozím textovým zprávám pomocí protokolu UDP Přijímáme zprávy pouze z konkrétní IP adresy Přijímáme zprávy z několika konkrétních IP adres Ověření validity IP adresy Identifikace chyby pomocí chybových zpráv WinSock Poslání souboru pomocí protokolu UDP Jak přijmout soubor protokolem UDP Zjištění velikosti přijatých nebo odeslaných dat Jak zaslat textovou zprávu prostřednictvím TCP-spojení Jak přijmout textové zprávy pomocí protokolu TCP Posílání souboru pomocí protokolu TCP Tři způsoby k uzavírání socketových spojení
235 235 236 236 236 236 237 238 238 238 239 239 239 239 240 240 240 241 241 241 242 242 243 243 244 244 244 244 245 245 245
247 247 247 247 248 248 248 249 249 250 250 251 251 251
19
K1562.indd 19
6.6.2008 10:52:33
Obsah 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778.
Jak poslat e-mailovou zprávu pomocí třídy SmtpClient Poslání několika e-mailových zpráv Jak poslat e-mailovou zprávu s přílohou Jak poslat několik souborů v jedné e-mailové zprávě Odstranění jedné nebo několika příloh z e-mailové zprávy Nastavení priority e-mailových zpráv Jak poslat e-mailovou zprávu asynchronně Zjištění hostitelského jména pomocí IP adresy Zjištění hostitelské IP adresy Zjištění názvu lokálního počítače Zjištění IP adresy lokálního počítače Stažení souboru pomocí třídy WebClient Stáhování souboru jako pole bajtů Zjištění velikost staženého souboru Jak stáhnout soubor a vrátit jeho obsah jako pole bajtů Jak stahovat data asynchronně třídou WebClient Událost reagující na dokončení stahování Jak průběžně zjiš ovat velikost stáhnutých dat Průběžně zjiš ujeme rychlost stahování Jak přerušit probíhající asynchronní stahování Zjištění velikosti souboru, který je umístěn na webu Zjištění typu souboru umístěného na webu Stahujeme zdrojový kód stránky pomocí datového proudu Jak stáhnout soubor pomocí datového proudu Zjiš ujeme, zda odpově serveru byla z cache Zjiš ujeme datum poslední úpravy webové stránky Získání názvu serveru Přistupujeme k internetovým zdrojům přes proxy-server
WinAPI 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789.
Získání pozice kurzoru na obrazovce Jak nastavit pozici kurzoru na obrazovce Minimalizování okna Jak maximalizovat okno Číselné argumenty metody ShowWindow Jak získat identifikační čísla (handle) aktivního okna Prohození funkce levého tlačítka myši za pravé Jak nakreslit bod v okně aplikace Jak získat barvu určitého bodu okna Aktivování okna Kreslíme na obrazovku
Práce s 2D grafikou 790. Vytvoření pera 791. Jak nastavit zakončení stopy pera 792. Jak nastavit šířku pera
252 252 252 253 253 253 254 254 254 254 254 255 255 255 255 256 256 256 257 257 258 258 259 259 259 260 260 260
261 261 261 261 261 262 262 262 263 263 263 264
265 265 265 265
20
K1562.indd 20
6.6.2008 10:52:33
Obsah 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838.
Jak vytvořit štetec Jak nastavit styl čáry pera Změna barvy pera Vytvoření barvy z jednotlivých složek Jak z barvy získat její jednotlivé složky Jak vytvořit barvu z názvu barvy Nastavení průhlednosti barvy Jak vykreslit výseč kruhu Jak nakreslit Bézierovu křivku Jak nakreslit složitější Bézierovu křivku Jak nakreslit křivku Jak vykreslit ikonu Jak nakreslit elipsu Jak nakreslit obrázek Jak vykreslit obrázek ve změněné velikosti Jak vykreslit obrázek ve změněné velikosti a přitom zachovat poměr stran Jak nakreslit vyplněnou výseč kruhu Jak nakreslit čáru Jak nakreslit lomenou čáru Jak vykreslit řetězec Jak vykreslit řetězec svisle Získání názvu a velikosti písma Jak nastavit zarovnání řetězce Nastavení kvality vykreslování písma Šest druhů kvality vykreslování písma Jak nastavit jeden nebo více stylů písma Jak kreslit objekty s přechodem barev Jak vytvořit štětec obsahující texturu Způsoby opakování obrázků ve třídě TextureBrush Jak nastavit kvalitu vyhlazování vykreslovaných objektů Jak nakreslit polygon vyplněný určitou barvou Jak vytvořit kruhový graf Jak vytvořit systémový font Jak vytvořit instanci třídy Point Jak zjistit, zda bod leží mimo formulář Jak smazat nakreslené objekty z formuláře Jak uložit obrázek Zjištění barvy určitého pixelu obrázku v komponentě PictureBox Vytvoření miniatury obrázku Jak pootočit obrázek Jak získat rozměry obrázku Jak nastavit jednotlivé pixely obrázku Jak získat barvu jednotlivých pixelů obrázku Procházení jednotlivých pixelů v bitmapě Jak získat rozměry bitmapy Jak uložit bitmapu
266 266 266 267 267 267 267 268 268 269 269 269 270 270 270 271 271 271 272 272 272 273 273 273 273 274 274 274 275 275 276 276 277 277 277 278 278 278 278 279 279 280 280 280 280 280
21
K1562.indd 21
6.6.2008 10:52:33
Obsah 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869.
Jak uložit bitmapu v určitém formátu Jak uložit obrázek jako ikonu Jak nastavit ikonu aplikace za běhu programu Jak pootočit vykreslené obrazce o určitý úhel Jak smazat nakreslené objekty z formuláře Jak vykreslit obrázek doprostřed formuláře Jak vykreslit obrázek doprostřed i po změně rozměrů formuláře Jak zjistit výšku či šířku ikony Jak vykreslit zkosený obrázek Jak vytvořit sépiový nádech obrázku Jak v obrázku udělat barevné zrnění Jak převést obrázek do šedé škály Invertování barev v obrázku Vertikální osové zrcadlení v obrázku Horizontální osové zrcadlení v obrázku Pixelizace obrázku Jak zjistit délku úpravy obrázku v milisekundách Jak zjistit průměrnou délku úpravy jednotlivých pixelů v milisekundách Jak zesvětlit či ztmavit obrázek Jak vykreslit část obrázku Vykreslení obrázku ve dvou barvách Pořízení barevného výtažku z bitmapy Rozmazání obrázku Vykreslení obrázku s odstínem Jak v obrázku zaměnit jednu barvu za jinou Jak v obrázku zaměnit jednu barvu za jinou ležící v určitém rozmezí barevného spektra Procházení jednotlivých pixelů bitmapy Jak nastavit barvu pixelu v bitové mapě Jak získat z bitové mapy pixel pomocí nezabezpečeného kódu Nastavení přístupu k pixelům Prolnutí dvou obrázků
Procesy a podprocesy 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882.
Zjištění počtu spuštěných procesů Spuštění procesu Nastavení způsobu zobrazení okna při spuštění Procházení jednotlivými procesy lokálního počítače Získání procesu dané aplikace Jak násilně ukončit proces Jak zjistit, zda byl proces ukončen Nastavení priority procesu Zjištění, zda proces má okno Zjištění velikosti paměti alokované procesem Zjištění času spuštění procesu Zjištění času ukončení procesu Čekání na ukončení procesu
280 281 281 281 282 282 282 283 283 284 284 285 285 285 286 286 287 287 287 288 288 289 289 290 290 291 291 292 293 293 293
295 295 295 295 295 295 296 296 296 296 297 297 297 297
22
K1562.indd 22
6.6.2008 10:52:33
Obsah 883. 884. 885. 886. 887. 888. 889. 890. 891. 892. 893. 894.
Spuštění příkazu v příkazové řádce Zvýšení priority při aktivaci okna určitého procesu Výpis systémových proměnných Spuštění nového podprocesu Uspání podprocesu na určitou dobu Ukončení podprocesu Zjištění, zda je podproces spuštěn Zjištění aktuálního stavu podprocesu Nastavení priority podprocesu Nastavení přístupu ke sdíleným objektům Klíčové slovo lock Test na získání zámku objektu
Systém 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909. 910. 911. 912. 913. 914. 915. 916. 917. 918. 919. 920. 921. 922. 923. 924. 925. 926.
Aby schránka fungovala Jak vložit text do schránky Jak získat text ze schránky Zjištění, zda schránka uchovává nějaká data Jak ze schránky vybrat obrázek Jak do schránky vložit obrázek Výpis všech podsložek ve složce Výpis všech souborů ve složce Zjištění informací o diskové jednotce Získání informací o jednotlivých diskových jednotkách Výpis názvů logických jednotek Vytvoření instance třídy RegistryKey Práce s kořenovými klíči registru Jak nastavit hodnotu klíče registru Jak zjistit hodnotu klíče registru Jak vytvořit nový klíč Smazání určitého klíče Zjištění typu hodnoty klíče Popis hodnot výčtového typu RegistryValueKind Výpis názvů položek určitého klíče Chybové hlášení Cannot write to the registry key při zápisu do registru Změna velikosti ikon na ploše Nastavení šířky okraje okna Nastavení intervalu mezi dvěma klepnutími při poklepání Zapnutí nebo vypnutí vyhlazování písma Uložení souboru do registru Po spuštění Výpis všech položek uložených v registru Po spuštění Nastavení časové prodlevy při zobrazení nabídky Nastavení spořiče obrazovky Vypnutí animace při minimalizaci okna Vypnutí upozornění oznamujícího malý prostor na disku Zjištění, s jakými argumenty byla aplikace spuštěna
298 298 298 299 299 299 300 300 300 301 301 302
303 303 303 303 303 303 304 304 304 304 305 305 305 306 306 306 306 307 307 307 307 308 308 308 308 309 309 309 309 310 310 310 311
23
K1562.indd 23
6.6.2008 10:52:33
Obsah 927. 928. 929. 930. 931. 932. 933. 934. 935. 936. 937. 938. 939. 940. 941. 942.
Jak získat cestu ke složce, z níž byla spuštěna Ukončení dané aplikace Výpis argumentů, se kterými byla aplikace spuštěna Výpis všech systémových proměnných Nastavení dočasné systémové proměnné Zjištění, jak dlouho je počítač zapnut Zjištění verze .NET Frameworku Zjištění verze operačního systému Zjištění počtu procesorů Zjištění uživatelského jména či názvu počítače Zjištění oddělovače času Zjištění oddělovače data Výpis zkrácených názvů dnů Zjištění, zda se na daném počítači píše zprava doleva Zjištění názvu kultury na lokálním počítači Zjištění názvu měny
Překlad a vývojové prostředí 943. 944. 945. 946. 947. 948. 949. 950. 951. 952. 953. 954. 955. 956. 957. 958. 959. 960. 961. 962. 963.
Kompilace programu Výpis chybových hlášení během překladu Překlad programu z příkazového řádku Specifikování typu překládané aplikace Odkazy na externí sestavení Vytvoření dokumentace XML Překlad programu pro různé platformy Čtení parametrů překladače ze souboru Překlad programu obsahujícího nezabezpečený (unsafe) kód Nastavení ikony aplikace Podmíněný překlad Optimalizace výkonu souboru Nastavení písma editoru Přidání odkazu na dynamickou knihovnu Jak do projektu přidat odkaz na webovou službu Definice podmínkového jména při překladu Povolení kompilace programu obsahujícího nezabezpečený (unsafe) kód Jak vytvořit šablonu projektu Zobrazení editoru zdrojového kódu na celou obrazovku Přejmenování datových složek v programu Klávesové zkratky
Multimédia 964. 965. 966. 967. 968.
Výpis názvů CD mechanik Jak otevřít či zavřít CD mechaniku Výjimka LoaderLock Instalace balíku vývojových knihoven Microsoft DirectX SDK Jak přehrát zvukovou nahrávku
311 311 311 312 312 312 312 312 313 313 313 313 313 313 314 314
315 315 315 316 316 316 316 317 317 317 317 318 318 319 319 319 320 320 320 321 321 321
323 323 323 324 324 324
24
K1562.indd 24
6.6.2008 10:52:33
Obsah 969. Jak otevřít zvukovou nahrávku 970. Jak pozastavit či úplně zastavit přehrávání nahrávky 971. Zjištění stavu přehrávání 972. Zjištění aktuální pozice nahrávky v sekundách 973. Zjištění délky nahrávky v sekundách či procentech 974. Jak přehrát nahrávku ve formátu WAV 975. Jak přehrát nahrávku ve formátu WAV z webu 976. Nastavení pozice v přehrávaném záznamu 977. Jak přehrát video 978. Zobrazení okna ve formuláři 979. Jak pozastavit či úplně zastavit video 980. Jak skrýt kurzor 981 Jak získat zvukovou část videa 982. Zobrazení videa na celou obrazovku 983. Jak získat či nastavit aktuální pozici ve videozáznamu 984. Přidání do panelů nástrojů 985. Roztáhnutí přehrávače na celou klientskou plochu formuláře 986. Tlačítka 987. Jak vytvořit seznam nahrávek 988. Manipulace s nahrávkami 989. Výpis informací o jednotlivých nahrávkách 990. Vlastnosti aktuálně přehrávaného záznamu 991. Zjištění atributů nahrávky 992. Nastavení atributů nahrávky 993. Jak nastavit režim celé obrazovky při stisku klávesy Enter 994. Jak zrušit režim celé obrazovky při stisku klávesy Escape 995. Přizpůsobení velikosti videa přehrávači 996. Zjištění stavu přehrávání
Zabezpečení 997. Jak vypočítat hešový kód MD5 z pole bajtů 998. Výpočet hešového kódu textu algoritmem MD5 999. Přehled tříd určených k symetrickému šifrování 1000. Šifrování dat pomocí symetrického algoritmu 1001. Dešifrování dat pomocí symetrického algoritmu 1002. Generování sekvence náhodných bajtů 1003. Zjištění přístupových práv k souborům ve složce 1004. Nastavení přístupových práv ke složce 1005. Odstranění přístupových práv k souborům složky 1006. Nastavení přístupových práv určitému souboru 1007. Dočasné odepření přístupu k souboru 1008. Nastavení přístupových práv k registrům 1009. Zjištění identity uživatele 1010. Zjištění role přihlášeného uživatele
324 324 325 325 325 325 326 326 326 326 327 327 327 327 327 328 328 328 328 329 330 330 330 331 332 332 332 333
335 335 335 335 336 337 337 338 338 339 339 339 340 340 340
25
K1562.indd 25
6.6.2008 10:52:33
Obsah
Dynamické knihovny 1011. 1012. 1013. 1014. 1015. 1016. 1017. 1018.
Import DLL funkcí Nastavení znakové sady dynamické knihovny Přejmenování funkce z DLL v programu Zachycení výjimky vyvolané v dynamické knihovně Předávání parametrů Výpis názvů tříd a struktur z dynamické knihovny v řízeném kódu Výpis vlastností datových členů tříd dynamické knihovny Volání metody v dané třídě z dynamické knihovny
Předdefinované dialogy 1019. 1020. 1021. 1022. 1023. 1024. 1025. 1026. 1027. 1028. 1029. 1030. 1031. 1032. 1033. 1034.
OpenFileDialog, zobrazení dialogu pro otevření souboru OpenFileDialog, zjištění cesty k vybranému souboru OpenFileDialog, výběr více souborů OpenFileDialog, získání obsahu textového souboru OpenFileDialog, nastavení výchozího adresáře OpenFileDialog, nastavení fitru SaveFileDialog, otevření dialogu pro uložení SaveFileDialog, uložení textu do souboru ColorDialog, zjištění vybrané barvy ColorDialog, zobrazení palety pro výběr libovolné barvy FontDialog, zjištění vybraného druhu písma FontDialog, nastavení barvy textu FontDialog, nastavení minimální a maximální velikosti písma FolderBrowserDialog, zjištění cesty k vybrané složce MessageBox, zobrazení zprávy MessageBox, tlačítka
Tisk 1035. 1036. 1037. 1038. 1039. 1040. 1041. 1042. 1043. 1044. 1045.
Tisk dokumentu Výpis názvů nainstalovaných tiskáren Nastavení vlastností tisknutého dokumentu Oboustranný tisk Zjištění, zda tiskárna podporuje oboustranný tisk Zjištění, zda tiskárna podporuje barevný tisk Jak zobrazit náhled tisknuté stránky Dialog nastavení vzhledu stránky Dialog pro tisk Tisk formuláře Zrušení tisku
341 341 341 341 341 342 342 343 343
345 345 345 345 345 346 346 346 347 347 348 348 348 349 349 349 349
351 351 351 351 352 352 352 353 353 354 355 355
Popis nástrojů z přiloženého DVD
356
Rejstřík
357
26
K1562.indd 26
6.6.2008 10:52:33
Úvod Vážení čtenáři, C# je jednoduchý, výkonný objektově orientovaný programovací jazyk určený k vývoji aplikací pro platformu .NET. C# je následníkem jazyka C++ a je velmi podobný jazyku Java. Všechny tyto jazyky mají svůj základ v jazyce C, a díky tomu je značně usnadněn přechod mezi nimi. C# má oproti C++ řadu výhod, díky kterým je práce s ním snadnější: například automatickou alokaci paměti (garbage collector) či absenci ukazatelů – ty jsou v C# skryty. Díky své uživatelské přívětivosti a kvalitnímu vývojovému prostředí Visual Studio se tento jazyk těší čím dál větší oblibě.
Co v knize najdete Tato kniha obsahuje více než 1000 tipů, triků, nápadů a hotových řešení určených k okamžitému použití. Mojí snahou bylo vyložit všechny nejdůležitější, často užívané příklady, bez jejichž znalosti se programátor v praxi jednoduše neobejde. Cílem této knihy není naučit vás C#, ale poukázat na jedno z možných řešení konkrétního problému. Jednotlivé tipy jsou rozděleny do 20 kapitol tak, aby co nejlépe pokryly aplikační rozhraní jazyka C#.
Poděkování Je mou milou povinností poděkovat všem lidem, kteří přispěli ke zdárnému dokončení této publikace. V první řadě bych chtěl poděkovat své rodině a nejbližším přátelům za podporu a zájem o tuto knihu, který mě velice potěšil. Dále bych rád poděkoval panu Radku Hylmarovi, redaktorovi nakladatelství Computer Press, za jeho velice přátelský přístup a kvalitní spolupráci během psaní těchto stránek. Mé díky patří též panu Ing. Miroslavu Viriusovi, CSc. za jeho pečlivé korektury a připomínky k jednotlivým tipům.
K1562.indd 27
6.6.2008 10:00:38