Visual C# .NET – przykłady aplikacji

Witam.
Nareszcie święta, teraz będę mógł poświęcić więcej czasu na to co lubię, czyli programowanie. Jako, że ostatnio czytałem trochę o C#, postanowiłem napisać artykuł, w którym przedstawię i opiszę kilka przykładowych aplikacji (dokładnie: notatnik i kalkulator). Jeżeli chcesz czytać dalej, dobrze jest znać przynajmniej podstawy C#. Jeżeli nie znasz wogóle tego języka zapoznaj się z zawartością tego linku:
Visual C# .NET – jak zacząć?

Następną potrzebną rzeczą oprócz znajomości samego języka jest środowisko programistyczne. Polecam Microsoft Visual C# 2005 Express Edition. W poznaniu środowiska pomoże Ci poniższy film. Przedstawiony jest tam cały proces od pobrania środowiska do tworzenia w nim projektów. Nawet Ci co nie znają angielskiego obserwując czynności tam wykonywane mogą naprawdę wiele zrozumieć.

I. Prosty edytor tekstu
Pierwszą aplikacją jaką pragnę Ci zaprezentować jest prosty edytor tekstu z funkcjami: otwórz plik, zapisz, drukuj, wytnij, wklej itp.

Pełne źródło programu: Bardzo prosty edytor tekstu w C# (source)
Wersja skompilowana: Bardzo prosty edytor tekstu w C# (bin)

Kod w postaci HTML (pokolorowany): Kliknij tutaj

Otwórz powyższy link. Może nie będzie najwygodniej, jednak gdybym chciał ten kod tutaj wkleić możesz się domyślić jak ten wpis by wyglądał ;)

1. Zmienna CurrentFileName
Na samym początku mamy deklarację zmiennej CurrentFileName typu string. Następnie w metodzie public Form1() po InitializeComponent(); mamy przypisanie zmiennej CurrentFileName wartości nothing. Przyjąłem, że ta zmienna będzie trzymała informację czy plik, który jest edytowany w naszym programie został już zapisany. Jeżeli został zapisany zmienna będzie miała w sobie ścieżkę do tego pliku, jeżeli nie został jeszcze zapisany zmienna będzie przechowywała wartość nothing.

2. Nowy dokument
Przyglądnijmy się metodzie nowyToolStripMenuItem_Click. Jest ona wywoływana, gdy użytkownik kliknie w górnym menu: Plik->Nowy. Na początku deklaracja zmiennej MsgBoxText, a następnie przypisanie jej wartości. W zmiennej będzie treść komunikatu. Następnie instrukcją warunkową if sprawdzamy, czy kontrolka richTextBox1 została zmodyfikowana (wpisano coś do niej, usunięto itp.). Jeżeli tak to wyświetla się komunikat z pytaniem czy zapisać zmiany w dokumencie, jeżeli użytkownik kliknie na przycisk Tak, sprawdzamy czy dokument nie był wcześniej zapisywany (wtedy wywołamy metodę zapiszJakoToolStripMenuItem_Click(sender, e);, gdzie pojawi się okienko do wyboru gdzie ma być plik zapisany), natomiast gdy plik został już wcześniej zapisany to jak pisałem na początku w zmiennej CurrentFileName będzie ścieżka do tego pliku. Wtedy po prostu nadpisujemy plik bez wyświetlania żadnych okienek. Poniżej widać słowo kluczowe else, tyczy się ono instrukcji if, w której sprawdzaliśmy, czy kontrolka richTextBox1 została zmodyfikowana. Kod po else wykona się gdy nie została ona zmodyfikowana. Widzimy tam metodę, która po prostu czyści zawartość kontrolki richTextBox1.

