- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Szkoła Techniczno Ekonomiczna w Świdnicy. Języki i paradygmaty programowania - 8



Podobne dokumenty
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Narzędzia 4. dr inż. Tadeusz Jeleniewski

Programowanie obiektowe

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Laboratorium 10 - Web Services

Aby nadać jej pożądaną postać należy w pliku Window1.xaml stworzyć definicję swojego stylu modyfikując ręcznie postać zapisu XAML:

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Instrukcja laboratoryjna cz.3

Zaawansowane aplikacje internetowe - laboratorium

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Lokalizacja Oprogramowania

Informatyka I : Tworzenie projektu

Zaawansowane środowiska programistyczne 2009/2010

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Programowanie w środowisku graficznym GUI

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Aplikacje WWW - laboratorium

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Informatyka II. Laboratorium Aplikacja okienkowa

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Platformy Programowania

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

System jest głównym w hierarchii obszarem nazw, zdefiniowanym w bibliotece mscorlib.dll.

Laboratorium programowania urządzeń mobilnych

Visual Studio instalacja

Wykład 5 Okna MDI i SDI, dziedziczenie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Ćwiczenia 9 - Swing - część 1

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

MS Visual Studio Express 2012 for Web instalacja i konfiguracja

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Programowanie telefonów z Windows Phone 7, cz. 4

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Leszek Stasiak Zastosowanie technologii LINQ w

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

16) Wprowadzenie do raportowania Rave

Rys. 1. Struktura środowiska.net 3.5. S. Fraser, Pro Visual C++/CLI and the.net 3.5 Platform, Apress, 2009.

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Kurs programowania 2 - listy

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Instrukcja obsługi User s manual

Przewodnik krok po kroku:

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

Wprowadzenie do systemu Delphi

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Programowanie Obiektowe GUI

Laboratorium 1 - Programowanie proceduralne i obiektowe

Szybkie tworzenie grafiki w GcIde

Programowanie wielowarstwowe i komponentowe

1. CZYM JEST SERIALIZACJA

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Praca w środowisku Visual Studio 2008, Visual C

Programowanie telefonów z Windows Phone 7, cz. 2

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Infrastruktura aplikacji WWW

Laboratorium - Tworzenie partycji w Windows XP

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Programowanie obiektowe i zdarzeniowe

Cover sheet. WinCC (TIA Portal) FAQ Listopad 2012

Galileo v10 pierwszy program

Programowanie Komputerów

Aplikacje geodezyjne

Klasy i obiekty cz II

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Poradnik użytkownika pomoc techniczna

5.2. Pierwsze kroki z bazami danych

Ćwiczenie 8. Kontrolki serwerowe

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

Procedury techniczne modułu Forte Kontroling. Raportowanie danych w MS Excel - Konfiguracja IIS na Windows oraz wykonanie importu

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Załącznik nr 8. do Studium Wykonalności projektu Sieć Szerokopasmowa Polski Wschodniej województwo podkarpackie

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Aplikacje WWW - laboratorium

Volcano MC-GM4 OPTICAL MOUSE USER S MANUAL MODECOM

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Transkrypt:

Wyższa Szkoła Techniczno Ekonomiczna w Świdnicy Języki i paradygmaty programowania - 8 - Narzędzie Windows Forms - Przykładowe aplikacje 1

Narzędzie Windows Forms 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 windowsowych z graficznym interfejsem użytkownika (GUI). Aby rozpocząć pracę nad nową aplikacją, po uruchomieniu środowiska Visual Studio należy wybrać opcję File New Project, rys. 8.1. 2

3

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.8.2). Lewą stronę arkusza zajmuje "skrzynka narzędziowa" (Toolbox) z pogrupowanymi wg kategorii ikonkami umożliwiającymi wybór kontrolek umieszczanych na formularzu, którego obraz w fazie projektowania znajduje się na środkowym polu arkusza. Z prawej strony znajduje się Solution Explorer. Zawiera on drzewo wszystkich plików projektu. Pod nim system umieścił okno Properties 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.8.3) 4

5

6

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.8.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. 8.5 i 8.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 8.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. 7

8

9

10

11

