Programování v jazyku C# II. 1.kapitola



Podobné dokumenty
Programování v prostředí.net

Nejzajímavější jsou události MouseDown a KeyDown.

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Jazyk C# a platforma.net

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Formuláře. Takto se zobrazí modálně: void button1_click(object sender, System.EventArgs e) { JinyFormular formular = new JinyFormular()

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

Jazyk C# (seminář 7)

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Pokročilá práce s proměnnými

Cvičné příklady Tematický celek 01

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Podmíněné vykonávání

Cvičné příklady Hodina 2

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Klíčové pojmy: Události, handlery, třída Graphics, pera, stětce, kreslení vyplněných a nevyplněných objektů.

Programování v jazyku C# II. 4.kapitola

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

UŽIVATELSKÉ ROZHRANÍ WINDOWS-FORM DESKTOPOVÉ APLIKACE - CVIČENÍ

IRAE 07/08 Přednáška č. 7. Začátek (head)

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

PROGRAMOVÁNÍ PRO MS WINDOWS 1

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

PŘETĚŽOVÁNÍ OPERÁTORŮ

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Používáme Visual Studio

Jazyk C# - přístup k datům

Tvorba programů s GUI v C#

Metodický list k didaktickému materiálu

2 Tvorba interaktivních grafických programů

Jazyk C# - přístup k datům

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Generické programování

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

PROGRAMOVÁNÍ PRO MS WINDOWS 1

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Programování v jazyku C# II. 3.kapitola

Jazyk C# (seminář 6)

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Dělení a vlastnosti komponent

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

Jazyk C# a platforma.net

Komponenty v.net. Obsah přednášky

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programování v jazyce JavaScript

Jazyk C# (seminář 9)

Předdefinované dialogy

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# - přístup k datům

Tematický celek 03 - Cvičné příklady

Jazyk C# (seminář 3)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

1. Programování proti rozhraní

Úvodem... 9 Kapitola 1 Karetních

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Dialogy a základy GUI pro.net KIV / WIN

Úvod do programovacích jazyků (Java)

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Objektově orientované programování

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Delphi popis prostředí

Konfigurace PPPoE připojení v OS Microsoft Windows XP

Popis rozšířujících funkcí JScriptu

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

vjj 1. events, triggers.net

Dědičnost (inheritance)

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Takto chápanému druhu objektů se říká TŘÍDA.

Reaktivní programování v.net

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Abstraktní datové typy: zásobník

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

IRAE 07/08 Přednáška č. 1

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

PREPROCESOR POKRAČOVÁNÍ

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Seminář Java II p.1/43

Projekt Obrázek strana 135

Česká příručka. Obsah Balení. Systémové Požadavky. Instalace a podpora. Roccat Isku klávesnice Rychlá instalační příručka

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Java Výjimky Java, zimní semestr

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Kurz Databáze. Obsah. Formuláře. Práce s daty. Doc. Ing. Radim Farana, CSc.

Transkript:

Programování v jazyku C# II. 1.kapitola

Obsah Windows forms Formuláře Kontrolky Prostředí 2/33

Windows forms Shrnující název pro množinu tříd umožnující tvorbu grafických uživatelských rozhraní Součást.NET Frameworku Součást standardu 3/33

Jmenné prostory System.Windows.Forms obsahuje formuláře, kontrolky, dialogy System.Drawing Kreslení, GDI+ System.Drawing.Imaging rozšířené možnosti práce s grafikou Nutno pridat reference dělá automaticky vývojové prostředí 4/33

Aplikace Třída Application poskytuje statické metody a události pro událostmi řízené programování Application.Run(Form) zobrazí formulář a zahájí smyčku událostí blokuje, dokud nedojde k uzavření formuláře Application.Exit() ukončí smyčku událostí zavře všechny okna aplikace Application.[User Common]AppData[Path Registry] vrátí cesty k adresářum s uživatelskými daty C:/Documents and Settings/All users/data aplikací/<company name>/<product name>/<product version> 5/33

Aplikace příklad namespace Jcu.Pjc2.Lekce2 class Program static void Main (string [] args) Form form = new Form(); Application.Run (form); 6/33

Třída Form Třída Form reprezentuje formulář (okno) Obvykle se dědí od Windows.Forms.Form přidají se ovládací prvky přidají se reakce na události 7/33

Třída Form - metody Show zobrazí formulář (program pak pokračuje v běhu) ShowDialog zobrazí formulář (ceká dokud se formulář nezavře) Close zavře formulář Hide skryje formulář Activate zobrazí skrytý formulář 8/33

Třída Form - události Load při zobrazení pomocí Show, ShowDialog Activated když se stane aktivní Activate Deactivate když se stane neaktivní Hide FormClosing okno se zavírá lze zrušit pomocí CancelEvenArgs FormClosed okno se definitivně zavírá 9/33

Příklad namespace Jcu.Pjc2.Lekce2 class NonClosingForm : Form public NonClosingForm() this.formclosing += new FormClosingEventHandler (NonClosingForm_FormClosing); void NonClosingForm_FormClosing (object sender, FormClosingEventArgs e) e.cancel = true ; class Program static void Main (string [] args) NonClosingForm form = new NonClosingForm(); form.showdialog(); 10/33

Nemodální formulář Zobrazí se metodou Show Vlastní smyčka zpráv žije si vlastním životem v aplikaci jich muže být několik Muže mít vlastníka při skrytí, uzavření či aktivaci vlatníka udělá totéž kreslí se přes vlastníka 11/33

Modální formulář - dialog Zobrazí se metodou ShowDialog Dokud není uzavřen, nedovolí uživateli manipulovat s rodičem Matoda ShowDialog vrací hodnotu výctový typ DialogResult Yes, No, Abort... 12/33

Modální formulář předání hodnoty Nastavení hodnoty v property DialogResult způsobí uzavření formuláře Nastavení hodnoty DialogResult u některého z tlačítek formuláře není třeba psát obsluhu pro tlačítko funguje automaticky 13/33

Třída Control Třída Control je předek všech vizuálních prvku včetně formuláře Umožňuje zobrazení a skrytí nastavení pozice a velikosti vnořování kontrolek reakce na události práci ve vláknech 14/33

Některé kontrolky 15/33

Pozice a velikost Jednotlivé veličiny pozice horní hrany Top pozice levé hrany Left šířka kontrolky Width výška kontrolky Height dolní a pravá hrana pouze pro čtení (Right, Bottom) Velikost a pozice dvojice výška, šířka Size (SizeF) dvojice levý, horní Point (PointF) Kompletní určení velikosti struktura Rectangle (RectangleF) 16/33

Velikost kontrolky a klientská oblast Velikost kontrolky celková velikost Width, Height, Size Klientská oblast vnitrek kontrolky bez rámecku, rolovacích lišt, menu... ClientWidth, ClientHeight, ClientSize 17/33

Vnořování kontrolek Property ControlCollectoin Controls metoda Add přidá kontrolku metoda Remove vyjme kontrolku indexer Controls[int/string] vrátí referenci na kontrolku Kontrolka se musí přidat, aby se zobrazila kontrolky se většinou vytváří jako private členy formuláře (nejsou přístupné zvenku) 18/33

Příklad class ButtonForm : Form private Button button ; public ButtonForm() button = new Button(); this.controls.add(button); 19/33

Chování vnořených kontrolek Pozice se vztahuje k levému hornímu rohu klientské oblasti rodiče Vykreslují se vždy pres rodičovskou kontrolku u sesterských kontrolek záleží na Z-poradí standardně podle poradí přdání do kolekce kontrolek BringToFront posune kontrolku nejblíž SendToBack odsune kontrolku nejdál Přebírají některé vlastnosti (ambientní vlastnosti) barva, font... 20/33

Události Jsou řešeny pomocí delegátů na metody, které danou událost zpracují button.click += new System.EventHandler(buttonClick); void buttonclick (object sender, System.EventArgs e) this. Close (); Událost je zaslána kontrolkou nad kterou k události došlo (sender) Odesílatel nezná příjemce Příjemce zná odesílatele Další informace jsou uloženy v EventArgs 21/33

Obsluha Události od více kontrolek muže obsluhovat jediná metoda V některých případech muže jedna metoda obsluhovat i různé události Příklad obsluhy button1.click += new System.EventHandler(button1_Click); button2.click += new Systém.EventHandler(button1_Click);... private void button1_click (object sender, System.EventArgs e) MessageBox.Show("kliklo se na "+((Button)sender).Text); 22/33

Klávesnice KeyDown, KeyUp argument události obsahuje scan kód klávesy funguje i pro neznakové klávesy modifikátory Control, Alt, Shift KeyPress jen pro znakové klávesy vrací kód znaku V případě stisknuté klávesy nastává střídavě události KeyDown a KeyPress, událost KeyUp nastane až při uvolnění klávesy 23/33

Myš Click a DoubleClick nemusí být nutně od myší, ale například po stisku klávesy ENTER pouze informuje, že událost nastala, argument nenese informaci o souřadnicích myši MouseClick a MouseDoubleClick až v.net 2.0 podobně jako Click, ale pouze pro myš MouseEnter, MouseHover a MouseLeave pouze informují o události MouseMove, MouseDown, MouseUp a MouseWheel argument události (MouseEventArgs) nese informaci o pozici myši a stavu tlačítek a kolečka 24/33

Vlákna Čtení či zápis dat kontrolky z jiného vlákna muže způsobit nekonzistenci v.net 2.0 vyhodí InvalidOperationException vláknově bezpečné metody: (Begin/End)Invoke přístup z jiného vlákna indikuje InvokeRequire Synchronní způsob blokující volání Invoke(delegate, object[]) zavolá delegáta vláknem, kterému patří kontrolka předá pole objektu jako argumenty vrátí hodnotu, kterou vrátil delegát 25/33

Synchronní způsob public ThreadForm() button1 = new Button(); thread1 = new Thread(new ThreadStart(CountingThread));... protected void CountingThread()... // slozity vypocet SetText (mezivysledek);... protected delegate void SetTextDelegate(string text); protected void SetText (string text) if(button1.invokerequired) SetTextDelegate settext = new SetTextDelegate(SetText); button1.invoke(settext,new object[] text); else button1.text = text ; 26/33

Asynchronní invoke BeginInvoke(delegate, object[]) požádá o zavolání delegáta není blokující zařadí požadavek do fronty a pokračuje v běhu vrátí instanci třídy implementující IAsyncResult EndInvoke(IAsyncResult) je blokující vrací návratou hodnotu metody predané v delegátu 27/33

Designér Wysiwyg editor formulářů Formulář musí být první třída deklarovaná v souboru Úpravy v designéru se projevují v kódu metoda InitializeComponent nedoporučuje se upravovat ručně! v MSVS 05 a SharpDevelop 2 je kód designéru uveden ve zvláštním souboru <formulář>.designer.cs 28/33

Program.cs using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsApplication static class Program [STAThread] static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1 ()); 29/33

Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication public partial class Form1 : Form public Form1() InitializeComponent(); 30/33

Form1.Designer.cs namespace WindowsApplication partial class Form1 private System.ComponentModel.IContainer components = null ; protected override void Dispose(bool disposing) if( disposing && ( components!= null )) components.dispose(); base.dispose(disposing); private void InitializeComponent() this.button1 = new System.Windows.Forms.Button(); this.suspendlayout(); // // button1 // this.button1.location = new System.Drawing.Point (13, 13); this.button1.name = " button1 "; this.button1.size = new System.Drawing.Size (75, 23); this.button1.tabindex = 0; this.button1.text = " button1 "; this.button1.usevisualstylebackcolor = true; // // Form1 // this.autoscaledimensions = new System.Drawing.SizeF (6F, 13F); this.autoscalemode = System.Windows.Forms.AutoScaleMode.Font; this.clientsize = new System.Drawing.Size(292, 273); this.controls.add(this.button1); this.name = " Form1 "; this.text = " Form1 "; this.resumelayout(false); private System.Windows.Forms.Button button1; 31/33

Form1.cs [Design] 32/33

Konec Konec 33/33