Události (1) • Členy třídy umožňující objektu nebo třídě reagovat na zprávy (události) • Program může definovat metody, které mají za úkol zpracovat příchozí zprávy, např.: – – – – stisknutí klávesy stisknutí tlačítka myši pohyb myši apod. • Metoda realizující zpracování (obsluhu) zprávy (reagující na zprávu) se označuje jako tzv. event handler (obslužná metoda) 2017-01-11 1 Události (2) • Parametry obslužné metody musí odpovídat definici prototypu funkce, která se nazývá delegát (delegate, zástupce) • Definice: – delegáta se provádí pomocí delegate – události pomocí klíčového slova event • Metod obsluhujících události může být více a jejich návratovým typem je typ void • Odkaz na obslužnou metodu se: – do události vkládá pomocí operátoru += – z události odebírá pomocí operátoru -= 2017-01-11 2 Částečné třídy (1) • Jazyk C# dovoluje rozdělit zdrojový kód třídy do více samostatných souborů • Používáno velmi často při tvorbě aplikací využívajících rozhraní Windows Forms nebo Windows Presentation Foundation (WPF): – část zdrojového kódu třídy, kterou programátor může ručně upravovat, je uložena v souboru odděleném od kódu, který generuje přímo Visual Studio • Jestliže je třída rozdělena do více souborů, musí jednotlivé části třídy (v každém souboru) být označeny klíčovým slovem partial 2017-01-11 3 Částečné třídy (2) • Příklad (uloženo např. v souboru Prog1.cs): partial class Ctverec { private int strana; public Ctverec(int pocatecniStrana) { strana = pocatecniStrana; } public int GetStrana() { return strana; } } 2017-01-11 4 Částečné třídy (3) • Příklad (uloženo např. v souboru Prog2.cs): partial class Ctverec { public int UrciObsah() { return strana*strana; } public int UrciObvod() { return 4*strana; } } 2017-01-11 5 Windows Forms • Rozhraní pro programování grafických aplikací • Součást MS .NET Framework • Poskytuje sadu tříd umožňujících přístup ke standardním ovládacím prvkům operačního systému MS Windows (okno, tlačítko, menu, editační prvek atd.) • Aplikace psané pomocí Windows Forms jsou událostmi řízené 2017-01-11 6 Hierarchie tříd Object 1 MarshalByRefObject 2 3 4 ListControl ComboBox Component ListBox Control ScrollableControl ContainerControl Form ButtonBase Button 2017-01-11 4 ToolBar Menu RadioButton MainMenu TextBox 3 StatusBar ContextMenu TextBoxBase 2 ScrollBar CheckBox Label 1 PictureBox MenuItem Graphics Application MessageBox 7 Třída Application (1) • Definována ve jmenném prostoru: System.Windows.Forms • Poskytuje metody, vlastnosti a události umožňující řídit běh aplikace • Všechny členy třídy Application jsou statické • Poznámka: – třída Application je definována s modifikátorem sealed není možné definovat třídu, která by byla jejím potomkem 2017-01-11 8 Třída Application (2) • Vlastnosti: – ExecutablePath: • vrací název souboru (včetně cesty), který spustil aplikaci – OpenForms: • vrací kolekci otevřených formulářů, které aplikace vlastní – StartupPath: • vrací cestu k souboru, který spustil aplikaci (bez jména souboru) 2017-01-11 9 Třída Application (3) • Metody: – Restart: • ukončí aplikaci a provede její opětovné spuštění – Run: • zahájí standardní cyklus očekávající příchod zprávy (události) • je-li jejím parametrem formulář (okno), pak se provede jeho zobrazení a metoda Run nevrátí řízení, dokud daný formulář není uzavřen • typicky používána pro zobrazení hlavního okna aplikace 2017-01-11 10 Třída Control (1) • Definována ve jmenném prostoru: System.Windows.Forms • Základní třída pro ovládací prvky systému MS Windows (komponenty s vizuální reprezentací), např.: – – – – formuláře (okna) tlačítka editační pole rolovací lišty • Implementuje základní podporu pro odpovídající objekty 2017-01-11 11 Třída Control (2) • Vlastnosti: – BackColor: • udává barvu pozadí ovládacího prvku – BackgroundImage: • specifikuje obrázek zobrazený na pozadí ovládacího prvku (*.gif, *.jpg, *.bmp, *.wmf, *.png) – ClientSize: • udává velikost (výšku a šířku) klientské části ovládacího prvku – ContextMenuStrip: • určuje kontextové menu zobrazené když uživatel stiskne pravé tlačítko myši 2017-01-11 12 Třída Control (3) – Cursor: • určuje kurzor myši, který bude nad ovládacím prvkem použitý – Enabled: • udává, zda je ovládací prvek aktivní nebo nikoliv (grayed) – Focused: • zjišťuje, zda má ovládací prvek vstupní zaměření (focus) – Font: • specifikuje font textu použitého v ovládacím prvku – ForeColor: • určuje barvu popředí ovládacího prvku (např. u tlačítka se jedná o barvu textu) – Handle: • vrací popisovač (handle) daného ovládacího prvku 2017-01-11 13 Třída Control (4) – Height: • výška ovládacího prvku – Left: • x-ová souřadnice levého horního rohu ovládacího prvku – Location: • souřadnice levého horního rohu ovládacího prvku – Name: • jedinečné jméno ovládacího prvku – Size: • výška a šířka ovládacího prvku – TabIndex: • určuje pořadí komponenty, ve kterém při stisku klávesy TAB získává vstupní zaměření (focus) 2017-01-11 14 Třída Control (5) – TabStop: • určuje, zda uživatel může ovládací prvek vybrat pomocí klávesy TAB – Text: • specifikuje text (titulek) ovládacího prvku – Top: • y-ová souřadnice levého horního rohu ovládacího prvku – Visible: • udává, zda je (není) ovládací prvek viditelný – Width: • šířka ovládacího prvku • Metody: – Focus: • nastavuje ovládacímu prvku vstupní zaměření (focus) 2017-01-11 15 Třída Control (5) – Hide: • skryje ovládací prvek • ekvivalentní nastavení vlastnosti Visible na hodnotu false – Invalidate: • dává požadavek na překreslení ovládacího prvku – Refresh: • vynucuje překreslení ovládacího prvku (ekvivalentní vyvolání metod Invalidate + Update) – Show: • učiní ovládací prvek viditelný • ekvivalentní nastavení vlastnosti Visible na hodnotu true 2017-01-11 16 Třída Control (6) – Update: • provede překreslení ovládacího prvku (pouze pokud byl předtím dán požadavek pomocí Invalidate) • Události: – Click: • dojde k ní při klepnutí primárním (levým) tlačítkem na ovládací prvek – DoubleClick: • dojde k ní při double-clicku primárním (levým) tlačítkem myši na ovládací prvek – Enter: • dojde k ní v době, kdy je ovládací prvek aktivován 2017-01-11 17 Třída Control (7) – KeyPress: • dojde k ní při stisku klávesy a je poslána ovládacímu prvku mající vstupní zaměření (focus) • je vyvolána pouze v případě, že se jedná o klávesu reprezentující znak • pro klávesy, které nereprezentují znak je zapotřebí provést obsluhu události KeyDown, popř. KeyUp – Leave: • nastává v okamžiku, kdy vstupní zaměření opouští ovládací prvek – MouseDown: • dojde k ní když kurzor myši je nad ovládacím prvkem a je proveden stisk některého tlačítka myši 2017-01-11 18 Třída Control (7) – MouseMove: • dojde k ní při pohnutí myší nad ovládacím prvkem – MouseUp: • dojde k ní když kurzor myši je nad ovládacím prvkem a je provedeno uvolnění stisknutého tlačítka myši – Paint: • dojde k ní v době, kdy je ovládací prvek překreslován – Resize: • nastává v okamžiku, kdy se u ovládacího prvku mění jeho velikost – TextChanged: • dojde k ní při změně textu ovládacího prvku 2017-01-11 19 Třída Form (1) • Definována ve jmenném prostoru: System.Windows.Forms • Reprezentuje standardní okna (formuláře) aplikace • Třída Form může být využita pro vytvoření a správu např.: – hlavního okna aplikace – dialogových oken – oken pro aplikace MDI (Multiple Document Interface) 2017-01-11 20 Třída Form (2) • Vlastnosti: – AcceptButton: • specifikuje tlačítko v okně, které je stisknuto v okamžiku, kdy uživatel stiskne klávesu Enter – ActiveControl: • nastavuje (zjišťuje), který ovládací prvek v okně bude mít (má) vstupní zaměření (focus) • zděděno od třídy ContainerControl – ActiveForm: • vrací aktuální (aktivní) formulář aplikace – ActiveMdiChild: • vrací aktuální (aktivní) formulář v aplikaci MDI 2017-01-11 21 Třída Form (3) – CancelButton: • specifikuje tlačítko v okně, které je stisknuto v okamžiku, kdy uživatel stiskne klávesu Esc – ControlBox: • specifikuje, zda-li má být v titulním proužku zobrazená ikona se systémovým menu – FormBorderStyle: • udává vzhled a chování okraje okna (např. Sizable FixedSingle, Fixed3D, FixedDialog) – HelpButton: • specifikuje, zda-li má být v titulním proužku zobrazeno tlačítko pro nápovědu – Icon: • specifikuje ikonu formuláře (okna) – *.ico 2017-01-11 22 Třída Form (4) – KeyPreview: • určuje, zda má formulář přijímat stisknuté klávesy dříve než ovládací prvek mající vstupní zaměření (focus) – MainMenuStrip: • specifikuje hlavní menu formuláře (okna) – MaximizeBox: • specifikuje, zda-li má být v titulním proužku zobrazeno tlačítko pro maximalizaci – MinimizeBox: • specifikuje, zda-li má být v titulním proužku zobrazeno tlačítko pro minimalizaci – StartPosition: • určuje počáteční pozici okna (např. CenterScreen, Manual, WindowsDefaultLocation) 2017-01-11 23 Třída Form (5) – WindowState: • udává stav okna (Normal, Minimized, Maximized) • Metody: – Activate: • aktivuje okno (předává mu vstupní zaměření) – Close: • provede uzavření okna – LayoutMdi: • uspořádá dceřiná okna aplikace MDI (Cascade, TileHorizontal, TileVertical, ArrangeIcons) – ShowDialog: • zobrazí okno jako modální dialogové okno 2017-01-11 24 Třída Form (6) • Události: – Activated: • vzniká v době, kdy se formulář (okno) stává aktivním – Deactivate: • vzniká při deaktivaci okna (ztrátě vstupního zaměření) – FormClose: • nastává poté, kdy je formulář (okno) uzavřen – FormClosing: • nastává v okamžiku, kdy se formulář (okno) uzavírá – Load: • nastává před prvním zobrazením okna – Shown: • nastane, když je okno poprvé zobrazeno 2017-01-11 25 Třída MessageBox (1) • Definována ve jmenném prostoru: System.Windows.Forms • Zobrazuje okno, které může obsahovat: – text – tlačítka – symboly (ikony) • Pro zobrazení MessageBoxu se používá metoda Show, která: – je definovaná 21 různými způsoby (overloading) – vrací hodnotu typu DialogResult vyjadřující, kterým tlačítkem byl MessageBox ukončen 2017-01-11 26 Třída MessageBox (2) • Tlačítka jsou typu MessageBoxButtons, který definuje konstanty vyjadřující jaká tlačítka budou zobrazena (OK, OKCancel, AbortRetryIgnore, YesNoCancel, YesNo, RetryCancel) • Ikony jsou typu MessageBoxIcon, který definuje následující konstanty: None, Hand, Question, Exclamation, Asterisk, Stop, Error, Warning, Information 2017-01-11 27 Třída Button • Definována ve jmenném prostoru: System.Windows.Forms • Reprezentuje tlačítko • Vlastnosti: – DialogResult: • určuje, zda (a jak) tlačítko uzavírá svůj modální rodičovský formulář • hodnota DialogResult je vrácena metodou ShowDialog • Metody: – PerformClick: • simuluje uživatelský stisk klávesy 2017-01-11 28 Třída Label • Definována ve jmenném prostoru: System.Windows.Forms • Ovládací prvek dovolující zobrazit textovou informaci • Vlastnosti: – Text: • specifikuje zobrazený text • Poznámka: – je-li zapotřebí zobrazit číselný údaj, pak je nezbytné jej nejprve převést na řetězec (pomocí metody ToString nebo třídy Convert) 2017-01-11 29
© Copyright 2025