Zmieniamy teraz kilka właściwości formularza i przycisku (rys.8.8 i 8.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.8.10). Bardzo dużym ułatwieniem jest istnienie "podpowiadacza" mechanizmu Intelisense. 12

13

14

15

Przykładowa aplikacja Pewna aplikacja, która wyznacza wszystkie liczby pierwsze w zadanym przedziale wygląda tak jak na rys. 8.11 16

Na formularzu umieszczono cztery kontrolki klasy Label. System nadał im domyślnie nazwy label1 label4. Właściwość Text tej ostatniej kontrolki będzie ustalana programowo po sprawdzeniu ile liczb pierwszych mieści się w zadanym przedziale. Dwie kontrolki klasy NumericUpDown, którym nadano nazwy updwnodliczby i updwndoliczby służą do wpisywania granic przedziału przeszukiwania. Właściwości Minimum, Maximum, Increment pierwszej z nich ustawiono odpowiednio na 1, 100, 1 co oznacza, że za pomocą ich "suwaków" wartości można zmieniać w zakresie od 1 do 100 ze skokiem 1. Właściwości Minimum, Maximum, Increment drugiej z tych kontrolek ustawiono na 0, 100000, 1. Wartość właściwości Minimum jest ustalana programowo w metodzie obsługi zdarzenia ValueChanged kontrolki updwnodliczby : private void updwnodliczby_valuechanged(object sender, EventArgs e) updwndoliczby.value = updwnodliczby.value + 1; Kontrolki Button o nazwach butszukaj, butkoniec służą odpowiednio do uruchamiania akcji wyszukiwania liczb pierwszych w zadanym przedziale oraz kończenia pracy aplikacji. 17

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. 8.12 przedstawia kod aplikacji umieszczony przez system w pliku Form1.cs. Rysunki 8.13-8.17 przedstawiają zawartości plików odpowiednio Program.cs, AssemblyInfo.cs, Resources.Designer.cs, Settings.Designer.cs, Form1.Designer.cs 18

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; sing System.Text; using System.Windows.Forms; namespace LiczbyPierwsze public partial class Form1 : Form 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; public Form1() InitializeComponent(); private void Form1_Shown(object sender, EventArgs e) updwnodliczby.value = 1; updwndoliczby.value = 2; liczbypierwsze.items.clear(); label4.text = ""; 19

private void butkoniec_click(object sender, EventArgs e) liczbypierwsze.visible = false; label4.visible = false; Application.Exit(); private void updwnodliczby_valuechanged(object sender, EventArgs e) updwndoliczby.value = updwnodliczby.value + 1; private void butszukaj_click(object sender, EventArgs e) 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)) liczbypierwsze.items.add(i.tostring()); ++ile; label4.text = "Znaleziono " + ile.tostring() + " liczb pierwszych"; rys. 8.12 20

using System; using System.Collections.Generic; using System.Windows.Forms; namespace LiczbyPierwsze static class Program / <summary> / The main entry point for the application. / </summary> [STAThread] static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); 21

using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; General Information about an assembly is controlled through the following set of attributes. Change these attribute values to modify the information associated with an assembly. [assembly: AssemblyTitle("LiczbyPierwsze")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("TOSHIBA")] [assembly: AssemblyProduct("LiczbyPierwsze")] [assembly: AssemblyCopyright("Copyright TOSHIBA 2009")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] Setting ComVisible to false makes the types in this assembly not visible to COM components. If you need to access a type in this assembly from COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("c5c14f69-3c4c-4e79-a95b-381ed346b19b")] Version information for an assembly consists of the following four values: Major Version Minor Version Build Number Revision You can specify all the values or you can default the Build and Revision Numbers by using the '*' as shown below: [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] 2015-12-05 [assembly: AssemblyFileVersion("1.0.0.0")] Języki i paradygmaty - 8 22

------------------------------------------------------------------------------ <auto-generated> This code was generated by a tool. Runtime Version:2.0.50727.1433 Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. </auto-generated> ------------------------------------------------------------------------------ namespace LiczbyPierwsze.Properties / <summary> / A strongly-typed resource class, for looking up localized strings, etc. / </summary> This class was auto-generated by the StronglyTypedResourceBuilder class via a tool like ResGen or Visual Studio. To add or remove a member, edit your.resx file then rerun ResGen with the /str option, or rebuild your VS project. [global::system.codedom.compiler.generatedcodeattribute("system.resources.tools.stronglytypedre sourcebuilder", "2.0.0.0")] [global::system.diagnostics.debuggernonusercodeattribute()] [global::system.runtime.compilerservices.compilergeneratedattribute()] internal class Resources private static global::system.resources.resourcemanager resourceman; private static global::system.globalization.cultureinfo resourceculture; 23

