Platforma.NET laboratorium 1 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET podstawowe elementy języka Poniżej przedstawiono podstawowe instrukcje sterujące wykonywaniem programu, dostępne w składni języka Visual Basic.NET Wykonanie warunkowe If End If Pozwala na sterowanie przepływem wykonywania programu na podstawie wartości logicznej obliczonej z warunku condition. If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If Jeśli warunek jest spełniony, wykonywane jest kod statements. Jeśli nie, to dla powyższej składni sprawdzony będzie warunek elseifcondition. W przypadku jego spełnienia wykonany zostanie kod elseifstatements. Jeśli jednak warunek nie był spełniony, to zostanie wykonany kod elsestatements. Poniżej znajduje się uproszczona i najczęściej spotykana wersja konstrukcji if..end if oraz if..else..end if: If condition [ Then ] [ statements ] End If If condition [ Then ] [ statements ] [ Else [ elsestatements ] ] End If Przykład (z MSDN): Dim number, digits As Integer Dim mystring As String number = 53 If number < 10 Then digits = 1 ElseIf number < 100 Then digits = 2 Else 1
digits = 3 End If If digits = 1 Then mystring = "One" Else mystring = "More than one" Pętla For Next Pozwala na wykonywanie kodu dowolną ilość razy. Dostępne są również konstrukcje While End oraz Do Loop. For counter [ As datatype ] = start To end [ Step step ]... kod... [ Exit For ]... kod... Next [ counter ] Counter to nazwa zmiennej przyjmującej kolejne wartości, od start aż do stop włącznie z ewentualnym krokiem step. Jeśli krok nie jest podany, przyjmowana jest domyślnie wartość 1. W przypadku, gdy start jest mniejszy od stop, należy podać krok o wartości ujemnej (np. -1). Datatype pozwala na określenie typu iteratora, np. Integer. Exit For pozwala na natychmiastowe wyjście z pętli, niezależnie od wartości iteratora. Przykład (z MSDN): For i As Integer = 1 To 10 For j As Integer = 1 To 10 For k As Integer = 1 To 10 [ kod wykorzystujący zmienne i, j oraz k ] Next k Next j Next i Instrukcja wielowyboru Select Case Pozwala wykonać jeden z kilku bloków kodu na podstawie wartości obliczonej danego wyrażenia. Konstrukcja Select..Case upraszcza zapis instrukcji if w przypadku wielokrotnego wykorzystania instrukcji alternatywy Elseif. Select [ Case ] testexpression [ Case expressionlist [ statements ] ] [ Case Else [ elsestatements ] ] End Select Wyrażenie testexpression musi zwracać wartość w jednym z typów podstawowych (typów prymitywnych): Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, oraz UShort. Po obli- 2
czeniu wartości wyrażenia następuje skok do pierwszej etykiety Case zawierającej obliczoną wartość. Jeśli wartość testexpression jest zawarta w następnych etykietach Case, zostają one zignorowane. Jeśli żadna z etykiet Case nie zawiera oczekiwanej wartości, następuje skok do kodu etykiety Case Else. Przykład (z MSDN): Dim number As Integer = 8 Select Case number Case 1 To 5 Debug.WriteLine("Between 1 and 5, inclusive") Case 6, 7, 8 Debug.WriteLine("Between 6 and 8, inclusive") Case 9 To 10 Debug.WriteLine("Equal to 9 or 10") Case Else Debug.WriteLine("Not between 1 and 10, inclusive") End Select 3
Tworzenie podstawowej aplikacji okienkowej Tworzenie nowego projektu w języku Visual Basic 1.NET odbywa się poprzez wywołanie funkcji File -> New -> Project w środowisku Visual studio: Rysunek 1 Tworzenie nowego projektu Po wybraniu pojawi się okno przedstawione na rysunku 2: Rysunek 2 Tworzenie nowego projektu - wybór typu aplikacji Dwa najważniejsze typy tworzonych aplikacji to Windows Form Application (typowa aplikacja okienkowa systemu Windows) oraz Console Application (aplikacja konsolowa domyślnie nie posiada elementów interfejsu graficznego GUI). 1 Treść laboratorium przygotowana została w środowisku Visual 2008 Professional 4
Po wybraniu typu aplikacji należy wybrać docelową (wymaganą) wersję platformy.net (domyślnie 3.5) oraz podać nazwę projektu (name), ścieżkę, w której projekt ma zostać utworzony (location), oraz nazwę grupy projektów (solution name). Po zatwierdzeniu ustawień, kreator aplikacji utworzy domyślną, pustą aplikację VB.NET z jedną formą główną: Rysunek 3 Pusta aplikacja Pustą aplikację można uruchomić poprzez kliknięcie na przycisk zielonej strzałki: Rysunek 4 Uruchomienie programu w trybie Debug Wygenerowany projekt posiada dwa tryby kompilacji: wersję uruchomieniową (Debug) oraz do publikacji (Release). W trakcie uruchamiania i testowania programu należy stosować kompilację Debug, w trakcie której tworzony jest komplet informacji koniecznych do poprawnego działania programu uruchomieniowego (Debugger) oraz wyłączone są wszelkie funkcji optymalizacji kodu wynikowe. Zatem aplikacja taka nadaje się wyłącznie do pracy programisty testera. Kompilacja Release usuwa informacje debuggera oraz pozwala na optymalizację kodu wynikowego, co ma znaczący wpływ na szybkość wykonywania kodu oraz komfort pracy z programem wynikowym. 5
Rysunek 5 Uruchomiona aplikacja Pierwsza aplikacja wyświetlanie okienka informacyjnego Celem tego ćwiczenia wykorzystanie podstawowych kontrolek Windows Forms ze względu na ich własności (Properties) jak i zdarzenia (Events). Tworzona aplikacja ma pozwalać na wprowadzenie dowolnego tekstu wielolinijkowego oraz wyświetlenie go w postaci standardowego komunikatu systemu Windows. Rysunek 6 Pierwsza aplikacja Do aktywnego formularza należy dodać trzy kontrolki (rysunek 7): etykietę (Label) pole tekstowe (Text Box) przycisk (Button) 6
Aby aplikacja pozwalała na wprowadzanie i wyświetlanie tekstów składających się z wielu linijek należy wybrać na pole tekstowe wcześniej dodane do formularze, a następnie ustawić wartość własności (rysunek 9) Multiline na True. Następnie można zwiększyć wysokość kontrolki za pomocą myszki (łapiąc za dolną krawędź) lub zmieniając jedną z wartości własności Size. Ponieważ w kodzie programu będzie konieczne odwołanie się do pola tekstowego w celu pobrania tekstu użytkownika, należy nadać stosowną nazwę temu polu. W niniejszym ćwiczeniu zaproponowano nazwę tekst1. Należy ją wpisać we własności Name. Rysunek 7 Podstawowy zestaw kontrolek Windows Forms Rysunek 8 Lista niektórych zdarzeń dostępnych dla kontrolki Button Rysunek 9 Lista własności kontrolki osadzonej w formularzu (Label) Po zaprojektowaniu i przygotowaniu formularza należy napisać kod, który będzie pobierał tekst z pola tekst1 a następnie wyświetlał go w standardowym oknie informacyjnym (MessageBox). Kod ten powinien być wywoływany po kliknięciu przycisku Wyświetl, a zatem należy utworzyć zdarzenie Click kontrolki Button. Puste zdarzenie Click można wygenerować poprzez dwukrotne kliknięcie na kontrolce lub wybranie odpowiedniego zdarzenia (rysunek 8). Poniżej zamieszczono kod zdarzenia oraz omówiono poszczególne elementy. Treść oznaczona kolorem żółtym jest automatycznie generowana przez środowisko VB.NET. Private Sub przycisk_click(byval sender As System.Object, _ ByVal e As System.EventArgs) _ Handles przycisk.click Dim tresc As String tresc = Me.tekst1.Text MessageBox.Show(tresc, "Komunikat", MessageBoxButtons.OK, _ MessageBoxIcon.Information) End Sub 7
Private metoda obsługująca zdarzenie jest prywatna (nie dostępne z poziomu metod innych klas oraz klas dziedziczących). Sub/End Sub oznaczenie początku i końca ciała (definicji metody). W nawiasach okrągłych podana jest lista parametrów danej metody. W przypadku zdarzenia lista jest ustalona przez projektantów BCL (Base Class Library). przycisk_click nazwa zdarzenia/metody automatycznie wygenerowana przez środowisko VB.NET. Jest to złożenie nazwy kontrolki (przycisk) oraz nazwy zdarzenia (Click). Nazwa ta nie określa kontrolki ani typu zdarzenia. Do tego służy słowo kluczowe Handles. ByVal sender As System.Object przekazanie informacji o kontrolce, która uruchomiła zdarzenie. Dzięki temu parametrowi jeden kod może obsługiwać dane zdarzenie pochodzące od wielu kontrolek. ByVal e As System.EventArgs przekazanie parametrów zdarzenia. Obiekty klasy EventArgs nie posiadają żadnych informacji o zdarzeniu, jednak klasą ta jest bazową dla innych, np. MouseEventArgs. _ - (dolna kreska) pozwalana podział długiej linii kodu na kilka krótszych Handles przycisk.click informacja o potencjalnym źródle zdarzenia i typie zdarzenia z tego źródła. W tym przypadku metoda przycisk_click będzie obsługiwała zdarzenie Click z kontrolki przycisk. W przypadku, gdy zdarzenie ma być wywoływane przez więcej niż jedną kontrolkę, powyższa linia zawierała by listę kontrolek i zdarzeń rozdzielonych przecinkami, np.: przycisk1.click, przycisk2.click, przyciskn.click. Dim tresc As String zadeklarowanie zmiennej tresc typu String. Ponieważ typ String znajduje się w przestrzeni nazw System, można również stosować pełną nazwę: System.String. tresc = Me.tekst1.Text przypisanie wartości własności Text kontrolki tekst1 aktualnego obiektu klasy Form1 do zmiennej tresc (operator Me). Możliwy jest również zapis tresc = tekst1.text, gdyż tekst1 jest polem lokalnym aktualnej klasy. MessageBox.Show(tresc, "Komunikat", MessageBoxButtons.OK, MessageBoxIcon.Information) wyświetlenie standardowego okienka komunikatu systemu Windows (MessageBox). MessageBox jest klasą posiadającą metodę statyczną 2 Show 3, wyświetlającą okno komunikatu. Wyświetlone okno jest modalne aplikacja pozostaje nieaktywne do momentu kliknięcia na odpowiedni przycisk okna komunikatu. Okno będzie posiadało tytuł o treści Komunikat, jeden przycisk (Ok.) oraz ikonę informacji (rysunek 6). 2 Metoda statyczna jest wywoływana na rzecz klasy a nie obiektu, jak ma to miejsce dla zwykłych (niestatecznych) metod. Innymi słowy, aby wywołać metodę statyczną, nie trzeba tworzyć obiektu danej klasy. 3 Metoda Show posiada 21 przeciążeń pozwalających na szybkie i łatwe, z punktu widzenia programisty, wyświetlenie okna komunikatu w wielu wariantach. Listę dostępnych możliwości można znaleźć w systemie MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.show(vs.90).aspx 8