3. Zawijanie wierszy
Odnajdź w kodzie metodę zawijanieWierszyToolStripMenuItem_Click. W pierwszej linijce widzimy, jak wartości WordWrap kontrolki richTextBox1 przypisywana jest zanegowana wartość WordWrap. Coś jak a = nieprawda, że a, czyli jeżeli a miało wartość true (prawda) to przypisywana jest wartość false (fałsz). Właściwość WordWrap odpowiada za to, czy w kontrolce richTextBox tekst ma być zawijany czy nie. Poniżej analogiczna systuacja, tylko, że z inną kontrolką i właściwością. Następne linijki, sprawdzamy instrukcją warunkową if, czy właściwość Checked kontrolki zawijanieWierszyToolStripMenuItem ma wartość true (prawda) i odpowiednio zmieniamy ustawienia suwaków (ScrollBars). Poniżej mamy kilka metod typu Undo();, Cut();, Copy(); czy Paste(); opisywać ich nie potrzeba, każdy powinien się pomyślić co one robią.

4. Czcionka
Znajdź metodę czcionkaToolStripMenuItem_Click. Najpierw widzimy, że jest wyświetlane okno wyboru czcionki, następnie wybrana czcionka jest ustawiana jako czcionka w komponencie richTextBox1.

5. Zapisz jako…
Przyjżyjmy się teraz metodzie zapiszJakoToolStripMenuItem_Click. Na początku wywołanie okna zapisywania pliku i instrukcją warunkową if sprawdzenie zwróconej wartości przez okno dialogowe. Jeżeli zwrócona wartość to OK wtedy zapisujemy plik. Poniżej widzimy przypisanie do zmiennej CurrentFileName ścieżki zapisanego pliku. Rolę tej zmiennej opisałem w punkcie pierwszym.

6. Otwórz
Teraz odnajdź metodę otwórzToolStripMenuItem_Click. Służy ona do otwierania pliku i wczytywania jego zawartości do komponentu richTextBox1. Działanie analogiczne jak w Zapisz jako…, tylko zamiast zapisywać, otwieramy plik.

7. Zapisz
Bardzo prosta metoda zapiszToolStripMenuItem_Click. Sprawdzamy czy plik już był wcześniej zapisywany (poprzez sprawdzenia wartości zmiennej CurrentFileName), jeżeli był to nadpisujemy tamten plik, jeżeli nie był, wywołujemy metodę zapiszJakoToolStripMenuItem_Click.

8. Godzina/data
Metoda godzinadataToolStripMenuItem_Click wstawia aktualną godzinę i datę do dokumentu. Deklarujemy zmienną CurrTime i przypisujemy jej wartość aktualnej daty i godziny (DateTime.Now). Następnie wstawiamy tą datę wcześniej ją przekształcając do odpowiedniego formatu za pomocą String.Format(…);.
Więcej o formatowaniu czasu i daty:
Formatting Date and Time Values In .NET by Bradley L. Jones

9. Drukuj
Zajmiemy się teraz metodami drukujToolStripMenuItem_Click i printDocument1_PrintPage. Przed nimi widzisz dwie zadeklarowane zmienne. Pierwsza (fileToPrint) będzie zawierała zawartość pliku do wydrukowania, a druga (printFont) czcionkę jaką tekst ma być wydrukowany. Poniżej w metodzie drukujToolStripMenuItem_Click do zmiennej printPath przypisujemy ścieżkę do katalogu systemowego. Następnie zapisujemy nasz dokument w tym katalogu w pliku o nazwie temp.txt. Teraz zmiennej fileToPrint przypisujemy zawartość naszego pliku temp.txt za pomocą System.IO.StreamReader();. Poniżej zmiennej printFont przypisujemy czcionkę z komponentu richTextBox1. Następnie drukujemy plik (printDocument1.Print();) i zamykamy zmienną fileToPrint z treścią naszego dokumentu (fileToPrint.Close();). Na końcu usuwamy plik temp.txt za pomocą File.Delete(…);. Wszystko było proste, tylko zapomnieliśmy o metodzie printDocument1_PrintPage, która odpowiada za drukowanie dokumentu. Na początku widzimy zadeklarowane potrzebne zmienne do drukowania, następnie za pomocą pętli while ze zmiennej fileToPrint czytane są poszczególne wersy, jeden po drugim. Czynność jest powtarzana zanim zmienna count nie stanie się większa lub równa zmiennej linesPerPage. Wtedy program dowiaduje się, że ma doczynienia z więcej niż jedną stroną.

II. Kalkulator
Następna aplikacja to kalkulator z funkcją dodawania, odejmowania, mnożenia, dzielenia, reszty z dzielenia i kwadratu.