[global::system.diagnostics.codeanalysis.suppressmessageattribute("microsoft.performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() / <summary> / Returns the cached ResourceManager instance used by this class. / </summary> [global::system.componentmodel.editorbrowsableattribute(global::system.componentmodel.edi torbrowsablestate.advanced)] internal static global::system.resources.resourcemanager ResourceManager get if ((resourceman == null)) global::system.resources.resourcemanager temp = new global::system.resources.resourcemanager("liczbypierwsze.properties.resources", typeof(resources).assembly); resourceman = temp; return resourceman; / <summary> / Overrides the current thread's CurrentUICulture property for all / resource lookups using this strongly typed resource class. / </summary> 24

[global::system.componentmodel.editorbrowsableattribute(global::system.componentmodel.editorbrowsablestate.advanced)] internal static global::system.globalization.cultureinfo Culture get return resourceculture; set resourceculture = value; 25

------------------------------------------------------------------------------ <auto-generated> This code was generated by a tool. Runtime Version:2.0.50727.1433 Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. </auto-generated> ------------------------------------------------------------------------------ namespace LiczbyPierwsze.Properties [global::system.runtime.compilerservices.compilergeneratedattribute()] [global::system.codedom.compiler.generatedcodeattribute("microsoft.visualstudio.editors.settin gsdesigner.settingssinglefilegenerator", "9.0.0.0")] internal sealed partial class Settings : global::system.configuration.applicationsettingsbase private static Settings defaultinstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default get return defaultinstance; 26

namespace LiczbyPierwsze partial class Form1 / <summary> / Required designer variable. / </summary> private System.ComponentModel.IContainer components = null; / <summary> / Clean up any resources being used. / </summary> / <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) if (disposing && (components!= null)) components.dispose(); base.dispose(disposing); #region Windows Form Designer generated code / <summary> / Required method for Designer support - do not modify / the contents of this method with the code editor. / </summary> 27

namespace LiczbyPierwsze partial class Form1 / <summary> / Required designer variable. / </summary> private System.ComponentModel.IContainer components = null; / <summary> / Clean up any resources being used. / </summary> / <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) if (disposing && (components!= null)) components.dispose(); base.dispose(disposing); #region Windows Form Designer generated code / <summary> / Required method for Designer support - do not modify / the contents of this method with the code editor. / </summary> 28

