Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodÄ… kserograficznÄ…,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądz towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,
ani za zwiÄ…zane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzÄ…cy: Ewelina Burska
Projekt okładki: Magdalena Stasik
Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie?vbnepr
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Dodatkowe materiały do książki są dostępne pod adresem:
ftp://ftp.helion.pl/przyklady/vbnepr.zip
ISBN: 978-83-246-4898-6
Copyright © Helion 2012
Printed in Poland.
" Kup książkę " Księgarnia internetowa
" Poleć książkę " Lubię to! Nasza społeczność
" Oceń książkę
Spis tre ci
Wst p ............................................................................................ 11
Cz I Projektowanie aplikacji Windows .................................. 13
Rozdzia 1. rodowisko Visual Studio ................................................................ 15
Projektowanie interfejsu aplikacji .................................................................................. 15
Tworzenie projektu .................................................................................................. 16
Dokowanie palety komponentów Toolbox ............................................................... 18
Tworzenie interfejsu za pomoc komponentów Windows Forms ............................ 19
Zapisywanie i wczytywanie projektu ....................................................................... 20
Ukryta prawda ................................................................................................................ 21
Analiza kodu pierwszej aplikacji .................................................................................... 22
Metody zdarzeniowe ....................................................................................................... 26
Metoda uruchamiana w przypadku wyst pienia zdarzenia kontrolki ....................... 26
Testowanie metody zdarzeniowej ............................................................................ 27
Przypisywanie istniej cej metody do zdarze komponentów ................................... 29
Edycja metody zdarzeniowej .................................................................................... 30
Modyfikowanie w asno ci komponentów ................................................................ 30
Wywo ywanie metody zdarzeniowej z poziomu kodu ............................................. 31
Reakcja aplikacji na naciskanie klawiszy ................................................................. 32
Platforma aplikacji (application framework) .................................................................. 32
Rozdzia 2. Debugowanie kodu ......................................................................... 35
Sk d bior si b dy i jak ich unika ? ............................................................................. 35
Kontrolowane uruchamianie aplikacji ............................................................................ 36
Program z b dem pole do popisu dla debuggera ................................................ 36
ledzenie wykonywania programu krok po kroku (klawisze F10 i F11) .................. 37
Run to Cursor (klawisze Ctrl+F10) .......................................................................... 38
Breakpoint (klawisz F9) ........................................................................................... 39
Okna Locals i Watch ................................................................................................ 40
Stan wyj tkowy .............................................................................................................. 42
Przechwytywanie wyj tków w konstrukcji try..catch ............................................... 43
Zg aszanie wyj tków ................................................................................................ 45
Kup książkę Poleć książkę
4 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
Rozdzia 3. J zyk Visual Basic .......................................................................... 47
Platforma .NET .............................................................................................................. 47
Trivia .............................................................................................................................. 49
Podstawowe typy danych ............................................................................................... 49
Deklaracja i zmiana warto ci zmiennej .................................................................... 49
Typy liczbowe oraz znakowy ................................................................................... 50
Opcje Strict, Infer i Explicit ..................................................................................... 53
Priorytety operatorów ............................................................................................... 56
Weryfikacja typów ................................................................................................... 58
a cuchy .................................................................................................................. 59
Weryfikowanie zgodno ci a cucha ze wzorcem ..................................................... 62
Typ wyliczeniowy .................................................................................................... 63
Leniwe inicjowanie zmiennych ................................................................................ 65
Funkcje i metody ............................................................................................................ 65
Przeci anie metod ................................................................................................... 66
Domy lne warto ci argumentów metod argumenty opcjonalne .......................... 67
Warto ci zwracane przez metody ............................................................................. 68
Zwracanie warto ci przez argument metody (ByRef) .............................................. 68
Delegacje i zdarzenia ............................................................................................... 70
Wyra enia lambda .................................................................................................... 71
Typy warto ciowe i referencyjne .................................................................................... 72
Nullable .................................................................................................................... 74
Pude kowanie ........................................................................................................... 75
Sterowanie przep ywem ................................................................................................. 76
Instrukcja warunkowa If..Else .................................................................................. 76
Instrukcja wyboru Select .......................................................................................... 77
P tle .......................................................................................................................... 77
Wyj tki ........................................................................................................................... 79
Dyrektywy preprocesora ................................................................................................. 82
Kompilacja warunkowa ostrze enia .................................................................... 82
Definiowanie sta ych preprocesora .......................................................................... 83
Bloki ......................................................................................................................... 83
Atrybuty ......................................................................................................................... 84
Kolekcje ......................................................................................................................... 84
Zwyk e tablice ...................................................................................................... 85
P tla foreach ............................................................................................................. 88
Sortowanie ............................................................................................................... 89
Kolekcja List ............................................................................................................ 90
Kolekcja SortedList i inne s owniki ......................................................................... 91
Kolejka i stos ............................................................................................................ 92
Rozdzia 4. Projektowanie zorientowane obiektowo ........................................... 95
Przyk ad struktury (Ulamek) .......................................................................................... 96
Przygotowanie projektu ............................................................................................ 96
Konstruktor i wspó dzielone obiekty sk adowe ........................................................ 97
Pierwsze testy ........................................................................................................... 98
Konwersje na a cuch (metoda ToString) i na typ double ........................................ 99
Metoda upraszczaj ca u amek .................................................................................. 99
W asno ci ............................................................................................................... 100
Operatory arytmetyczne ......................................................................................... 101
Operatory porównania oraz metody Equals i GetHashCode .................................. 103
Operatory konwersji ............................................................................................... 104
Implementacja interfejsu (na przyk adzie IComparable) .............................................. 105
Kup książkę Poleć książkę
Spis tre ci 5
Definiowanie typów parametrycznych ......................................................................... 107
Definiowanie typów ogólnych ............................................................................... 108
Okre lanie warunków, jakie maj spe nia parametry ............................................ 109
Implementacja interfejsów przez typ ogólny .......................................................... 110
Definiowanie aliasów ............................................................................................. 112
Typy ogólne z wieloma parametrami ..................................................................... 113
Rozszerzenia ................................................................................................................. 114
S owo kluczowe With ................................................................................................... 116
Typy anonimowe .......................................................................................................... 117
Rozdzia 5. Przegl d komponentów biblioteki Windows Forms .......................... 119
Notatnik.NET ............................................................................................................... 119
Projektowanie interfejsu aplikacji i menu g ówne .................................................. 120
Okna dialogowe i pliki tekstowe ............................................................................ 126
Edycja i korzystanie ze schowka ............................................................................ 134
Drukowanie ............................................................................................................ 135
Elektroniczna kuku ka .................................................................................................. 145
Ekran powitalny (splash screen) ............................................................................. 145
Przygotowanie ikony w obszarze powiadamiania .................................................. 148
Odtwarzanie pliku d wi kowego ........................................................................... 151
Ustawienia aplikacji ..................................................................................................... 153
Tworzenie ustawie w trakcie projektowania aplikacji .......................................... 153
Odczytywanie ustawie z poziomu kodu ............................................................... 154
Zapisywanie ustawie z poziomu kodu .................................................................. 155
Dywan graficzny .......................................................................................................... 156
Zdarzenie Paint formy ............................................................................................ 156
Kolorowy wzór ....................................................................................................... 157
Buforowanie ........................................................................................................... 158
Zapisywanie obrazu dywanu do pliku .................................................................... 159
Rysowanie zbiorów Mandelbrota i Julii ....................................................................... 160
Troch teorii ........................................................................................................... 160
Implementacja ........................................................................................................ 163
Lista uruchomionych procesów .................................................................................... 166
Rozdzia 6. Przeci gnij i upu ........................................................................ 169
Podstawy ...................................................................................................................... 169
Interfejs przyk adowej aplikacji ............................................................................. 170
Inicjacja procesu przeci gania ................................................................................ 171
Akceptacja upuszczenia elementu .......................................................................... 173
Reakcja na upuszczenie elementu .......................................................................... 174
Czynno ci wykonywane po zako czeniu procesu przenoszenia i upuszczania ...... 175
Przenoszenie elementów mi dzy ró nymi aplikacjami .......................................... 176
Zagadnienia zaawansowane .......................................................................................... 176
Opó nione inicjowanie procesu przenoszenia ........................................................ 176
Przenoszenie wielu elementów ............................................................................... 179
Przenoszenie plików ............................................................................................... 181
Rozdzia 7. Przezroczyste okna o dowolnym kszta cie ...................................... 183
Konfiguracja formy ...................................................................................................... 183
Wczytywanie obrazu .................................................................................................... 184
Przezroczysto i agodne znikanie okna ...................................................................... 186
Zamykanie klawiszem Esc ........................................................................................... 187
Przenoszenie formy za dowolny punkt ......................................................................... 188
Menu kontekstowe ........................................................................................................ 189
Kup książkę Poleć książkę
6 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
Rozdzia 8. Projektowanie kontrolek ............................................................... 193
Komponent FileListBox ............................................................................................... 194
Implementacja podstawowych funkcjonalno ci ..................................................... 194
Rozbudowa komponentu o mo liwo zmiany katalogu ........................................ 203
W a ciwo ci ........................................................................................................... 205
Zdarzenia interakcja z komponentem ................................................................ 210
Od wie anie komponentu i automatyczne ledzenie zmian
w prezentowanym katalogu ................................................................................. 216
Kompilacja komponentu do postaci biblioteki DLL .............................................. 219
Prosty przyk ad wykorzystania komponentu FileListBox:
przegl danie plików tekstowych .......................................................................... 224
Kolorowy pasek post pu .............................................................................................. 228
Tworzenie projektu ................................................................................................ 228
Rysowanie obramowania kontrolki ........................................................................ 229
Pola i w asno ci ...................................................................................................... 230
Rysowanie paska post pu ....................................................................................... 233
Metody ................................................................................................................... 234
Zdarzenia ................................................................................................................ 235
Rozdzia 9. Zarz dzane biblioteki DLL i mechanizm rozpoznawania typów ......... 239
Tworzenie zarz dzanej biblioteki DLL ........................................................................ 240
Projekt biblioteki DLL ........................................................................................... 240
Dodawanie referencji do biblioteki systemowej platformy .NET ........................... 241
Wy wietlanie informacji o systemie i platformie .NET ......................................... 242
Zmiana przestrzeni nazw biblioteki .............................................................................. 243
Statyczne adowanie bibliotek DLL ............................................................................. 243
Do czanie do projektu bibliotek DLL u ytkownika .............................................. 243
Dynamiczne adowanie zarz dzanych bibliotek DLL
i dynamiczne rozpoznawanie typów .......................................................................... 245
Dynamiczne adowanie zarz dzanej biblioteki .dll ................................................ 245
Analiza zawarto ci biblioteki za adowanej dynamicznie ....................................... 246
Weryfikacja obecno ci w bibliotece DLL klasy o znanej nazwie .......................... 247
Lista metod w klasie z biblioteki DLL ................................................................... 248
Weryfikacja obecno ci konkretnej metody w klasie z biblioteki DLL ................... 249
Lista argumentów wybranej metody ...................................................................... 250
Uruchamianie metody wspó dzielonej z klasy wczytanej z biblioteki DLL ........... 252
Uruchamianie metody na rzecz instancji obiektu.
Przekazywanie parametrów i odczytywanie zwracanej warto ci ......................... 254
Pó ne wi zanie na typie Object .................................................................................... 255
Rozdzia 10. Aplikacje konsolowe i informacje o systemie ................................ 257
Klasa Console ............................................................................................................... 257
Projekt aplikacji konsolowej .................................................................................. 257
Drukowanie napisów w konsoli ............................................................................. 259
Czekanie na akceptacj u ytkownika ..................................................................... 259
Odczytywanie danych z klawiatury ........................................................................ 260
Komunikat okienkowy w aplikacji konsolowej .................................................. 261
Informacje o rodowisku aplikacji ................................................................................ 262
Podstawowe informacje o systemie i profilu u ytkownika .................................... 263
Katalogi specjalne zdefiniowane w bie cym profilu u ytkownika ....................... 264
Odczytywanie zmiennych rodowiskowych ........................................................... 264
Lista dysków logicznych ........................................................................................ 265
Kup książkę Poleć książkę
Spis tre ci 7
Rozdzia 11. W tki, równoleg a p tla Parallel.For
oraz programowanie asynchroniczne (Async/Await) .................... 267
Monte Carlo .................................................................................................................. 268
Obliczenia bez u ycia dodatkowych w tków ............................................................... 269
Przeniesienie oblicze do osobnego w tku ................................................................... 270
Usypianie w tku ........................................................................................................... 272
Przerywanie dzia ania w tku (Abort) ........................................................................... 273
Wstrzymywanie i wznawianie dzia ania w tku ............................................................ 274
W tki dzia aj ce w tle ................................................................................................... 275
Zmiana priorytetu w tku .............................................................................................. 276
U ycie wielu w tków i problemy z generatorem liczb pseudolosowych ...................... 276
Czekanie na uko czenie pracy w tku (Join) ................................................................. 280
Sekcje krytyczne (lock) ................................................................................................ 282
Przesy anie danych do w tku ........................................................................................ 283
Pula w tków ................................................................................................................. 285
Jeszcze raz o komunikacji mi dzy w tkami ................................................................. 288
Korzystanie z muteksów w celu zapobiegania
uruchamianiu wielu instancji aplikacji ....................................................................... 290
Klasa Parallel z biblioteki TPL ..................................................................................... 290
Równoleg a p tla For ............................................................................................. 291
Przerywanie p tli .................................................................................................... 293
Programowanie asynchroniczne (Async/Await) ........................................................... 294
Rozdzia 12. Podstawy ADO.NET i SQL Server .................................................. 297
Bardzo krótki wst p do SQL ........................................................................................ 298
Select ...................................................................................................................... 298
Insert ...................................................................................................................... 299
Delete ..................................................................................................................... 299
Aplikacje bazodanowe .............................................................................................. 299
Projekt aplikacji z baz danych .............................................................................. 299
Konfiguracja komponentu DataSet ........................................................................ 302
Server Explorer ...................................................................................................... 304
Podgl d danych udost pnianych przez komponent DataSet ................................... 304
Prezentacja danych w siatce DataGridView ........................................................... 305
Edycja danych ........................................................................................................ 307
Projektowanie formularzy prezentuj cych pojedyncze rekordy ............................. 309
Sortowanie ............................................................................................................. 312
Filtrowanie ............................................................................................................. 312
Odczytywanie z poziomu kodu warto ci przechowywanych w komórkach ........... 313
Cz II LINQ .......................................................................... 315
Rozdzia 13. Wprowadzenie do zapyta LINQ
na przyk adzie kolekcji (LINQ to Objects) .................................... 317
Pobieranie danych (filtrowanie i sortowanie) ............................................................... 319
Najprostsza prezentacja pobranych danych .................................................................. 320
Analiza pobranych danych ........................................................................................... 320
Wybór elementu ........................................................................................................... 320
Weryfikowanie danych ................................................................................................. 321
Prezentacja w grupach .................................................................................................. 321
czenie zbiorów danych ............................................................................................. 322
czenie danych z ró nych róde w zapytaniu LINQ operator join ....................... 322
Mo liwo modyfikacji danych ród a ......................................................................... 323
Kup książkę Poleć książkę
8 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
Rozdzia 14. LINQ to DataSet .......................................................................... 325
Konfiguracja kontrolki DataSet .................................................................................... 326
LINQ to DataSet, czyli tam i z powrotem .................................................................... 328
Rozszerzenie AsEnumerable klasy DataTable ............................................................. 332
Obliczenia wykonywane na danych z tabeli ........................................................... 332
Dowolno sortowania i filtrowania pobieranych danych ...................................... 332
Rozdzia 15. LINQ to SQL ................................................................................. 335
Klasa encji .................................................................................................................... 336
Pobieranie danych ........................................................................................................ 337
Aktualizacja danych w bazie ........................................................................................ 338
Modyfikacje istniej cych rekordów ....................................................................... 339
Dodawanie i usuwanie rekordów ........................................................................... 340
Inne operacje .......................................................................................................... 341
Wizualne projektowanie klasy encji ............................................................................. 342
O/R Designer .......................................................................................................... 342
Wspó praca z kontrolkami tworz cymi interfejs aplikacji ..................................... 346
Kreator ród a danych i automatyczne tworzenie interfejsu u ytkownika ............. 347
czenie danych z dwóch tabel operator join .................................................... 349
Relacje (Associations) ............................................................................................ 351
Korzystanie z procedur sk adowanych ......................................................................... 353
Pobieranie danych za pomoc procedur sk adowanych .......................................... 353
Modyfikowanie danych za pomoc procedur sk adowanych ................................. 355
Wykonywanie dowolnych polece SQL ................................................................ 355
Rozdzia 16. Kilka sposobów na odczytywanie
i zapisywanie danych w plikach XML .......................................... 357
Podstawy j zyka XML ................................................................................................. 357
Deklaracja .............................................................................................................. 358
Elementy ................................................................................................................ 358
Atrybuty ................................................................................................................. 359
Komentarze ............................................................................................................ 359
Klasy XmlTextReader i XmlTextWriter ...................................................................... 359
Zapis do pliku XML ............................................................................................... 359
Odczyt danych z pliku XML .................................................................................. 361
Analiza i odczyt pliku XML o nieznanej strukturze ............................................... 363
Serializacja obiektów do pliku XML ............................................................................ 365
Serializacja obiektu do pliku XML ........................................................................ 366
Deserializacja obiektu z pliku XML ....................................................................... 367
XML i ADO.NET ......................................................................................................... 368
Wczytywanie danych z pliku XML do komponentu DataSet ................................. 369
Zapisywanie zmian do pliku XML za po rednictwem DataSet .............................. 370
LINQ to XML .............................................................................................................. 371
Tworzenie pliku XML za pomoc klas XDocument i XElement ........................... 371
Pobieranie warto ci z elementów o znanej pozycji w drzewie ............................... 373
Przenoszenie danych z kolekcji do pliku XML ...................................................... 375
Przenoszenie danych z bazy danych (komponentu DataSet) do pliku XML .......... 377
Zapytania LINQ ..................................................................................................... 378
Modyfikacja pliku XML ........................................................................................ 379
Kup książkę Poleć książkę
Spis tre ci 9
Cz III Technologie Windows ................................................. 381
Rozdzia 17. Rejestr systemu Windows ............................................................ 383
Korzystanie z rejestru ................................................................................................... 383
Odczytywanie danych z rejestru ............................................................................. 383
Zapisywanie oraz odczytywanie po o enia
i rozmiaru formy w prywatnym kluczu aplikacji ................................................. 386
Usuwanie klucza z rejestru ..................................................................................... 388
Przegl darka skojarze plików ..................................................................................... 389
Informacja o typach plików przechowywana w rejestrze ....................................... 389
Przygotowanie interfejsu ........................................................................................ 391
Odczytywanie listy rozszerze ............................................................................... 392
Pobieranie opisu, polecenia g ównego
i domy lnego edytora dla podanego typu plików ................................................. 394
Rozdzia 18. Mechanizm PInvoke ..................................................................... 399
Funkcja bez argumentów .............................................................................................. 399
Problemy z argumentami .............................................................................................. 401
Zwracanie warto ci przez argumenty ........................................................................... 403
Zwracanie tablicy znaków w funkcjach WinAPI .......................................................... 406
Rozdzia 19. Komunikaty Windows ................................................................... 407
Wysy anie komunikatów Windows .............................................................................. 407
Identyfikacja aplikacji ............................................................................................ 408
Wysy anie komunikatu do okna o znanym uchwycie ............................................. 409
Komunikaty jako sposób porozumiewania si z systemem .................................... 410
Odbieranie komunikatów Windows ............................................................................. 411
Monitor komunikatów ............................................................................................ 411
Reakcja na wybrany komunikat ............................................................................. 412
Skorowidz ..................................................................................................... 415
Kup książkę Poleć książkę
10 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
Kup książkę Poleć książkę
Rozdzia 2.
Debugowanie kodu
Sk d bior si b dy i jak ich unika ?
Za b dy w kodzie jest (niemal) wy cznie odpowiedzialny programista. Ale to oczy-
wiste stwierdzenie niewiele nam pomaga w ich unikaniu. Zreszt b dów w ogóle nie
mo na unikn . Ich powstawanie jest nierozerwalnie zwi zane z samym procesem
tworzenia kodu. Co wi cej, liczba b dów w kodzie zale y proporcjonalnie od liczby
linii kodu, a wspó czynnik proporcjonalno ci jest powi zany ze stopniem do wiad-
czenia i niewyspania programisty. Prosty wniosek jest taki, e pisany przez nas kod
powinien mie jak najmniejsz liczb linii. Do tego celu trzeba d y za pomoc
wszelkich mo liwych sposobów i sztuczek. Przede wszystkim nale y unika powta-
rzania kodu. Lepiej przygotowa jedn metod , któr mo emy porz dnie przetestowa ,
ni powiela jej fragmenty w kilku miejscach, co uniemo liwia ich kontrol w przy-
padku jakichkolwiek modyfikacji. Zatem lepiej wywo a porz dnie napisan metod ,
zamiast korzysta z kopiuj i wklej . Poza tym, je eli mo emy u y gotowego przete-
stowanego kodu (np. kontrolki), to warto z tego skorzysta . W tworzeniu kodu mo e nas
te wyr czy rodowisko programistyczne. W przypadku aplikacji Windows Forms dzieje
si tak zreszt ju w momencie, gdy bawi c si mysz , budujemy interfejs aplikacji.
Z pozornie bezu ytecznego faktu, e b dów w kodzie nie da si unikn , co dobitnie
wyra a prawo Murphy ego: Nie ma aplikacji bez b dów , mo na wyci gn jeszcze
jeden wniosek: otó , skoro wyst powanie b dów jest niemal pewne, trzeba si na nie
przygotowa . Nie mo na zak ada , e b dy b d zdarza si na tyle rzadko, i praw-
dopodobie stwo ich wyst pienia b dzie tak ma e, e nie b d dla u ytkownika uci liwe.
Inne prawo Murphy ego mówi bowiem: Je eli b d mo e wyst pi , wyst pi na pewno,
i to w takim momencie, gdy u ytkownikowi dopiecze to najbardziej (np. gdy ko -
cz c prac nad dokumentem, b dzie chcia zapisa go do pliku). Jak wspomnia em,
jest zatem konieczne przygotowanie programu na mo liwo wyst pienia b dów. Korzy-
stajmy wobec tego z obs ugi wyj tków w ka dej budz cej w tpliwo ci sytuacji, nawet
tam, gdzie jak si nam wydaje usun li my ju wszystkie usterki. Przemy lana
reakcja na wyj tki mo e pozwoli na zminimalizowanie skutków wyst pienia b du,
czasem nawet do tego stopnia, e u ytkownik nie musi si dowiedzie , i co z ego
si wydarzy o.
Kup książkę Poleć książkę
36 Cz I Projektowanie aplikacji Windows
Teoria Murphy ego wypowiada si tak e na temat najmniej lubianej czynno ci pro-
gramistów, a wi c na temat testowania i tropienia b dów logicznych z kodu. Jak ju
wiemy, nie ma aplikacji bezb dnych, liczb b dów mo na jedynie redukowa . Nale y
jednak zdawa sobie spraw , e tzw. znalezienie ostatniego b du to idea regulatywna
debugowania. Nale y w ni wierzy , ale z góry wiadomo, e jest nieosi galna. Warto
te u wiadomi sobie zaskakuj c , ale w wietle teorii Murphy ego oczywist prawd :
poprawiaj c b dy w kodzie, tworzymy nowe.
Kontrolowane uruchamianie aplikacji
Na szcz cie, w procesie usuwania b dów (debugowania) kodu Visual Basic dla platfor-
my .NET mamy pot nego sprzymierze ca. Jest nim rodowisko programistyczne Visual
Studio z wbudowanym debuggerem, wskazuj cym linie kodu, które nie podobaj si
kompilatorowi, pozwalaj cym na kontrol uruchamianego kodu, a nawet na ledzenie
jego wykonywania linia po linii. Przyjrzyjmy si bli ej kilku jego mo liwo ciom.
Program z b dem pole do popisu dla debuggera
Zacznijmy od przygotowania aplikacji, której metody zawieraj b d powoduj cy
wyst pienie wyj tku. W tym celu:
1. Utwórz nowy projekt typu Windows Forms Application o nazwie Debugowanie.
2. W widoku projektowania umie na formie przycisk Button.
3. Kliknij dwukrotnie ów przycisk, aby utworzy domy ln metod zdarzeniow
(w tym przypadku do zdarzenia Button1.Click). Zostaniesz automatycznie
przeniesiony do edytora kodu.
4. Zanim uzupe nisz zawarto metody zdarzeniowej, utwórz definicj metody
Kwadrat (umie j np. bezpo rednio przed utworzonym automatycznie
szkieletem metody Button1_Click, listing 2.1).
Listing 2.1. Metoda, w której ukryli my perfidny b d
Public Class Form1
Private Function Kwadrat(argument As Integer) As Integer
Dim wartosc As Integer
wartosc = argument * argument
Return wartosc
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
End Sub
End Class
Kup książkę Poleć książkę
Rozdzia 2. Debugowanie kodu 37
5. Teraz przejd do metody Button1_Click i wpisz do niej polecenia wyró nione
w listingu 2.2.
Listing 2.2. Z pozoru wszystko jest w porz dku&
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim x As Integer = 1234
Dim y As Integer = Kwadrat(x)
y = Kwadrat(y)
Dim sy As String = y.ToString()
MessageBox.Show("Wynik: " & sy)
End Sub
Oczywi cie, obie metody mo na by skompresowa do jednej lub dwóch linii, ale
w a nie taka forma u atwi nauk debugowania.
Uruchomimy najpierw aplikacj (klawisz F5), eby przekona si , e nie dzia a prawi-
d owo. Po klikni ciu przycisku zamiast komunikatu z wynikiem zobaczymy komuni-
kat o wyj tku z informacj , e nast pi o przekroczenie zakresu zmiennej (Arithmetic
operation resulted in an overflow). Miejsce wyst pienia wyj tku wska e nam ro-
dowisko Visual Studio program zatrzyma si na mno eniu w metodzie Kwadrat.
Nie jest jednak oczywiste, które wywo anie tej metody (a wywo ywana jest dwa razy)
prowadzi do b du. Mamy zatem do czynienia z b dem logicznym ukrytym gdzie
w naszym kodzie. I to w a nie jego tropienie b dzie motywem przewodnim wi kszej
cz ci tego rozdzia u.
ledzenie wykonywania programu krok po kroku
(klawisze F10 i F11)
Naci nijmy klawisz F10 lub F11 (wszystkie klawisze skrótów wykorzystywane podczas
debugowania zebrane zosta y w tabeli 2.1). Je eli w czona jest wspomniana w po-
przednim rozdziale platforma aplikacji (ang. application framework), to aplikacja
uruchomi si normalnie. Dopiero gdy klikniemy przycisk na formie, jej dzia anie za-
trzyma si i zobaczymy zaznaczon na ó to sygnatur metody zdarzeniowej zwi zanej
z tym zdarzeniem (rysunek 2.1). Inaczej jest, gdy platforma aplikacji jest wy czona,
a my zdefiniowali my w asn metod Main. Wówczas po naci ni ciu F10 lub F11 na
ó to zaznaczona zostanie jej sygnatura, a rodowisko b dzie czeka o na dalsze polecenia.
Ka de naci ni cie klawisza F10 powoduje wówczas wykonanie jednej linii kodu (tej
zaznaczonej na ó to), bez wzgl du na to, czy jest to inicjacja zmiennej, czy wywo anie
metody. Czynno taka nazywa si Step Over (menu Debug), czyli krok nad . Na-
zwa bierze si z tego, e je eli w wykonywanej linii znajduje si wywo anie metody,
jest ona wykonywana w ca o ci. Natomiast F11 powoduje wykonanie kroku w g b
(ang. step into), co w przypadku wywo ania metody oznacza, e zostaniemy przenie-
sieni do pierwszej linii jej definicji i tam b dziemy kontynuowa ledzenie dzia ania
aplikacji. W przypadku gdy ta metoda zawiera wywo anie kolejnej metody, klawisze
F10 i F11 pozwol zdecydowa , czy chcemy j wykona w ca o ci, czy przeanalizowa
linia po linii. Je eli zorientujemy si , e zeszli my zbyt g boko mo emy nacisn
Shift+F11, aby wykona pozosta cz metody i j opu ci (ang. step out wyj cie z).
Kup książkę Poleć książkę
38 Cz I Projektowanie aplikacji Windows
Tabela 2.1. Zwi zane z debugowaniem klawisze skrótów rodowiska Visual Basic
Funkcja Klawisz skrótu
Uruchomienie z debugowaniem F5
Uruchomienie bez debugowania Ctrl+F5
Uruchomienie i zatrzymanie w linii, w której jest kursor Ctrl+F10
Krok do nast pnej linii kodu (Step over) F10
Krok z wej ciem w g b metody (Step into) F11
Krok z wyj ciem z metody (Step out) Shift+F11
Ustawienie breakpointu (funkcja edytora) F9
Zako czenie debugowania (zako czenie dzia ania aplikacji) Shift+F5
Rysunek 2.1. Na rysunku rozwini te jest menu Debug, zawieraj ce instrukcje steruj ce procesem
kontrolowanego uruchamiania aplikacji
Run to Cursor (klawisze Ctrl+F10)
W przypadku gdy platforma aplikacji jest wy czona i mamy zdefiniowan metod
Main, korzystanie z klawiszy F10 i F11 mo e nie by zbyt wygodne. Dla przyk adu,
je eli interesuje nas tylko kod metody zdarzeniowej Button1_Click, to przechodzenie
krok po kroku przez zawarto metody Main jest ca kowicie zb dne. Wówczas wy-
godniej jest pos u y si kombinacj klawiszy Ctrl+F10. Podobnie jak klawisz F5,
uruchamia ona aplikacj , ale zatrzymuje j w momencie, gdy wykonana ma by in-
strukcja z linii, w której znajduje si kursor edytora. Ta kombinacja klawiszy dzia a
tak e wtedy, gdy aplikacja jest ju uruchomiona w trybie debugowania. Po zatrzymaniu
Kup książkę Poleć książkę
Rozdzia 2. Debugowanie kodu 39
dzia ania aplikacji znowu mo emy korzysta z klawiszy F10 i F11 do ledzenia dzia a-
nia metod krok po kroku.
Aby natychmiast przerwa debugowanie programu i powróci do normalnego trybu
edycji Visual Studio, nale y nacisn klawisze Shift+F5.
Breakpoint (klawisz F9)
Gdy przewidujemy, e b dziemy wielokrotnie kontrolowa wykonywanie pewnych
polece , np. z metody Button1_Click, mo emy w jej pierwszej linii ustawi tzw. bre-
akpoint. W tym celu przechodzimy do wybranej linii w edytorze kodu i naciskamy
klawisz F9. Linia zostanie zaznaczona bordowym kolorem oraz czerwon kropk na
lewym marginesie (rysunek 2.2). Po uruchomieniu programu w trybie debugowania jego
dzia anie zostanie zatrzymane, gdy w tek dotrze do tej linii. Mo emy wówczas obejrze
warto ci zmiennych (o tym za chwil ), przej do ledzenia kodu (klawisze F10 i F11) lub
nacisn klawisz F5, aby wznowi jego dzia anie w normalnym trybie debugowania. Gdy
jednak w tek znowu dotrze do linii z ustawionym breakpointem, dzia anie programu
jeszcze raz zostanie wstrzymane. Aby anulowa breakpoint, nale y ustawi kursor
w odpowiedniej linii i jeszcze raz nacisn F9 lub klikn widoczn na lewym marginesie
czerwon kropk .
Rysunek 2.2. Wyró nienie linii kodu, w której ustawiony jest breakpoint
Breakpoint bywa szczególnie po yteczny przy ledzeniu wykonywania p tli. Je eli
ustawimy go w interesuj cej nas linii wewn trz p tli, ka da jej iteracja zostanie prze-
rwana, co pozwala np. na przyjrzenie si warto ciom zmiennych.
Kup książkę Poleć książkę
40 Cz I Projektowanie aplikacji Windows
Okna Locals i Watch
Mo liwo obserwacji warto ci zmiennych u ywanych w programie to bardzo wa ne
narz dzie debuggerów. Dzi ki niemu mo emy w ka dej chwili sprawdzi , czy warto-
ci zmiennych s zgodne z naszymi oczekiwaniami, a to pozwala oceni , czy program
dzia a prawid owo. Wykonywanie aplikacji linia po linii z równoczesnym wpatrywa-
niem si w warto ci zmiennych jest w praktyce najcz ciej wykorzystywanym sposo-
bem na odszukanie owego ostatniego b du . W Visual Studio s u y do tego okno
Locals (rysunek 2.3), które zawiera list wszystkich pól zadeklarowanych wewn trz
obiektów i zmiennych lokalnych zadeklarowanych w aktualnie wykonywanej meto-
dzie wraz z ich warto ciami. Je eli zmienne s obiektami, mo emy zobaczy tak e
ich pola sk adowe. Poza tym mamy do dyspozycji okno Watch, do którego mo emy
doda nie tylko poszczególne pola i zmienne, ale równie poprawne wyra enia j zyka
Visual Basic, np. x*x.
Rysunek 2.3. Podgl danie warto ci zmiennych w edytorze
Warto ci zmiennych mo na równie zobaczy , je eli w trybie debugowania w edytorze
przytrzymamy przez chwil kursor myszy nad zmienn widoczn w kodzie. Po chwili
pojawi si okienko podpowiedzi zawieraj ce warto wskazanej w ten sposób
zmiennej (rysunek 2.4). Nale y jednak pami ta , e pokazywana warto dotyczy
aktualnie wykonywanej linii, a nie linii wskazanej kursorem. W Visual Studio 2010
tak podejrzan w oknie edytora warto mo na przypi (ikona pinezki), przez co
podczas pracy w trybie debugowania pozostaje stale widoczna na ekranie (rysunek
2.4). Mo liwo podgl dania warto ci zmiennych w oknie edytora dotyczy tak e
obiektów zobaczymy wówczas warto ci wszystkich dost pnych pól i w asno ci.
Kup książkę Poleć książkę
Rozdzia 2. Debugowanie kodu 41
Rysunek 2.4. U do u okna VS widoczne s dwa podokna: z lewej okno Locals, z prawej Call Stack
Przejd my w edytorze kodu (zak adka Form1.vb) do linii w metodzie Button1_Click,
w której zdefiniowana jest zmienna y. Zaznaczmy t zmienn i prawym przyciskiem
myszy rozwi my menu kontekstowe. Z niego wybierzmy polecenie Add Watch (do-
st pne tylko, gdy uruchomione jest debugowanie). Zmienna ta zostanie dodana do listy
w oknie Watch, w której zobaczymy jej nazw , warto i typ. Warto jest aktualizowana
przy ka dym naci ni ciu klawisza F10 lub F11, co pozwala na ledzenie jej zmian
w trakcie wykonywania metody. Mo emy si przekona , wykonuj c kolejne polecenia
metody Button1_Click ponownymi naci ni ciami klawisza F10, e po pierwszym
uruchomieniu metody Kwadrat zmienna y ma warto równ 1522756. Jest zatem po-
prawna. Niestety, przy drugim uruchomieniu metody Kwadrat pojawi si wyj tek. Aby
sprawdzi , co jest przyczyn b du, wchodzimy do jej rodka , u ywaj c klawisza F11.
W metodzie Kwadrat nie ma zmiennej y, a jej warto przejmuje zmienna argument.
Dodajmy j zatem do listy obserwowanych zmiennych, wpisuj c jej nazw do pierw-
szej kolumny w podoknie Watch. Dodajmy tak e wyra enie argument*argument.
W trakcie drugiego przebiegu metody Kwadrat przy tym wyra eniu pojawi si komu-
nikat Constant expression not representable in type Integer , czyli warto nie mo e
by przedstawiona w zmiennej typu Integer« .
Informacja ta wyja nia przyczyn b du podczas mno enia zosta przekroczony, i to
znacznie, zakres mo liwych warto ci zmiennej Integer (1 522 756·1 522 756 =
2 318 785 835 536 > 2 147 483 647). Innymi s owy, 32 bity, jakie oferuje typ Integer, nie
wystarczaj do zapisania wyniku. Aby poprawi ów b d, przynajmniej w pewnym
zakresie warto ci argumentów, nale a oby u y 64-bitowego typu Long. Ponadto, po-
niewa kwadrat liczby ca kowitej nie mo e by ujemny, warto pozby si tak e znaku
Kup książkę Poleć książkę
42 Cz I Projektowanie aplikacji Windows
i u y typu ULong. Kod pozbawiony b du widoczny jest na listingu 2.3. Na razie tych
zmian jednak nie wprowadzajmy korzystaj c z obecno ci b du, chcia bym zapre-
zentowa mechanizm przechwytywania wyj tków.
Listing 2.3. Poprawiony kod, którego na razie nie wstawiajmy do projektu
Private Function Kwadrat(argument As Integer) As Long
Dim wartosc As ULong
wartosc = CULng(argument) * CULng(argument)
Return wartosc
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim x As Integer = 1234
Dim y As ULong = Kwadrat(x)
y = Kwadrat(y)
Dim sy As String = y.ToString()
MessageBox.Show("Wynik: " & sy)
End Sub
Na rysunku 2.4 z prawej strony na dole widoczne jest okno Call Stack (z ang. stos wy-
wo a ). Wymienione s w nim wszystkie metody, pocz wszy od metody Button1_
Click, a sko czywszy na metodzie, której polecenie jest obecnie wykonywane. W bar-
dziej rozbudowanych programach pomaga to w zorientowaniu si , co si aktual-
nie dzieje w aplikacji, szczególnie po jej zatrzymaniu w wyniku dzia ania breakpointu.
Stan wyj tkowy
Je eli nie wprowadzili my zmian z listingu 2.3 do projektu, w razie uruchomieniu
projektu z debugowaniem (klawisz F5) po klikni ciu przycisku Button1 pojawi si
komunikat debuggera informuj cy o wyj tku (rysunek 2.5). Przyjrzyjmy si temu
komunikatowi. Przede wszystkim na pasku tytu u widoczne jest ostrze enie Overflo-
wException was unhandled, co oznacza, e wyj tek zosta zg oszony przez fragment
kodu, który nie by otoczony obs ug wyj tków. Nie znajdowa si zatem w sekcji try
konstrukcji try..catch ani w metodzie, która by aby z tej sekcji wywo ana. W efekcie
w przypadku uruchomienia aplikacji poza rodowiskiem Visual Studio wyj tek ten
nie by by w aden sposób obs u ony przez aplikacj i musia aby si nim zaj sama
platforma .NET, co raczej nie powinno mie miejsca. W oknie komunikatu debuggera
widoczna jest tak e tre przekazywanego przez wyj tek komunikatu oraz link do do-
kumentacji klasy wyj tku (w naszym przypadku klasy OverflowException). Po klik-
ni ciu View Detail... mo na obejrze stan przesy anego obiektu w widocznym na dole
okna odpowiedniku okna Locals.
Po wyst pieniu wyj tku rodowisko Visual Studio wstrzymuje dzia anie aplikacji na
tej samej zasadzie jak breakpoint, tzn. zwykle mo emy przywróci jej dzia anie, np.
za pomoc klawiszy F5 lub F10. Mo emy tak e zupe nie przerwa dzia anie aplikacji
i przej do poprawiania kodu, naciskaj c kombinacj klawiszy Shift+F5.
Kup książkę Poleć książkę
Rozdzia 2. Debugowanie kodu 43
Rysunek 2.5. Komunikat o wyj tku zg oszony przez Visual Studio
Je eli aplikacja zostanie uruchomiona poza debuggerem przez naci ni cie kombinacji
klawiszy Ctrl+F5 lub samodzielne uruchomienie pliku .exe poza rodowiskiem Visu-
al Studio, nieobs u ony wyj tek jest przechwytywany przez platform .NET. O takiej
sytuacji u ytkownik powiadamiany jest komunikatem widocznym na rysunku 2.6.
Prosz zwróci uwag na to, e w przeciwie stwie do platformy Win32, w której
analogiczny komunikat oznacza by awaryjne zamkni cie aplikacji, tu istnieje mo li-
wo kontynuowania jej dzia ania (przycisk Kontynuuj widoczny na rysunku 2.6).
Oczywi cie, wyj tek pojawi si znowu, je eli klikniemy przycisk Button1 na formie
i uruchomiona zostanie metoda Kwadrat, ale aplikacja nie zawiesza si . Warto doceni
t w asno platformy .NET je eli nasza aplikacja by aby edytorem, a b d pojawia by
si np. podczas drukowania, platforma .NET, nie zamykaj c ca ej aplikacji w przy-
padku wyst pienia b du, da aby nam mo liwo m.in. zachowania niezapisanego
dokumentu na dysku.
Przechwytywanie wyj tków w konstrukcji try..catch
Teraz spróbujmy wykry wyst pienie wyj tku z poziomu aplikacji. W tym celu w meto-
dzie zdarzeniowej przycisku Button1_Click otoczymy wywo anie metody Kwadrat
konstrukcj przechwytywania wyj tków.
1. Naci nij Shift+F5, aby zako czy dzia anie debuggera.
2. Do metody Button1_Click dodaj obs ug wyj tku zgodnie ze wzorem na
listingu 2.4.
Kup książkę Poleć książkę
44 Cz I Projektowanie aplikacji Windows
Rysunek 2.6.
Wyj tek nieobs u ony
w aplikacji jest
przechwytywany przez
rodowisko .NET
(aplikacja uruchomiona
jest bez debuggera)
Listing 2.4. Wszystkie dotychczasowe polecenia metody Button1_Click umie cili my w jednej sekcji Try
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Try
Dim x As Integer = 1234
Dim y As Integer = Kwadrat(x)
y = Kwadrat(y)
Dim sy As String = y.ToString()
MessageBox.Show("Wynik: " & sy)
Catch ex As Exception
MessageBox.Show("B d: " & ex.Message,
"Przechwycony wyj tek w metodzie Button1_Click",
MessageBoxButtons.OK,
MessageBoxIcon.Error)
End Try
End Sub
3. Skompiluj i uruchom aplikacj w trybie debugowania (klawisz F5).
Teraz po uruchomieniu aplikacji i klikni ciu przycisku zamiast komunikatu debuggera
lub komunikatu platformy .NET zobaczymy w asny komunikat o b dzie (rysunek 2.7).
Debugger nie zainterweniuje w przypadku obs u onego wyj tku.
Wszystkie polecenia metody Button1_Click umie cili my w jednej sekcji Try. To ma
sens, gdy ka de wyst pienie b du powoduje, e wykonywanie dalszej cz ci metody po-
zbawione jest celu. Je li natomiast po pojawieniu si b du chcieliby my podj jak
akcj ratunkow i próbowa kontynuowa dzia anie metody, to ka da budz ca w t-
pliwo ci instrukcja powinna by otoczona oddzieln konstrukcj obs ugi wyj tków.
Dodatkowe informacje na temat wyj tków mo na znale w rozdziale 3.
Kup książkę Poleć książkę
Rozdzia 2. Debugowanie kodu 45
Rysunek 2.7.
Komunikat wy wietlany
u ytkownikowi po
przechwyceniu wyj tku
Zg aszanie wyj tków
Ostatni rzecz , o której chcia bym wspomnie w kontek cie wyj tków, jest ich zg a-
szanie. Je eli w kodzie wykryjemy b d, dla przyk adu je eli sprawdzimy, e argument
metody Kwadrat jest zbyt du y, to mo emy samodzielnie zg osi wyj tek. W takim
przypadku nale y u y instrukcji Throw zgodnie ze wzorem widocznym na listingu 2.5.
Kod ten u ywa dodatkowego pola (zmiennej zdefiniowanej w obr bie klasy) o nazwie
MaxArgumentKwadrat, której definicja równie widoczna jest na poni szym listingu.
Listing 2.5. Warto pierwiastka obliczana jest tylko raz, wi c kontrola argumentu nie obci a
nadmiernie procesora
Dim MaxArgumentKwadrat As Integer = Math.Sqrt(Integer.MaxValue)
Private Function Kwadrat(argument As Integer) As Integer
Dim wartosc As Integer
If argument < MaxArgumentKwadrat Then
Throw New Exception("Argument metody kwadrat ma zbyt du warto ")
End If
wartosc = argument * argument
Return wartosc
End Function.
Gdy teraz po uruchomieniu aplikacji klikniemy przycisk Button1, zamiast dotychcza-
sowego komunikatu informuj cego o przepe nieniu zobaczymy nasz w asny, bardziej
konkretny komunikat.
Kup książkę Poleć książkę
46 Cz I Projektowanie aplikacji Windows
Kup książkę Poleć książkę
Skorowidz
User32.dll, 401 debugowanie, 36
A
VCL, 171 definicja
ADO.NET, 297, 368 VCL.NET, 171
delegacji, 70
aktualizacja danych, 338 Windows Forms, 119, 171
typu
aktualizowanie cie ki, 218 WPF, 12, 119
Okno, 366
algorytm biblioteki
Wielko Okna, 366
generuj cy zbiór Julii, 165 .dll, 193, 239
uchwytu do metody, 70
testowania, 162 .NET, 47
w a ciwo ci
alias, 112 .ocx, 241
CzyKatalogiWidoczne, 207
analiza pliku XML, 363 bloki kodu, 83
Filtr, 207
aplikacja Patrz projekt b d, 278
cie kaDoZaznaczonego-
aplikacje kompilacji, 54
Elementu, 208
konsolowe, 261 logiczny, 37
definiowanie
okienkowe, 16 w kodzie p tli, 91
aliasów, 112
Windows Forms, 80 breakpoint, 39
symboli preprocesora, 83
argumenty metody, 251 budowanie tabeli, 330
tablicy, 85
atrybut, 84, 359 bufor obiektu, 340
typów ogólnych, 108
DllImport, 84 buforowanie, 158
w asnego zdarzenia, 211
Extension, 114
deklaracja pola typu Panel, 24
atrybuty elementów, 365
C deklaracja zmiennej, 49
automatyczne
deserializacja z pliku XML, 367
mapowanie struktury, 342
CAS, Code Access Security, 48
d ugie linie, 141
tworzenie klasy encji, 345
CLR, Common Language
dodawanie
Runtime, 48
pól do klasy, 188
CLS, Common Language
B
kontrolki, 195
Specification, 48
referencji do biblioteki,
baza danych, 297 CTS, Common Type System, 48
163, 241
Access, 304
rekordów, 340
Telefony.mdf, 350
D dokowanie palety, 18
biblioteka
domy lna warto argumentu, 67
DLL, 84
dane
dost p do pola, 25
Metro, 12
aktualizowanie, 338
dost p przez referencj Me, 127
STL, 107
analizowanie, 320
drukowanie, 135
System.Drawing.dll, 224
filtrowanie, 332
drukowanie w tle, 144
System.Numerics, 163
grupowanie, 321
dymek, balloon tip, 150
System.Windows.Forms.dll,
czenie zbiorów, 322
dynamiczne adowanie
224
prezentacja, 320
bibliotek, 239
SystemInfo.dll, 253
sortowanie, 332
TPL, 267
weryfikowanie, 321
Kup książkę Poleć książkę
416 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
dyrektywa
G K
#Const, 83
kana alpha, 30
#End Region, 83 garbage collector, 62
katalogi specjalne, 265
#If, 82 generator liczb pseudolosowych,
klasa, 95
#Region, 83 77, 276, 279
AdresyDataSet, 303, 304
dyrektywy preprocesora, 82 GUI, graphical user interface,
Application, 127
dystrybucja biblioteki, 221 15, 119
CategoryAttribute, 205
ColorProgressBar, 232
E I
Console, 257
DataContext, 335, 341
edycja identyfikacja aplikacji, 408
DataTable, 332
bazy danych, 301 IL, Intermediate Language, 48
DescriptionAttribute, 205
menu kontekstowego, 190 implementacja
encji, entity class, 336
pliku XML, 369 interfejsu, 106
Environment, 264
edytor interfejsu IComparable, 110
EventWaitHandle, 288, 289
g ównego menu, 125 listy, 90
Exception, 130
kodu, 21 import funkcji WinAPI, 408
FileListBox, 196
menu kontekstowego, 148 importowanie przestrzeni
Form1, 22, 177
relacji, 351 nazw, 83
Graphics, 136, 229
w asno ci Dock, 121 informacje o
Lazy, 65
ekran powitalny, splash kontrolce, 222
Monitor, 288
screen, 145 systemie, 253, 263
Mutex, 290
element listy, 92 cie kach, 384
OverflowException, 42
elementy, 358 typie aplikacji, 395
Panel, 19, 25
encje, entity, 359 inicjowanie zmiennej, 54
Para, 113
instancja klasy, 95
Parallel, 267, 290, 292
instrukcja
ParameterizedThreadStart, 283
F
Continue For, 79
Process, 167
If..Else, 76
fabryka, 65
Program, 264
If..Then, 32
fazy procesu drag & drop, 175 Queue, 91
Select, 77
fazy przenoszenia elementu, 174 Random, 77
IntelliSense, 28, 118
FIFO, first in, first out, 92 Regex, 62
interfejs
FILO, first in, last out, 92 Registry, 392
aplikacji, 348, 392
RegistryKey, 385
filtr okna dialogowego, 132
graficzny, 15
SoundPlayer, 152
filtrowanie, 201, 312, 352
IComparable, 90
Stack, 92
filtrowanie wyj tków, 80
IComparable(Of T), 110
StreamReader, 130
filtry, 131
IConvertible, 99
String, 60
flaga daneZmienione, 307
IDictionary, 92
StringBuilder, 61, 406
focus, 25
IEnumerable, 332
System.Array, 85
forma
IEnumerable(Of ), 315
System.Enum, 63
kolor, 184
komponentu, 194
System.Environment, 262
kszta t, 184
przegl darki, 225
System.IO.DriveInfo, 404
formularz, 309, 311
WinExec, 403
SystemInfo, 242, 243, 244
funkcja
izomorficzno relacji, 336
Thread, 267
CreateProcess, 403
ThreadPool, 285
FindWindow, 409
TrackBar, 19
MessageBeep, 399, 400, 401 J
XDocument, 372, 374
MsgBox, 49
jawne deklarowanie XmlTextReader, 359
SendMessage, 409
zmiennych, 12 XmlTextWriter, 361
ShellExecute, 403
j zyk funkcyjny F#, 47 zagnie d ona, 246
WinAPI, 404
JIT, Just-In-Time, 48 klasy, 72
WinExec, 402
opakowuj ce, 50
funkcje bez argumentów, 399
rozszerzaj ce, 116
Kup książkę Poleć książkę
Skorowidz 417
klawisz Enter, 259 kompozycja Klasyczny klas, 247
klawisze skrótów Windows, 228 komunikatów, 412
VB, 28
komunikat, 412 metod, 248
do debugowania, 38
o wyj tku, 43 osób, 318
menu, 125
WM_NCMOUSEMOVE, 413 parametryczna, 85, 92
klucz, key, 92
komunikaty Windows, 407 procesów, 168
g ówny, 383, 393
konfiguracja przenoszonych plików, 181
prywatny, 397
timera, 152 rozszerze , 392
prywatny aplikacji, 386
konfigurowanie typów, 247
rejestru, 384
formy, 183 z b dami, 90
u ytkownika, 395
interfejsu, 392
kod
komponentu DataSet, 302, 325
klasy Form1, 22
kontrolki DataSet, 326
klasy kontrolki, 197
paska stanu, 123
adowanie
niezarz dzany, unmanaged
konstrukcja
dynamiczne bibliotek, 245
code, 240
SyncLock .. End SyncLock,
statyczne bibliotek, 243
niezrównoleglony, 269
282
a cuch, 59
po redni MSIL, 48
Try..Catch, 314
czenie
zarz dzany, managed code, 48
Try..Catch..End Try, 130
danych, 349
zbioru Mandelbrota, 164
Using..End Using, 130
zbiorów, 322
kolejka, queue, 91
konstruktor
kolekcja, 84
klasy opisuj cej form , 31
Dictionary, 92
M
obiektu Form1, 167
List, 90
konstruktory domy lne, 25, 97
malowanie kontrolki, 229
a cuchów, 379
kontrola typów, 53
mapowanie oparte na
SortedList, 91
kontrolka
atrybutach, 337
SortedDictionary, 92
ColorProgressBar, 230, 236
mechanizm
kolory
DataGridView, 346
PInvoke, 399, 403
komponentów, 120
DataSet, 326
pó nego wi zania, 239
paska post pu, 236
FileListBox, 194, 223 228
reflection, 255
w .NET, 30
panel, 19
menu
komentarze, 359
PrintDialog, 137
Edycja, 134
kompilacja
ProgressBar, 228, 230, 235
g ówne, 124
dwustopniowa, 47
suwak, 19
kontekstowe, 148, 189
kodu po redniego, 48
kontrolki ActiveX, 193
metatypy, 95
komponentu, 219
kontynuacja polecenia, 49
metoda, 95
warunkowa, 82
konwersja typu, 74
Abort, 274
kompilator Visual Basic, 49
kopiowanie pliku tekstowego, 129
Append, 62
komponent, 193
Application.Run, 33, 257
BackgroundWorker, 268
Array.Sort, 111
ComboBox1, 396
L
Assembly.GetType, 248
DataGridView, 307
leniwe inicjowanie zmiennych, 65 Button1_Click, 41
DataSet, 302, 304
liczba instancji aplikacji, 34 Color.FromArgb, 30
FileListBox, 194, 224, 228
ColorProgressBar_Paint, 233
LIFO, last in, first out 92
ListBox, 171, 179
CompareTo, 106, 110
LINQ, Language Integrated
NumericUpDown, 313
Console.Out.WriteLine, 260
Query, 317
OsobyBindingSource, 312
Console.WriteLine, 261
LINQ to DataSet, 315, 325 328
PrintDocument, 137
CreateDatabase, 341
LINQ to Objects, 315, 317
SerialPort, 193
DeleteDatabase, 341
LINQ to SQL, 315, 335, 337
SoundPlayer, 145
DoDragDrop, 171, 172, 176
LINQ to XML, 315, 371, 373
StatusStrip, 123
Element, 374
LINQ to XSD, 380
TextBox, 129, 130
Equals, 104
lista, 90
Timer, 146, 151
Form.Dispose, 25
argumentów metody, 250
Form1.Dispose, 25
dysków logicznych, 266
Kup książkę Poleć książkę
418 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
metoda upraszczaj ca u amek, 99
O
Form1_FormClosed, 361 WndProc, 407, 411
Form1_Paint, 158 WriteComment, 361
obiekt, 95
Get, 242 WriteStartDocument, 361
NotifyIcon, 148
GetHashCode, 103 zamykaj ca aplikacj , 149
rejestr, 393
GetProcesses, 167 zapisuj ca tekst, 132
obliczenia sekwencyjne, 291
GetType, 59 zarz dzaj ca drukowaniem,
obs uga
GetValueOrDefault, 74 137, 144
aplikacji okienkowej, 32
Graphics.DrawImage, 159 zwracaj ca warto , 68
menu kontekstowego, 190
inicjuj ca przenoszenie, metody
wyj tków, 42
177, 179 klasy String, 60
odczytywanie
InitializeComponents, 25 menu Edycja, 135
atrybutów elementów, 365, 374
Invoke, 253 niewspó dzielone, 254
danych z pliku XML, 361
Join, 280 przeci one, 66
danych z rejestru, 383
kopiuj ca tekst, 129 publiczne, 249
nazwy elementu, 374
ListBox1_DoubleClick, rozszerzaj ce, extension
ustawie , 155
213, 215 methods, 114
od miecacz, garbage collector,
Main, 26, 33, 34, 259 rozszerzaj ce LINQ, 318
25, 73
Marshall.SizeOf, 52 statyczne, 253
od wie anie
Me.Controls.Add, 25 uruchamiane z menu, 191
formy, 156
MessageBox.Show, 49, 69, wspó dzielone, 253
komponentu, 216
130, 346 metody zdarzeniowe, 27, 65
okno
Monte Carlo, 268 dwukrotne klikni cie listy, 203
Call Stack, 42
Object.GetType, 245 klikni cie
Choose Toolbox Items, 223
OnClick, 211 Czcionka, 134
Locals, 40
OnValueChanged, 235 Drukuj, 138
podpowiedzi, 149
OsobyTableAdapter.Fill, 313 Kolor t a, 134
Server Explorer, 304
Parallel.For, 292 Zapisz jako, 133
ustawie wydruku, 139
PerformStep, 234 zamkni cie aplikacji, 126
Watch, 40
pobieraj ca list plików, 197 Microsoft Access, 297
w asno ci, Properties
pobieraj ca opis, 394 modyfikacja metody
Window, 18, 232
PobierzZawartoscKatalogu, zdarzeniowej, 157
OLE DB, 297
200, 202 modyfikator
opakowanie, 74
podzia u d ugich linii, 142, 143 Async, 295
opcja
PostMessage, 407 ByRef, 404
Explicit, 12, 53
pozwalaj ca na wybór Friend, 25
Overrides, 25 Explicite, 212
pliku, 131
Private, 97 Infer, 12, 55
Program.Main, 263
Public, 97 Strict, 53, 212
ReadEndElement, 362
Shared, 98
ReadStartElement, 362 Show All Files, 26
WithEvents, 25, 27
ReadToEnd, 130 Startup form, 33
modyfikowanie
Refresh, 216 Strict, 12, 255
danych, 323, 355
SendMessage, 407 ustalania typu, 345
pliku XML, 379
Serialize, 366
operator
rekordu, 339
Show, 242, 249
&=, 62
monitor komunikatów, 411
ShowMessage, 70
Join, 322, 349
Single, 320
Like, 62
SubmitChanges, 338, 340, 341
czenia a cuchów &, 49
N
Thread.Abort, 273
New, 25, 73
Thread.Join, 288
narz dzie
Order By, 332
ToDouble, 99
O/R Designer, 342
przypisania =, 50
ToString, 99
uzupe niania kodu, 118
TypeOf..Is, 59
TrackBar1_ValueChanged,
nawiasy
Where, 332
27, 30
klamrowe, 298
Type.GetMethod, 250
kwadratowe, 233, 242
Kup książkę Poleć książkę
Skorowidz 419
operatory rozwi zania i projektu, 17 odczytywanie tekstu, 129
arytmetyczne, 56, 101 wykonywalne, 239 Otwórz& , 131
ustawienia.xml, 357, 364, 368
dzielenia, 55 Podgl d wydruku, 141
pobieranie danych, 353
konwersji, 104 potwierdzenie zamkni cia, 127
pobieranie danych z tabeli, 338
logiczne i bitowe, 58 Ustawienia strony& , 136, 140
podgl d wydruku, 140, 141
porównania, 57, 103 zamkni cie okna, 127
podgl danie warto ci
VB, 56 Zapisz jako..., 132
zmiennych, 40
opis biblioteki, 222 projekt
podkatalog System32, 153
osobny w tek, 270 aplikacji konsolowej, 257
podklucze, 389
ostrze enie, 42 bazy danych, 326
podmiana pliku .dll, 243
biblioteki DLL, 240
podniesienie flagi, 307
biblioteki kontrolki, 219
P
podokno
typu Windows Forms
Properties, 19, 127
Application, 163
Parallel Extensions, 267
Solution Explorer, 32
AdoNet_SqlServer, 299
Parallel LINQ, 267
Toolbox, 19
DragAndDrop, 170
pasek post pu, 233
podprogram, subroutine, 66
DywanGraficzny, 156
pe na kompilacja, 335
podzespo y, assembly, 252
Ekran powitalny, 145
p tla, 78
podzia linii, 143
elektroniczna kuku ka, 145
Do..Loop While, 91
pola prywatne, 97, 196
FileListBoxDemo, 194
For, 79, 186
pole, 95
ikiTekstowe, 225
For Each, 79, 180
pole typu string, 263
Kolorowy pasek post pu, 228
For zrównoleglona, 291
polecenie
Kolory, 29
foreach, 88
Add Watch, 41
Mandelbrot, 163
Parallel.For, 267
AddHandler, 70
Procesy, 166
platforma .NET, 47, 381, 399
anonim.GetType().FullName,
prosty edytor, 119
platforma aplikacji, application
118
TypyPlikow, 391
framework, 33
Application.Exit(), 127
projektowanie interfejsu, 120
plik
Close, 126, 127
ikona okna, 121
AdresyDataSet.xsd, 303
Delete, 299
menu g ówne, 124
App.config, 153, 154
Insert, 299
nazwa okna, 121
Application.Designer.vb, 26
Select, 298
pasek stanu, 123
Application.myapp, 26
tworz ce instancj klasy, 130
ustawienia, 122
AssemblyInfo.vb, 221
po o enie okna, 387
projektowanie nowego typu, 95
Class1.vb, 242
potwierdzenie zamkni cia
prywatne pola klasy, 24
FileListBox.dll, 224
aplikacji, 127
przechowywanie
FileListBox.vb, 196, 207 pó ne wi zanie, 255
tekstu, 129
Form1.Designer.vb, 21 prezentacja katalogu, 199
wyj tków, 43, 45, 80
Form1.resx, 21 prezentowanie danych, 346
przeci ganie elementów, 171, 228
Form1.vb, 17, 209 priorytet w tku, 276
przeci gnij i upu , 169
Kolor.exe, 28 procedura sk adowana, 353 356
przeci anie metody, overload, 67
Settings.Designer.vb, 26 proces, 166, 275
przegl darka
Telefony.dbml, 342 profil u ytkownika, 264
plików tekstowych, 224, 226
user.config, 156 program Reflection, 58
zespo ów, 252
pliki programowanie
przekazywanie argumentów
.accdb, 326 asynchroniczne, 267, 294
przez referencje, 69
.dll, 239 obiektowe, 24
przez warto ci, 69
.exe, 48, 239 wizualne, 16, 26
przekazywanie parametru, 283
.mdb, 326 wspó bie ne, 47
przekroczenie zakresu, 37
.mdf, 326 zdarzeniowe, 126
przenoszenie
.sdf, 326 programowanie polece , 126
danych do pliku XML, 376,
*.Designer.vb, 26 Czcionka, 134
377
d wi kowe, 151 Drukuj& , 139, 144
elementu, 174 177
konfiguracyjne, 17 Kolor t a, 134
formy, 188
projektu, 17, 21 menu Edycja, 134
Kup książkę Poleć książkę
420 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
przenoszenie rzutowanie warto ci, 54 strongly typed, 336, 344
okna, 188 rzutowanie zaw aj ce, struktura, 72, 95
plików, 181 narrowing, 53 Color, 29
wielu elementów, 179
Nullable(Of Integer), 74
przepe nienie, 45
Okno, 366
S
przerywanie p tli, 293
System.Int32, 50
przestrze nazw
SystemColor, 29
schowek, 134
System. Threading, 271
typu anonimowego, 118
sekcja
System.Collections, 85
Ulamek, 96
Case Else, 77
System.Collections.Generics,
zapytania LINQ, 319
Catch, 80
90
strumie
Finally, 81
System.ComponentModel, 205
b dów, 260
Try, 44, 80
System.Data.Linq, 336
Console.Error, 260
serializacja do pliku XML, 367
System.Data.Linq.Mapping,
StringReader, 138
siatka DataGridView, 305
336
symbol preprocesora DEBUG, 82
sk adowane zapytanie, 355
System.Drawing, 366
synchroniczne wykonywanie
skojarzenia plików, 389
System.Media, 145
kodu, 294
s owniki, 85, 92
System.Messaging, 407
synchronizacja w tków, 289
s owo kluczowe
System.Threading.Tasks, 292
szablon
ALTER, 353
System.Windows.Forms,
biblioteki Class Library, 224
AS, 353
22, 25
biblioteki kontrolek, 220
ByRef, 69
przezroczysto , 183, 186
Console Application, 258
Case, 77
przypisywanie metody
Class, 72, 96
do zdarze , 29
CREATE, 353
pseudonimy, 92
Delegate, 70
pude kowanie, boxing, 59, 75
Event, 70 cie ka
pula w tków, 285, 286
Function, 68 do katalogu, 205, 385
punkt wej cia, entry point, 257
Get, 242 do plików, 133, 199
pusta forma, 17
Handles, 27 ledzenie
pusta referencja, 74
Inherits, 22 aplikacji, 278
Me, 26, 31 wykonywania programu, 37
R
Nothing, 74, 86 zmian w katalogu, 217
referencja, 25
null, 74 rodowisko Visual Studio, 15
rejestr, 391
Overrides, 99
rejestr systemowy, 383
Partial, 22
T
relacja rodzic dziecko, 352
RaiseEvent, 212
relacje, Associations, 351
REM, 49
tablica znaków, 406
rozpoznawanie typów, 58, 239
Resources, 26
tablice, 84, 85
rozszerzenia plików, 393
Return, 68
deklaracja, 85
rozszerzenie
Step, 233
gromadzenie referencji, 87
AsEnumerable, 332
Structure, 72, 96
jednowymiarowe, 87
CopyToDataTable, 330
Sub, 66
rozmiar, 85
String, 114
Try, 79
usuwanie, 86
UsunApostrof, 115
With, 87, 101, 116
wielowymiarowe, 87
z delegacj , 115
sortowanie, 89, 106, 111, 312, 332
zawarto , 86
rozwi zanie, solution, 17
splash screen, 145
technologia
ró nica mi dzy
sprawdzanie danych, 314
LINQ, 47, 315
#If a If, 82
SQL Server, 297
PLINQ, 267
strukturami i klasami, 73
sta a DEBUG, 82
testowanie
rysowanie
sta e liczbowe, 52
funkcji WinAPI, 409
dywanu, 159
sta e statyczne, 97
metody zdarzeniowej, 27
paska post pu, 233
stan po czenia, 304
operatorów arytmetycznych,
zbioru Mandelbrota, 160
sterta, 73
102
stos, stack, 42, 73, 92
Kup książkę Poleć książkę
Skorowidz 421
par mieszanych, 114 wyliczeniowe, 63, 264, 402 wielko liter, 24, 207
zdarze , 214 zdefiniowane automatycznie, wielow tkowo , 268
wizytówka, 147
struktury, 98 329
w asno ci
timer, 149, 152
komponentów, 30
TPL, Task Parallel Library, 267
U
kontrolki ColorProgressBar,
Transact SQL, 298
230
transformacja klasy w struktur ,
uchwyt okna, 408
w asno ci pola, 205
97
ukrywanie paska stanu, 128
w asno , 95
tryb
upuszczanie elementu, 173
Anchor, 20
debugowania, 38
uruchamianie metod
BackColor, 31
edycji, 39
niewspó dzielonych, 254
BalloonTipTitle, 150
pojedynczego w tku, 33
z biblioteki, 253
Checked, 128
tworzenie
uruchomione procesy, 166
e.KeyChar, 32
automatyczne interfejsu
ustawienia
Filter, 131, 132
u ytkownika, 347
aplikacji, application settings,
Filtr, 207
biblioteki DLL, 240
153, 388
Interval, 151
dodatkowego w tku, 145
drukowania, 140
Licznik, 101
formularzy, 309
kompilatora, 56
Lines, 130
interfejsu, 19
usuwanie klucza, 388
Location, 25
klasy reprezentuj cej dane, 343
usypianie w tku, 272
Me.Handle, 410
komponentu, 194
u ycie przestrzeni nazw, 262
Mianownik, 101
kopii zapasowej, 371
NotifyFilter, 219
metody zdarzeniowej, 126
V
Path, 219
obiektów, 373
Parent, 25
plików XML, 361
Visual Basic, 48
cie kaKatalogu, 206
pliku bazy danych, 300
Visual Basic 2010 Express, 15
TabIndex, 25
pliku XML, 371
Visual Studio 2010 Ultimate, 15
tylko do odczytu, 208
projektu aplikacji, 16, 120
Visible, 25, 128
przycisków, 87
W
wnioskowanie typów kolekcji, 55
puli w tków, 286
wolne miejsce na dysku, 404
tabeli w SQL Server, 336
warto ci domy lne pól, 109
WPF, Windows Presentation
w tku, 271
warto ci zmiennych, 40
Foundation, 12, 119
typ
warto , value, 92
wybór
DataRow, 329
w tek, thread, 267
czcionki, 134
Integer, 41
dzia anie w tle, 275
kontrolek, 223
Lazy, 65
ko czenie pracy, 280
pliku, 131
List, 129
przerywanie dzia ania, 273
wyciek pami ci, 73
Long, 41
przesy anie danych, 283
wyj tek
String, 61, 129 sygnalizowanie
NullReferenceException, 87
StringBuilder, 61 zako czenia, 288
System.ArgumentOutOfRang
System.Int64, 404 synchronizowanie, 282, 289
eException, 91
T, 110 usypianie, 272
wyj tki, 42, 79, 130
wstrzymywanie, 274
Ulamek, 105
wyj tki typu Exception, 80
wznawianie, 274
ULong, 42
wyra enia lambda, 71, 116
zmienianie priorytetu, 276
Variant, 12
wy wietlenie komunikatu, 242
wczytywanie
typy
wywo anie
biblioteki do pami ci, 246
anonimowe, 117, 333
funkcji z biblioteki DLL, 244
danych, 369
liczbowe, 89
metody, 66
obrazu z pliku, 185
ogólne, generic types, 107
metody zdarzeniowej, 31
pliku do kontrolki, 227
parametryczne, 107
wyzwalacz, trigger, 235
pliku tekstowego, 225
proste, 50
wzorce a cuchów, 63
wi zanie zdarze , 210
referencyjne, 25, 72, 95
widok projektowania, 21, 148
warto ciowe, 72, 95
widok projektowania formy, 154
Kup książkę Poleć książkę
422 Visual Basic .NET w praktyce. B yskawiczne tworzenie aplikacji
zdarzenia klasy Form, 412 zmiana Class na Structure, 96
X
zdarzenie zmiana przestrzeni nazw
XML, Extensible Markup
Click, 172, 209, 403 biblioteki, 243
Language, 357
ComboBox1.SelectedIndexC zmienna rodowiskowa PATH,
hanged, 314 153
Z
domy lne komponentu, 126 zmienne
DoubleClick, 203 referencyjne, 72
zablokowanie programu, 282
DragOver, 173 rodowiskowe, 264
zak adka Form1.vb [Design], 17
DwukrotneKliknieciePliku, warto ciowe, 73
zamykanie aplikacji, 187
214 znak
zapis
Form.MouseDown, 116 |, 132
do pliku, 159
FormClose, 127
*, 353
do pliku XML, 359
FormClosing, 127
Backspace, 61
zapisywanie
MouseClick, 172
Escape, 61
tekstu, 132
MouseDown, 172, 227
kontynuacji, 49
ustawie , 155
PagePrint, 139
ko ca linii, 61
zapytania LINQ, 315, 378
Paint, 156, 185
nowej linii, 130
zbiory
PrintPage, 137
tabulacji, 61
kontrolek, Toolbox, 17
SelectedIndexChanged,
projektów, 17 znaki ASCII, 32
210, 396
zbiór znikanie okna, 186
ValueChanged, 26, 29, 235
Julii, 165
zwracanie warto ci, 68, 403
ZmianaKatalogu, 212
Mandelbrota, 160, 165
Kup książkę Poleć książkę
Wyszukiwarka
Podobne podstrony:
Visual C 2005 Express Edition Tworzenie aplikacji dla WindowsC Tworzenie aplikacji graficznych w NET 30Tworzenie aplikacji konsolowej w Microsoft Visual CVisual Basic NET Praktyczny kurstworzenie aplikacji w jezyku java na platforme androidTworzenie aplikacji okienkowych (programowanie)PHP i Oracle Tworzenie aplikacji webowych od przetwarzania danych po AjaksaFacebook tworzenie aplikacji zaproszenietworzenie aplikacji na?cebookPHP i MySQL Tworzenie aplikacji WWW phmsapTworzenie aplikacji okienkowych (programowanie)(1)Visual?sic NET cwiczenia cvbnetFacebook tworzenie aplikacji zezwolenia i korzystanie z APIwięcej podobnych podstron