Witajcie !
Po pozytywnie odebranej czesci pierwszej nadchodzi wiec kolejna czesc poradnika. Tym razem zajmiemy sie troszeczke ulepszona wersja naszej aplikacji do wysylania.
Jako , ze nie bedziemy pisac aplikacji od zera dlatego konieczne jest przejscie przez wczesniejsza czesc serii znajdujaca sie tu
http://forum.atnel.pl/topic8960.html#p100758 . Powod jest prosty ... rozszerzamy wczesniej nabyta wiedze o nowe umiejetnosci
Nasza aplikacja na chwile obecna wyglada jakby przeszla "diete cud"
i calkowicie pozbawiona jest naprawde pozytecznych kontrolek.
Obmyslamy co nam sie przydaWiec musimy sie zastanawic co przydaloby sie w naszej aplikacji ? Hmmm tak na szybko mozemy wymyslic kilka rzeczy :
- Wprowadzanie danych dotyczacych adresu urzadzenia docelowego
- Wprowadzanie danych dotyczacych adresu naszego komputera
- Wprowadzanie danych dotyczacych portu ktorego uzyje nasz komputer
- Wprowadzanie danych dotyczacych portu urzadzenia docelowego
Oczywiscie , to tak naprawde czubek gory ladowej , ktora mozecie poruszyc swoja wyobraznia. Aby nawykow programowania stalo sie zadosc ... bedziemy edytowac nazwy tych kontrolek tak by ich uzywanie bylo przyjemne.
Dodajemy nowe kontrolki do interfejsu naszej aplikacjiZaczynamy od zmiany wyswietlanego tekstu na naszym guziku. W tym celu z ekranu , w ktorym widzimy design naszej aplikacji klikamy
prawym przyciskiem myszy na guzik i wybieramy
wlasciwosci. W oknie , ktore sie pokaze zmieniamy dla tego obiektu
wlasciowosc typu TEXT. Ja ustawilem sobie na "Wyslij ramke". W tym momencie
nie zmieniamy NAZWY kontrolki!
Nastepnie korzystajac z okazji , ze zmieniamy juz uklad graficzny przeciagamy na nasza aplikacje 4 nowe kontrolki typu
TextBoxW tym momencie moj design wyglada w nastepujacy sposob (oczywiscie Ty mogles sobie je porozkladac inaczej
)
Jak sami widzicie wyglada lepiej
No ale moze sie pojawic pytanie co jest co ?!
Dlatego dodamy sobie jako cwiczenie wg wlasnego uznania kontrolke o nazwie
Label Edytujac w/w kontrolke wlasciwosci i zmieniajac atrybut
TEXT sprawimy , ze kontrolka bedzie opisem pasujacym do naszych wymagan (oczywiscie jest to opcjonalne cwiczenie i dla funkcjonalnosci programu mozesz je pominac
chociaz zeby sie nie pomylic przy wpisywaniu danych - moja rada ... dodaj je
)
No i chwila wysilku i klikania .... no i nasza aplikacja juz troszeczke lepiej zaczyna wygladac.
Nazewnictwo kontrolekNo i teraz nadszedl czas zeby te nasze nowe kontrolki w koncu jakos nazwac. Ja stosuje kilka podejsc. Przede wszystkim uzywam prefix'ow dla swoich kontrolek. Czyli :
- Jesli uzywam kontrolki typu TextBox to nazwa mojej kontrolki bylaby tbJakasSobieNazwa1
- Jesli uzywam kontrolki typu Button to nazwa mojej kontrolki bylaby btnJakasSobieNazwa
Oczywiscie powyzsze to tylko sugestia i mozecie znalezc w internecie wiele informacji lub najlepiej - uzyjcie wlasnego pomyslu z ktorym najlepiej i nalatwiej bedzie Wam pracowac.
Wiec wybieramy sobie jeden z naszych nowych TextBox'ow i klikamy na niego prawym. Wybieramy wlasciwosci. Ja wybralem sobie nowa nazwe jako
tb_IP_Komputera a to dlatego , ze bedzie mi pozniej latwiej korzystac ze sprytnego podpowiadania w Visual Studio
Aby kontynuowac nalezy zmienic odpowiednio reszte kontrolek - najlepiej tak aby opis odpowiadal kontrolce
Opis moich nazw kontrolek to odpowiednio :
- tb_IP_Komputera
- tb_PORT_Komputera
- tb_PORT_Docelowy
- tb_IP_Docelowy
Jako , ze poradnik pisany jest AD HOC
czyli na goraco - dodamy dosc potrzebna do rozwoju kontrolke o ktorej po prostu mnie sie zapomnialo
Miejsce na wyslanie naszej wiadomosc. Nazwe ja dla potrzeb tego poradnika
tb_Ramkaufff no to smigamy dalej .....
Zmieniamy nasz kod zrodlowy aplikacji Po tych wszystkich przeprawach przyszedl czas na rozszerzenie naszej aplikacji o funkcjonalnosc , ktora sobie zaplanowalismy. Tak jak wspominalem wczesniej bedziemmy zmieniac kod zrodlowy stworzony w I czesci tej serii poradnikow.
Przede wszystkim zachodzi pytanie ... jak dostac sie do wlasciwosci tego co wpisze w moich kontrolkach ? A wiec kwestia wyjasnienia ... kazdy obiekt w C# moglby byc porownany do paczki kurierskiej.
To co wpisujesz w textbox mogloby byc porownane do ... powiedzmy naklejki z textem dla kuriera. Oczywiscie tych wlasciwosci jest wiecej i np niektore sa tylko do odczytu
czyli tutaj porownnanie do zafoliowanego kawalka papieru z kodem kreskowym , ktorego nie mozna zmienic
Zeby bylo zabawniej obiekty maja rozwniej metody. Czyli np w tym wypadku to co moglbys zrobic z ta paczka. Powiedzmy , ze mozesz wyczyscic caly adres i napisac go od nowa ?! Albo np otworzyc taka paczke
Zeby pokazac Ci to w kodzie omowie jedna potrzebna nam wlasciwosc i jedna metode.
- Wlasciwosc : text wpisany w kontrolke. W naszym wypadku ta poszukiwana wlasciwosc ma nazwe .Text (zwroc prosze uwage na kropke ) i poprzedzona bedzie odpowiednia zmienna. W naszym wypadku dowolna z tych ktore stworzylismy jako TextBox'y
- Metoda : oczysczenie textu wpisanego w kontrolke. W tym wypadku poszukiwana metoda nazywa sie .Clear() ( zwroc prosze uwage na kropke) i takze poprzedzona bedzie odpowiednia zmienna. W naszym wypadku dowolna z tych ktore stowrzylismy jako TextBox'y. W tym miejscu zwroc uwage , ze metody maja "()" na koncu.
Pora pozmieniac troche kod. Musimy go przeniesc w miejsce gdzie po uruchomieniu aplikacji bedziemy w stanie skonfigurowac aplikacje wg danych wpisanych w TextBox'y.
Dlatego dodamy sobie nowa kontrolke. Bedzie ona typu "BUTTON" i po przeniesieniu jej na aplikacje i skonfigurowaniu jej tekstu i nazwy - kliknij na guzik dwa razy (ta czynnosc nie powinna Ci juz sprawic klopotu wiec nie bede jej tu w szczegolach opisywal ).
Ja swoj guzik nazwe
btn_Konfiguracja_AplikacjiJesli wszystko poszlo dobrze Twoje Visual Studio powinno przeniesc Cie bezposrednio do kodu obslugi guzika , ktory dopiero co stworzony u mnie wyglada tak :
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jesli cos poszlo nie tak - nie kopiuj tej czesci kodu bo Twoj guzik nie ma dolaczonej obslugi zdarzenia nacisniecia go i ta czynnosc nie pomoze :O Wroc do czesci I poradnika i zobacz jak dodajemy guzik i jego metode!
Nastepnie zmieniamy nasze zmienne globalne. Teraz powinny one wygladac w ten sposob :
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
[/syntax]
Powod tej zmiany to dlatego , ze w naszym nowo stworzonym guziku dopiero po jego nacisnieciu bedziemy konfigurowac te zmienne.
Teraz w metodzie naszego guzika dodamy nastepujacy kod :
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ze wzgledu , ze jest tutaj troche zmian zasluguje on na odrobine wyjasnienia. Aby dalej to wyjasnic rzuc okiem na infojak tworzymy typ naszej zmiennej typu IPEndPoint
http://msdn.microsoft.com/en-us/library/k17zbw22(v=vs.110).aspxjęzyk csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pierwszy z parametrow jaki jest w tym wypadku przyjmowany jest typu IPAddress. Wiec wykorzystujemy jedna z metod do automatycznego parsowania wartosci string w poszukiwaniu odpowiedniego adresu. Tutaj wprowadzamy w zycie nasze zmiany i te parsowanie jako zrodlo wykorzysta nasz TextBox podany jako parametr
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jako , ze drugi z parametrow musi byc typu integer dokonalismy konwersji na INT uzywajac
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W dalszej czesci kodu dodanego przez nas powiedzielismy naszemu programowi , ze IP pod ktore sie podlaczamy ma byc pobrane z tekstowej wlasciwosci pola
tb_IP_Komputera a dobralismy sie do niego dzieki wlasciwosci o nazwie
.Text (jak widac w kodzie wyzej) oraz dokonoalismy konwersji portu ze string na INT
Zmiana metody do wysylaniaNo i teraz nadeszla pora na najprzyjemniejsze ... czyli modyfikacja metody do wysylania. Podejrzewam ,ze jesli doszedles juz tutaj w zakresie czytania tego poradnika
to nie powinno Ci to sprawic problemu
Jednak by "sprawiedlowosci stalo sie zadosc" dokonczymy to razem
Cala zmiana bedzie powalajaco wielkaaaaaaaaaaaaaaaaaaaaaa
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
....................... i juz
w metodzie do wysylania nie powinno byc nic wiecej wiec to co bedzie wysylane tak naprawde bedzie pobierane z naszego TextBox'a i to wsio
Fajnie - bo udalo nam sie wykorzystac jedna z wbudowanych metod aby nie musiec sie meczyc przy wysylaniu roznych ramek!
Owoc naszej pracy w akcjiSkoro doszlismy tak daleko zobaczmy jak to dziala. W ponizszych zrzutach ekranu aplikacja konsolowa bedzie sluzyla za odbiornik
wiec bedzie wyswietlac to co wyslalem
Pamietaj tylko o jednym! Zanim sprobujesz cos wyslac ... kliknij swoj guzik do obslugi konfiguracji
w przeciwnym wypadku - ZONKUS MAXIMUS
Podsumowanie czesci IIMam nadzieje ,ze nie zamieszalem za bardzo i ze wszystkim ktorzy podejma sie proby wysylania osiagna sukces. Powodzenia w realizacji!
Raf