private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.liczbypierwsze = new System.Windows.Forms.ListBox(); this.label3 = new System.Windows.Forms.Label(); this.butszukaj = new System.Windows.Forms.Button(); this.butkoniec = new System.Windows.Forms.Button(); this.label4 = new System.Windows.Forms.Label(); this.updwnodliczby = new System.Windows.Forms.NumericUpDown(); this.updwndoliczby = new System.Windows.Forms.NumericUpDown(); ((System.ComponentModel.ISupportInitialize)(this.updwnodLiczby)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.updwndoLiczby)).BeginInit(); this.suspendlayout(); label1 this.label1.autosize = true; this.label1.font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.label1.location = new System.Drawing.Point(33, 29); this.label1.name = "label1"; this.label1.size = new System.Drawing.Size(192, 16); this.label1.tabindex = 0; this.label1.text = "Podaj przedział - od liczby:"; label2 this.label2.autosize = true; this.label2.font = new System.Drawing.Font("Arial", 9F, 29

System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.label2.location = new System.Drawing.Point(137, 69); this.label2.name = "label2"; this.label2.size = new System.Drawing.Size(73, 16); this.label2.tabindex = 2; this.label2.text = "do liczby:"; liczbypierwsze this.liczbypierwsze.formattingenabled = true; this.liczbypierwsze.itemheight = 18; this.liczbypierwsze.location = new System.Drawing.Point(366, 66); this.liczbypierwsze.name = "liczbypierwsze"; this.liczbypierwsze.size = new System.Drawing.Size(134, 274); this.liczbypierwsze.tabindex = 4; this.liczbypierwsze.visible = false; label3 this.label3.autosize = true; this.label3.font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.label3.location = new System.Drawing.Point(362, 33); this.label3.name = "label3"; this.label3.size = new System.Drawing.Size(88, 16); this.label3.tabindex = 5; this.label3.text = "Znaleziono:"; butszukaj this.butszukaj.font = new System.Drawing.Font("Arial", 9F, 30

System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.butszukaj.location = new System.Drawing.Point(36, 133); this.butszukaj.name = "butszukaj"; this.butszukaj.size = new System.Drawing.Size(84, 26); this.butszukaj.tabindex = 2; this.butszukaj.text = "&Szukaj"; this.butszukaj.usevisualstylebackcolor = true; this.butszukaj.click += new System.EventHandler(this.butSzukaj_Click); butkoniec this.butkoniec.font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.butkoniec.location = new System.Drawing.Point(192, 133); this.butkoniec.name = "butkoniec"; this.butkoniec.size = new System.Drawing.Size(84, 26); this.butkoniec.tabindex = 3; this.butkoniec.text = "&Koniec"; this.butkoniec.usevisualstylebackcolor = true; this.butkoniec.click += new System.EventHandler(this.butKoniec_Click); label4 this.label4.autosize = true; this.label4.font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.label4.location = new System.Drawing.Point(268, 362); this.label4.name = "label4"; this.label4.size = new System.Drawing.Size(50, 16); this.label4.tabindex = 8; this.label4.text = "label4"; this.label4.visible = false; 31

updwnodliczby this.updwnodliczby.location = new System.Drawing.Point(230, 26); this.updwnodliczby.name = "updwnodliczby"; this.updwnodliczby.size = new System.Drawing.Size(112, 25); this.updwnodliczby.tabindex = 0; this.updwnodliczby.valuechanged += new System.EventHandler(this.updwnodLiczby_ValueChanged); updwndoliczby this.updwndoliczby.location = new System.Drawing.Point(230, 66); this.updwndoliczby.maximum = new decimal(new int[] 100000, 0, 0, 0); this.updwndoliczby.name = "updwndoliczby"; this.updwndoliczby.size = new System.Drawing.Size(112, 25); this.updwndoliczby.tabindex = 1; Form1 this.autoscaledimensions = new System.Drawing.SizeF(9F, 18F); this.autoscalemode = System.Windows.Forms.AutoScaleMode.Font; this.backcolor = System.Drawing.Color.PowderBlue; this.clientsize = new System.Drawing.Size(540, 396); this.controls.add(this.updwndoliczby); this.controls.add(this.updwnodliczby); this.controls.add(this.label4); this.controls.add(this.butkoniec); this.controls.add(this.butszukaj); this.controls.add(this.label3); 32

this.controls.add(this.liczbypierwsze); this.controls.add(this.label2); this.controls.add(this.label1); this.font = new System.Drawing.Font("Arial Unicode MS", 8.914286F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.name = "Form1"; this.text = "Wyszukuje liczby pierwsze"; this.shown += new System.EventHandler(this.Form1_Shown); ((System.ComponentModel.ISupportInitialize)(this.updwnodLiczby)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.updwndoLiczby)).EndInit(); this.resumelayout(false); this.performlayout(); #endregion private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.ListBox liczbypierwsze; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button butszukaj; private System.Windows.Forms.Button butkoniec; private System.Windows.Forms.Label label4; private System.Windows.Forms.NumericUpDown updwnodliczby; private System.Windows.Forms.NumericUpDown updwndoliczby; 33

Jako drugą z przykładowych aplikacji wykorzystujących elementy biblioteki Windows Forms przedstawimy program, który rysuje na ekranie wykres funkcji y = x 2 34

35

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Graphics_3 public partial class Form1 : Form public Form1() InitializeComponent(); private double f(double a, double x) return a*x*x; 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; 36

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); private void butrysuj_click(object sender, EventArgs e) Graphics gr = this.grpanel.creategraphics(); int wysokość = 450; int szerokość = 450; 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]); 37

private void butkoniec_click(object sender, EventArgs e) Application.Exit(); 38