Pełne źródło programu: Kalkulator w C# (source)
Wersja skompilowana: Kalkulator w C# (bin)

Kod w postaci HTML (pokolorowany): Kliknij tutaj

Poniżej opiszę najważniejsze fragmenty kodu.


//dodawanie

if (radioButton1.Checked)

{

int a, b, wynik;   

if (int.TryParse(textBox1.Text, out a) == false |   

    int.TryParse(textBox2.Text, out b) == false)

MessageBox.Show("Wprowadzono nieprawidłową wartość.", "Info", 0);   

else

{

int.TryParse(textBox2.Text, out b);   

wynik = a + b;   

textBox3.Text = wynik.ToString();   

}

}

Powyższy kod dodaje wartości wpisane w textBox1.Text i textBox2.Text. Na początku mamy instrukcję warunkową if. Sprawdza ona, czy zaznaczona jest kontrolka radioButton1. Jeżeli jest zaznaczona aplikacja wie, że będzie zaraz dodawała. Niżej jest deklaracja zmiennych a, b i wynik typu int. Poniżej następna instrukcja warunkowa. Sprawdza ona, czy w pola na pewno wpisano poprawne liczby całkowite (bo na takich program operuje). Do konwersji typu string (napis) na int (liczbę całkowitą) użyliśmy metody TryParse. Jej pierwszy argument to wartość, która ma być zamieniona na typ int, a drugi to zmienna, która będzie miała wartość 0 gdy konwersja się nie powiedzie lub skonwertowaną wartość gdy się powiedzie. Następnie mamy znak | (tzw. lub), a po nim analogiczna konwersja drugiej wartości. Gdy metoda TryParse zwróci wartość false (konwersja nie powiedzie się) wyświetla się komunikat o wprowadzeniu niepoprawnych danych. Jeżeli się powiedzie (else) to wartość zmiennej wynik przyjmuje wartość sumy wartości zmiennych a i b. Następnie do właściwości Text kontrolki textBox3 przypisywana jest wartość zmiennej wynik skonwertowana na string metodą ToString(). Podobnie jest z innymi działaniami. Myślę, że nie muszę ich już opisywać. Można wspomnieć jeszcze, że w kodzie podnoszącym do potęgi drugiej (do kwadratu), w instrukcji warunkowej metoda TryParse jest użyta tylko do kontrolki textBox1, gdyż druga staje się nieaktywna w poniższym kodzie:


private void radioButton6_CheckedChanged(object sender,   

EventArgs e)

{

textBox2.Enabled = !textBox2.Enabled;   

}

To już wszystko. Aplikacje nie są na wysokim poziomie i nie jest ich dużo (tylko dwie ;) ). Myślę jednak, że pomogą początkującemu w nauce tego pięknego języka programowania jakim jest C#. Jeżeli znalazłeś jakiś błąd w tekście czy w aplikacjach napisz to w komentarzach lub bezpośrednio do mnie.

Dziękuję i pozdrawiam, Mo4x.

About these ads

4 Responses to Visual C# .NET – przykłady aplikacji

  1. shw says:

    prooosze – C#, Visual C#, ale nie Visual C# .NET…

  2. mo4x says:

    Dlaczego nie? ;)

  3. shw says:

    jezyk nazywa sie C#, narzedzie Visual C# – Visual C# .NET to juz zdecydowanie za duzo :)
    w przeciwienstwie do VB.NET, gdzie .NET daje do zrozumienia, ze jest to .NET’owa wersja jezyka Visual Basic.
    wiem – czepiam sie, ale to po prostu glupio wyglada, brzmi i jest niepotrzebne [jako ze nie ma innego C#, jak .NET'owy].
    to tak jakby pisac C# sharp, albo C++ plus plus :P

  4. mo4x says:

    Na witrynie:
    http://www.microsoft.com/poland/developer/jak_zaczac/gscsharp.mspx
    tak napisali, więc też użyłem tej nazwy :)

    Nazewnictwo takie jest poprawne. Możesz pisać VC#, a możesz i napisać Microsoft Visual C# .NET.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: