Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Programování v prostředí .NET Winforms
1 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Obsah přednášky
I
Windows forms
I
Formuláře
I
Kontrolky
I
Prostředí
I
Validace vstupů
I
Tooltipy
I
Menu
I
Standardní dialogy
2 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Windows forms
I
Shrnující název pro množinu tríd umožnující tvorbu grafických uživatelských rozhraní
I
Součást .NET Frameworku
I
Součást standardu
3 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Jmenné prostory
I
System.Windows.Forms I
I
System.Drawing I
I
Kreslení, GDI+
System.Drawing.Imaging I
I
obsahuje formuláře, kontrolky, dialogy
rozšířené možnosti práce s grafikou
Nutno přidat reference I
dělá automaticky vývojové prostředí
4 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Aplikace
I
I
Třída Application poskytuje statické metody a události pro událostmi řízené programování Application.Run(Form) I I
I
Application.Exit() I I
I
zobrazí formulář a zahájí smyčku událostí blokuje, dokud nedojde k uzavření formuláře ukončí smyčku událostí zavře všechny okna aplikace
Application.[User|Common]AppData[Path|Registry] I I
vrátí cesty k adresářům s uživatelskými daty C:/Documents and Settings/All users/Data aplikací/
//
5 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Aplikace – příklad
namespace Kiv . Net . Lesson06 { class Program { static void Main ( string [] args ) { Form form = new Form (); Application . Run ( form ); } } } 6 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Třída Form
I I
Třída Form reprezentuje formulář (okno) Obvykle se dědí od Windows.Forms.Form I I
přidají se ovládací prvky přidají se reakce na události
7 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Metody
I
Show I
I
I
I
zavře formulář
Hide I
I
zobrazí formulář (čeká dokud se formulář nezavře)
Close I
I
zobrazí formulář (program pak pokračuje v běhu)
ShowDialog
skryje formulář
Activate I
zobrazí skrytý formulář
8 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Události
I
Load I
I
I
I
když se stane neaktivní Hide
FormClosing I I
I
když se stane aktivní Activate
Deactivate I
I
při zobrazení pomocí Show, ShowDialog
Activated
okno se zavírá lze zrušit pomocí CancelEvenArgs
FormClosed I
okno se definitivně zavírá
9 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Příklad namespace Kiv . Net . Lesson06 { class NonClosingForm : Form { public NonClosingForm () { this . FormClosing += new F o r m C l o s i n g E v e n t H a n d l e r ( N o n C l o s i n g F o r m _ F o r m C l o s i n g ); } void N o n C l o s i n g F o r m _ F o r m C l o s i n g ( object sender , Fo r m C l o s i n g E v e n t A r g s e ) { e . Cancel = true ; } } class Program { static void Main ( string [] args ) { NonClosingForm form = new NonClosingForm (); form . ShowDialog (); } } }
10 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Nemodální formulář
I I
Zobrazí se metodou Show Vlastní smyčka zpráv I I
I
žije si vlastním životem v aplikaci jich může být několik
Může mít vlastníka I I
při skrytí, uzavření či aktivaci vlatníka udělá totéž kreslí se přes vlastníka
11 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Modální formulář – dialog
I
Zobrazí se metodou ShowDialog
I
Dokud není uzavřen, nedovolí uživateli manipulovat s rodičem Matoda ShowDialog vrací hodnotu
I
I
výčtový typ DialogResult I
Yes, No, Abort . . .
12 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Modální formulář – předání hodnoty
I
Nastavení hodnoty v property DialogResult I
I
způsobí uzavření formuláře
Nastavení hodnoty DialogResult u některého z tlačítek formuláře I
není třeba psát obsluhu pro tlačítko – funguje automaticky
13 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Třída Control
I
Třída Control je předek všech vizuálních prvků I
I
včetně formuláře
Umožňuje I I I I I
zobrazení a skrytí nastavení pozice a velikosti vnořování kontrolek reakce na události práci ve vláknech
14 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Některé kontrolky
15 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Pozice a velikost
I
Jednotlivé veličiny I I I I I
I
Velikost a pozice I I
I
pozice horní hrany Top pozice levé hrany Left šířka kontrolky Width výška kontrolky Height dolní a pravá hrana pouze pro čtení (Right, Bottom) dvojice výška, šířka Size (SizeF) dvojice levý, horní Point (PointF)
Kompletní určení velikosti I
struktura Rectangle (RectangleF)
16 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Velikost kontrolky a klientská oblast I
Velikost kontrolky I I
I
celková velikost Width, Height, Size
Klientská oblast I I
vnitřek kontrolky bez rámečků, rolovacích lišt, menu . . . ClientWidth, ClientHeight, ClientSize
17 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Vnořování kontrolek
I
Property ControlCollectoin Controls I I I
I
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 I
kontrolky se většinou vytváří jako private členy formuláře (nejsou přístupné zvenku)
18 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Příklad
class ButtonForm : Form { private Button button ; public ButtonForm () { button = new Button (); this . Controls . Add ( button ); } }
19 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Chování vnořených kontrolek
I I
Pozice se vztahuje k levému hornímu rohu klientské oblasti rodiče Vykreslují se vždy přes rodičovskou kontrolku I
u sesterských kontrolek záleží na Z-pořadí I I I
I
standardně podle pořadí přidání do kolekce kontrolek BringToFront posune kontrolku nejblíž SendToBack odsune kontrolku nejdál
Přebírají některé vlastnosti (ambientní vlastnosti) I
barva, font . . .
20 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Události
I
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 (); }
I
Událost je zaslána kontrolkou nad kterou k události došlo (sender)
I
Odesílatel nezná příjemce
I
Příjemce zná odesílatele
I
Další informace jsou uloženy v EventArgs
21 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Obsluha
I
Události od více kontrolek může obsluhovat jediná metoda
I
V některých případech může jedna metoda obsluhovat i různé události
I
Příklad obsluhy button1 . Click += new System . EventHandler ( button1_Click ); button2 . Click += new System . EventHandler ( button1_Click ); ... private void button1_Click ( object sender , System . EventArgs e ) { MessageBox . Show ( " kliklo se na " +(( Button ) sender ). Text ); }
22 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Klávesnice
I
KeyDown, KeyUp I I I
I
KeyPress I I
I
argument události obsahuje scan kód klávesy funguje i pro neznakové klávesy modifikátory Control, Alt, Shift 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 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Myš
I
Click a DoubleClick I I
I
MouseClick a MouseDoubleClick I I
I
nově v .NET 2.0 podobně jako Click, ale pouze pro myš
MouseEnter, MouseHover a MouseLeave I
I
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
pouze informují o události
MouseMove, MouseDown, MouseUp a MouseWheel I
argument události (MouseEventArgs) nese informaci o pozici myši a stavu tlačítek a kolečka
24 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Vlákna
I
Čtení či zápis dat kontrolky z jiného vlákna může způsobit nekonzistenci I I I
I
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 I I I I I
blokující volání Invoke(delegate, object[]) zavolá delegáta vláknem, kterému patří kontrolka předá pole objektů jako argumenty vrátí hodnotu, kterou vrátil delegát
25 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Synchronní způsob
public ThreadForm () { button1 = new Button (); thread1 = new Thread ( new ThreadStart ( CountingThr ea d )); ... } protected void CountingThread () { ... // slozity vypocet //!!! vyjímka !!! button1 . Text = mezivysledek ; ... }
26 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Synchronní způsob
public ThreadForm () { button1 = new Button (); thread1 = new Thread ( new ThreadStart ( CountingThr ea d )); ... } protected void CountingThread () { ... // slozity vypocet MethodInvoker setText = delegate () { button1 . Text = mezivysledek ; }; button1 . Invoke ( setText ); ... }
26 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Synchronní způsob public ThreadForm () { button1 = new Button (); thread1 = new Thread ( new ThreadStart ( CountingThr ea d )); ... } protected void CountingThread () { ... // slozity vypocet SetText ( mezivysledek ); ... } protected delegate void SetTextDelegate ( string text ); protected void SetText ( string text ) { if ( button1 . InvokeRequired ) { SetTextDelegate setText = new SetTextDelegat e ( SetText ); button1 . Invoke ( setText , new object [] { text }); } else { button1 . Text = text ; } } 26 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Asynchronní invoke
I
BeginInvoke(delegate, object[]) I I I
I
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) I I
je blokující vrací návratou hodnotu metody předané v delegátu
27 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Asynchronní způsob public ThreadForm () { button1 = new Button (); thread1 = new Thread ( new ThreadStart ( CountingThr ea d )); ... } protected void CountingThread () { ... // slozity vypocet BeginInvoke ( new S etTextDelegate ( SetText ) , new object [] { mezivysledek }); ... } protected delegate void SetTextDelegate ( string text ); protected void SetText ( string text ) { button1 . Text = text ; }
28 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace
class ComplexForm : Form { public ComplexForm () { } }
29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace
class ComplexForm : Form { protected Button closeButton ; public ComplexForm () { closeButton = new Button (); this . Controls . Add ( closeButton ); } }
29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace class ComplexForm : Form { protected Button closeButton ; public ComplexForm () { closeButton = new Button (); closeButton . Click += new EventHandler ( close Button _Click ); this . Controls . Add ( closeButton ); } void clo seButt on_Cl ick ( object sender , EventArgs e ) { this . Close (); } }
29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace class ComplexForm : Form { protected Button closeButton ; public ComplexForm () { closeButton = new Button (); closeButton . Text = " Zavřít " ; closeButton . Name = " closeButton " ; closeButton . Left = 110; closeButton . Top = 40; closeButton . Width = 90; closeButton . Height = 20; closeButton . Click += new EventHandler ( c lo s e B u t t o n _ C l i c k ); this . Controls . Add ( closeButton ); } void c lo s eB ut t on _C l ic k ( object sender , EventArgs e ) { this . Close (); } } 29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace class ComplexForm : Form { protected Button openButton ; protected Button closeButton ; public ComplexForm () { openButton = new Button (); openButton . Text = " Otevřít " ; openButton . Name = " openButton " ; openButton . Left = 10; openButton . Top = 40; openButton . Width = 90; openButton . Height = 20; openButton . Click += new EventHandler ( op enB utt on_ Clic k ); this . Controls . Add ( openButton ); closeButton = new Button (); closeButton . Text = " Zavřít " ; closeButton . Name = " closeButton " ; closeButton . Left = 110; closeButton . Top = 40; closeButton . Width = 90; closeButton . Height = 20; closeButton . Click += new EventHandler ( c l os e Bu t to n _C l ic k ); this . Controls . Add ( closeButton ); } void o p e n B u t t on _ C li c k ( object sender , EventArgs e ) { new ComplexForm (). ShowDialog (); } void c l o s e B u tt o n_ Cl i ck ( object sender , EventArgs e ) { this . Close (); } }
29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Složitá aplikace class ComplexForm : Form { protected Button openButton ; protected Button closeButton ; protected Label questionLabel ; public ComplexForm () { openButton = new Button (); openButton . Text = " Otevřít " ; openButton . Name = " openButton " ; openButton . Left = 10; openButton . Top = 40; openButton . Width = 90; openButton . Height = 20; openButton . Click += new EventHandler ( op enB utt on_ Clic k ); this . Controls . Add ( openButton ); closeButton = new Button (); closeButton . Text = " Zavřít " ; closeButton . Name = " closeButton " ; closeButton . Left = 110; closeButton . Top = 40; closeButton . Width = 90; closeButton . Height = 20; closeButton . Click += new EventHandler ( c l os e Bu t to n _C l ic k ); this . Controls . Add ( closeButton ); questionLabel = new Label (); questionLabel . Top = 10; questionLabel . Left = 10; questionLabel . Text = " Co chcete udělat ? " ; this . Controls . Add ( questionLabel ); this . ClientSize = new Size (210 ,70); this . Text = " Formulář na nic " ; } void o p e n B u t t on _ C li c k ( object sender , EventArgs e ) { new ComplexForm (). ShowDialog (); } void c l o s e B u tt o n_ Cl i ck ( object sender , EventArgs e ) { this . Close (); } }
29 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Designer I I I
Wysiwyg editor formulářů Formulář musí být první třída deklarovaná v souboru Úpravy v designeru se projevují v kódu I I I
metoda InitializeComponent nedoporučuje se upravovat ručně! v MSVS 05 a SharpDevelop 2 je kód designeru uveden ve zvláštním souboru .Designer.cs
30 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Program.cs using System ; using System . Collections . Generic ; using System . Windows . Forms ; namespace W indow sApp li ca ti on { static class Program { [ STAThread ] static void Main () { Application . E na bl eV is ua lS ty le s (); Application . S e t C o m p a t i b l e T e x t R e n d e r i n g D e f a u l t ( false ); Application . Run ( new Form1 ()); } } }
31 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Form1.cs using using using using using using using
System ; System . Collections . Generic ; System . ComponentModel ; System . Data ; System . Drawing ; System . Text ; System . Windows . Forms ;
namespace W indow sApp li ca ti on { public partial class Form1 : Form { public Form1 () { I n it i a li z e C om p o ne n t (); } } } 32 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Form1.Designer.cs namespace W i n d o w s A p p l i c a t io n { partial class Form1 { private System . C om pon en tM od el . IContainer components = null ; protected override void Dispose ( bool disposing ) { if ( disposing && ( components != null )) { components . Dispose (); } base . Dispose ( disposing ); } private void I n i t i a l i z e C o m p o n e n t () { 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 . U s e V i s u a l S t y l e B a c k C o l o r = true ; // // Form1 // this . A u t o S c a l e D i m e n s i o n s = new System . Drawing . SizeF (6 F , 13 F ); 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 ; } }
33 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Form1.cs [Design]
34 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Validace vstupů
I I
Účelem validace je zamezit uživateli zadávat nepředloženosti Koncept je jednoduchý I
I
problém s křížovou kontrolou
S validacemi být opatrný I I
málo omezení – obtěžuje uživatele moc omezení – obtěžuje ještě víc
35 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Vlastnost CauseValidation
I
Vyvolá událost Validating u předchozí kontrolky I
I
ukázka chování. . .
Doporučení: Nekombinovat různá nastavení CausesValidation, pokud přesně nevíte co děláte I
např. tlačítko Help
36 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Událost Validating a Validated
I
Událost Validating I I I
I
při validaci kontrolky možnost zrušit validaci e.cancel = true při zrušení validace zůstane focus na kontrolce
Událost Validated I
při úspešné validaci
37 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Jak reagovat?
I
Příliš validace - obtěžuje uživatele I I I
I
zrušení validace - používat výjimečně message boxy pro každou kontrolku - používat výjimečně pozor na validaci na sobě závislých kontrolek
Málo validace - obtěžuje uživatele I I
pád programu? uložení neplatných dat?
38 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Třída ErrorProvider I
Upozornit na chybný vstup nenásilně během zadávání
I
Nenechat potvrdit chybně zadaná data až na konci zadávání Třída ErrorProvider
I
I I
umožňuje zobrazení chyby asociované s kontrolkou metoda SetError(object, string) I I
nastaví indikaci chyby u konkrétní kontrolky zruší indikaci chyby u konkrétní kontrolky (prázdný řetězec)
39 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Třída ToolTip I
Umožňuje rychle informovat uživatele o funkci kontrolky
I
Jeden Tooltip funguje pro více objektů
I
Na formuláři může být více ToolTipů Zobrazení ToolTipu
I
I
I
propagace od nejvíc zanořené kontrolky až po kontrolku, která má tooltip definovaný
Metoda SetToolTip(object, string) I I
k objektu přiřadí popisek možnost zadat v designeru
40 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Chování ToolTipu
I
Časy I I I I
I
ShowAlways I
I
InitialDelay - doba než se zobrazí (500) ReshowDelay - doba než se zobrazí jiný (100) AutoPopDelay - doba než zmizí (5000) vše v milisekundách určuje zda se má Tooltip zobrazovat i když kontrolka nemá focus
Active I
zapíná/vypíná tooltipy u skupiny kontrolek
41 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Menu
I
Vhodný návrh menu I
I
dodržení standardního rozmístění
Každý form může mít právě jedno hlavní menu I I
instance třídy MainMenu přiřazuje se do property Menu
42 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Položky menu
I
Třída MenuItem I I
společná třída pro položku menu i pro vnořená menu property Text I I
I
text položky dohoda: pokud spouští dialog, zapíše se za text ”...”
Položky se přiřazují do kolekce MenuItems
43 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Klávesové zkratky
I
V MainMenu I I
I
do property Text stačí přidat před příslušné písmeno znak & stiskem Alt + písmeno se příslušné menu rozbalí
V MenuItem I I
do property Text přidat před příslušné písmeno znak & do property ShortCut zapsat příslušnou klávesovou zkratku (CtrlO, F3 . . . )
44 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Příklad MainMenu mainMenu = new MainMenu (); this . Menu = mainMenu ; MenuItem mi1 = new MenuItem ( " & File " ); MenuItem mi2 = new MenuItem ( " & Help " ); mainMenu . MenuItems . Add ( mi1 ); mainMenu . MenuItems . Add ( mi2 ); MenuItem mi3 = new MenuItem ( " Open " ); MenuItem mi4 = new MenuItem ( " & Save ... " ); MenuItem mi5 = new MenuItem ( " -" ); MenuItem mi6 = new MenuItem ( " E & xit " ); mi6 . Shortcut = Shortcut . CtrlX ; mi1 . MenuItems . Add ( mi3 ); mi1 . MenuItems . Add ( mi4 ); mi1 . MenuItems . Add ( mi5 ); mi1 . MenuItems . Add ( mi6 ); MenuItem mi7 = new MenuItem ( " About ... " ); mi2 . MenuItems . Add ( mi7 ); MenuItem mi8 = new MenuItem ( " & Door ... " ); MenuItem mi9 = new MenuItem ( " & Window ... " ); MenuItem mi10 = new MenuItem ( " File ... " ); mi3 . MenuItems . Add ( mi8 ); mi3 . MenuItems . Add ( mi9 ); mi3 . MenuItems . Add ( mi10 );
45 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Kontextové menu
I
Třída ContextMenu I I I
I
funguje podobně jako MainMenu umožňuje přidávat položky MenuItem nefungují klávesové zkratky
Property ContextMenu u kontrolek I I I
přiřazení kontextového menu kontrolce zobrazí se kontextové menu nejzanořenější kontrolky některé kontrolky mají vlastní kontextové menu, které je možné nahradit (např. TextBox)
46 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Další vlastnosti menu
I
Property Enabled I
I
Property Checked I
I
zaškrtávací položka
Property RadioCheck I I
I
umožnuje znepřístupnit části menu
přepínač chování nutné dopsat ručně
Property DefaultItem I
po dvoukliku na podmenu se spustí default položka
47 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Události menu
I
Událost Click I
I
Událost Popup I I
I
při kliknutí na položku před zobrazením podmenu např. možnost vypnout některé volby
Událost Select I I
když je položka vybraná např. přeorganizování menu podle návštěvnosti
48 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Co nového v .NET 2.0
I
Nové třídy MenuStrip a ContextMenuStrip I
rozšiřují chování původních menu I I I I
I
I
ikonky možnost dokování (i na strany) možnost nastavení směru textu možnost vkládání i jiných prvků (např. ComboBox)
v designeru možnost vygenerovat standardní položky
Třída ToolStripControlHost I
umí hostovat libovolnou kontrolku, kterou lze pak přidat do menu
49 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Co nového v .NET 2.0
I
Nové třídy MenuStrip a ContextMenuStrip I
rozšiřují chování původních menu I I I I
I
I
ikonky možnost dokování (i na strany) možnost nastavení směru textu možnost vkládání i jiných prvků (např. ComboBox)
v designeru možnost vygenerovat standardní položky
Třída ToolStripControlHost I
umí hostovat libovolnou kontrolku, kterou lze pak přidat do menu
49 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Standardní dialogy
I
Dialogy systému windows I I
I
lokalizované běžně používané (uživatel je zná)
Nejsou potomci třídy Forms, ale CommonDialog I I
spuštění metodou ShowDialog návratová hodnota DialogResult
50 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
ColorDialog I I
Standardní dialog pro výběr barev Vlastnosti I
I
Color Color I vybraná barva bool AllowFullOpen I umožňuje vybrat uživatelské barvy
51 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Open/SaveFileDialog
I I
Standardní dialog pro výběr jména souboru pro otevření/uzavření Property string FileName I
I
Property bool MultiSelect I
I
vybraný soubor (i při stisku tlačítka Storno) umožňuje výběr více souborů
Property string[] FileNames I
pole názvů vybraných souborů při multiselect
52 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Open/SaveFileDialog I
Property string Filter I I I I
dvojice popisek|maska více přípon odděleno ”;” např. "text (*.txt;*.rtf)|*.txt;*.rtf|latex (*.tex)|*.tex" pokud není přípona zřejmá, je vhodné ji uvést v popisku
53 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
FolderBrowserDialog I I
Standardní dialog pro výběr adresáře Property string SelectedPath I
I
vybraná cesta
Property string Description I
popiska nad adresářovým stromem
54 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
FontDialog I
Standardní dialog pro výběr fontu Property Font Font
I
Property ShowColor/Effect
I
I
I
vybraný font jaká nastavení se mají zobrazit
55 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
PageSetupDialog I I
Standardní dialog pro nastavení vzhledu stránky Property PrintDocument Document I I
dokument, který se bude tisknout nutno přiřadit, jinak se při ShowDialog vyhodí výjimka
56 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
PrintDialog I
Standardní dialog pro nastavení tisku
I
Property PrintDocument Document Property bool AllowCurrentPage/SomePage...
I
I
možnost nastavení rozsahu tisku
57 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
PrintPreviewDialog
I
Standardní dialog pro zobrazení náhledu tisku
I
Property PrintDocument Document
58 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Uživatelské dialogy I
Formulář vyvolat metodou ShowDialog
I
Styl rámečků FixedDialog
I
U tlačítek nastavit hodnoty DialogResult
I
Data se předávají pomocí public vlastností
59 / 60
Úvod Windows forms Formuláře Kontrolky Prostředí Validace vstupů ToolTipy Menu Standardní dialogy Konec
Konec
60 / 60