• Nie Znaleziono Wyników

-Narzędzie Windows Forms-Przykładowe aplikacje •

N/A
N/A
Protected

Academic year: 2021

Share "-Narzędzie Windows Forms-Przykładowe aplikacje •"

Copied!
28
0
0

Pełen tekst

(1)

- Narzędzie Windows Forms

- Przykładowe aplikacje

(2)

Narzędzia Windows Form

Windows Form jest narzędziem do tworzenia aplikacji dla systemu Windows.

Platforma ta umożliwia tzw. błyskawiczne tworzenie aplikacji (ang. Rapid Application Development – RAD).

Środowisko Visual Studio .NET ułatwia tworzenie aplikacji windows'owych z graficznym interfejsem użytkownika (GUI).

Aby rozpocząć pracę nad nową aplikacją (rozpocząć tworzenie nowego

"projektu" lub "rozwiązania" – ang. Solution), po uruchomieniu środowiska

Visual Studio należy wybrać opcję File New Project , rys. 7.1.

(3)
(4)

Po wybraniu jako wzorca aplikacji windowsowej (Windows Form Application)

i określeniu nazwy katalogu zawierającego komplet plików aplikacji system wygeneruje automatycznie formularz startowy, nada mu domyślną nazwę Form1

i otworzy środowisko projektowania (rys.7.2).

Lewą stronę arkusza zajmuje "skrzynka narzędziowa" (Toolbox) z pogrupowanymi wg kategorii ikonkami kontrolek do umieszczania na formularzu.

Jego obraz w fazie projektowania znajduje się na środkowym polu arkusza.

Z prawej strony znajduje się Solution Explorer . Zawiera on drzewo wszystkich plików projektu. Obok system umieścił okno Properties zawierające właściwości i zdarzenia wybranej kontrolki. Jeżeli ustawienia domyślne środowiska są takie, że nie pojawiają się automatycznie te okna, to zawsze możemy je zmienić wybierając zaznaczenie

odpowiedniej pozycji w menu rozwijanym opcji View. (rys.7.3)

(5)
(6)
(7)

Wybór pozycji Code w tym menu rozwijanym otwiera arkusz edytora tekstowego zawierającego w tym stanie kod szkieletu klasy częściowej (

partial class

) definicji klasy tworzonego formularza i równocześnie klasy głównej tworzonej aplikacji

(rys.7.4).

Każda kontrolka (również klasa formularza – pochodna od klasy bazowej Form ma swój zestaw właściwości i "wyłapywanych" komunikatów o zdarzeniach. W fazie projektowania wartości wybranych właściwości można zmieniać w stosunku do domyślnych za pomocą okna Properties. Dostęp do listy zdarzeń zdefiniowanych w klasie danej kontrolki uzyskujemy po kliknięciu ikony "wysokiego napięcia" (rys. 7.5 i 7.6).

W każdej klasie kontrolki jedno ze zdarzeń pełni rolę "domyślnego". Dwukrotne

kliknięcie tej kontrolki spowoduje, że system utworzy "szkielet" metody obsługi tego zdarzenia.

Przykład przedstawiony na rysunku 7.7 przedstawia umieszczoną na formularzu kontrolkę przycisku – jest to obiekt klasy System.Windows.Forms.Button.

Po umieszczeniu go na formularzu metodą "przeciągnij i upuść" system nada mu

domyślną nazwę button1.

(8)

Rys.7.4

(9)

Rys.7.5

(10)

Rys.7.6

(11)

Rys.7.7

(12)

Zmieniamy teraz kilka właściwości formularza i przycisku (rys.7.8 i 7.9).

Po dwukrotnym kliknięciu w obszarze kontrolki btnKoniec system wygeneruje szablon metody obsługującej domyślne zdarzenie w klasie Button, wstawi go do definicji klasy i przełączy widok na kod aplikacji (rys.7.10).

Bardzo dużym ułatwieniem jest istnienie "podpowiadacza" – mechanizmu Intelisense.

(13)

Rys.7.8

(14)

Rys.7.9

(15)

Rys.7.10

(16)

Rys.7.11

(17)

Rys.7.12

(18)

Rys.7.13

(19)

Przykładowe aplikacje

Pewna aplikacja, która wyznacza wszystkie liczby pierwsze w zadanym przedziale wygląda tak jak na rys. 7.14

Rys.7.14

(20)

Kontrolka ListBox o nazwie liczbyPierwsze jest kolekcją, do której metoda poszukująca liczb pierwszych dopisuje kolejną znalezioną liczbę.

Kontrolka label4 wyświetla ilość znalezionych liczb pierwszych w zadanym przedziale.

Rys. 7.16 przedstawia kod aplikacji umieszczony przez system w pliku Form1.cs.

(21)

Rys.7.15

(22)

using System;

using System.Windows.Forms;

namespace LiczbyPierwsze {

public partial class Form1 : Form {

// Metoda prywatna, która sprawdza czy argument jest liczbą // pierwszą

private bool pierwsza(int n) {

if (n < 3)

return true;

for (int k = 2; k <= n/2; k++) {

if (n % k == 0) return false;

}

return true;

} // Konstruktor w klasie Form1 public Form1()

{

InitializeComponent();

}

Rys.7.16

(23)

// Obsługa zdarzenia - wyświetlenie formularza

private void Form1_Shown(object sender, EventArgs e) {

updwnodLiczby.Value = 1;

updwndoLiczby.Value = 2;

liczbyPierwsze.Items.Clear();

label4.Text = "";

}

// Obsługa zdarzenia - kliknięcie klawisza butKoniec // lub naciśnięcie kombinacji klawiszy Alt+K

private void butKoniec_Click(object sender, EventArgs e) {

liczbyPierwsze.Visible = false;

label4.Visible = false;

Application.Exit();

}

// Obsługa zdarzenia - zmiana wartości w polu // kontrolki updwnodLiczby

private void updwnodLiczby_ValueChanged(object sender, EventArgs e) {

updwndoLiczby.Value = updwnodLiczby.Value + 1;

}

(24)

// Obsługa kliknięcia klawisza butSzukaj - wyszukiwanie // liczb pierwszych w zadanym przedziale

private void butSzukaj_Click(object sender, EventArgs e) {

label3.Visible = true;

liczbyPierwsze.Visible = true;

label4.Visible = true;

liczbyPierwsze.Items.Clear();

int dół = (int)updwnodLiczby.Value;

int góra = (int)updwndoLiczby.Value;

int ile = 0;

for (int i = dół; i <= góra; i++) {

if (pierwsza(i)) {

// Dopisuje kolejną liczbę pierwszą do kolekcji liczbyPierwsze.Items.Add(i.ToString());

++ile;

} }

label4.Text = "Znaleziono " + ile.ToString() + " liczb

pierwszych";

} }

}

(25)

Drugą przykładową aplikacją, gdzie wykorzystano elementy biblioteki Windows Forms jest program, który rysuje na ekranie wykres funkcji y = a*cos2x

(26)

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Graphics_3 {

public partial class Form1 : Form {

// Konstruktor w klasie Form1 public Form1()

{

InitializeComponent();

}

// Metoda f oblicza wartość funkcji y private double f(double a, double x) {

return a * Math.Cos(x) * Math.Cos(x);

}

(27)

// Metoda wylicza współrzędne ekranowe (w pikselach) punktów wykresu

private void wyliczPunkty(Point[] w, int n, double xp, double xk, int q) {

double dx = (xk - xp) / n;

double najw = f(1.0, xp);

double najm = f(1.0, xp);

double a;

double dy;

for (int j = 0; j < n; j++) {

if ((a = f(1.0, xp + j * dx)) > najw) najw = a;

if (a < najm) najm = a;

}

dy = (najw - najm) / q;

dy = (dy < 0) ? -dy : dy;

for (int i = 0; i < n; i++) {

w[i].X = i;

w[i].Y = q - (int)(f(1.0, (xp + i * dx))/dy);

} }

(28)

// Obsługa kliknięcia klawisza Rysuj - rysuje wykres na panelu ("płótnie") private void butRysuj_Click(object sender, EventArgs e)

{

Graphics gr = this.grPanel.CreateGraphics();

int wysokość = 600;

int szerokość = 1100;

Point[] wierzchołki = new Point[szerokość];

grPanel.Height = wysokość;

grPanel.Width = szerokość;

//MessageBox.Show(wysokość.ToString());

//MessageBox.Show(szerokość.ToString());

Pen penOsie = new Pen(Brushes.Black, (float)1.5);

Pen brązowy = new Pen(Brushes.Brown);

Pen żółty = new Pen(Brushes.YellowGreen);

gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

gr.DrawLine(penOsie, new Point(0, wysokość/2), new Point(szerokość, wysokość/2));

gr.DrawLine(penOsie, new Point(szerokość / 2, 0), new Point(szerokość / 2, wysokość));

this.wyliczPunkty(wierzchołki, szerokość, -3, 3, wysokość-1);

for (int k = 0; k < szerokość - 1; k++)

gr.DrawLine(brązowy, wierzchołki[k], wierzchołki[k + 1]);

}

// Obsługa kliknięcia klawisza Koniec

private void butKoniec_Click(object sender, EventArgs e) {

Application.Exit();

} } }

Cytaty

Powiązane dokumenty

Gazeta wydawana przez grupę Comenius i Samorząd Uczniowski Strona

Korzystając z programu komputerowego zapoznać się z tworzeniem grup punktowych poprzez wybór trzech elementów symetrii, które będą poprawnymi generatorami danej grupy..

Krzysztof Kolumb odkrył Amerykę w roku 1492, a dzieło Mikołaja Kopernika ukazało się w roku 1543.. Ile lat dzieli

Uwaga - Jest pewien wyjątek, otóż system może się uruchomid nawet gdy nie ma pliku boot.ini pod warunkiem, że partycja systemowa i partycja boot to te same partycje.?. Gdzie

Zdrowie – według definicji Światowej Organizacji Zdrowia – to stan pełnego fizycznego, umysłowego i społecznego dobrostanu.. W ostatnich latach definicja ta została uzupełniona o

Z uwagi na delikatność zagadnienia proponuję, żebyście drogie kobietki przeczytały tekst znajdujący się w ćwiczeniówce na stronach 27-28 i rozwiązały test znajdujący się

(na podstawie interesu handlowego / ponownego użycia projektu produktu) zostanie ocenione również bezpieczeństwo produktu ogólnego przeznaczenia lub zastosowania

A więc nie wszystko, co widzimy w Internecie jest takie jak nam się wydaje.. źródło : Konferencja