1 / 27

Win Forms

Win Forms. Slide od Martin Osovsk ý. Validace dat. pro správné použití dialogu je nutné data před nastavením DialogResult u na OK validovat, aby bylo na obsah příslušných vlastností spolehnutí každý ovládací prvek má událost Validating , v jejímž handleru se provede validace

owen
Download Presentation

Win Forms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Win Forms Slide od Martin Osovský

  2. Validace dat pro správné použití dialogu je nutné data před nastavením DialogResultu na OK validovat, aby bylo na obsah příslušných vlastností spolehnutí každý ovládací prvek má událost Validating, v jejímž handleru se provede validace událost Validating se vyvolá, když má prvek nastavenu vlastnost CausesValidation na true a ztratí fokus ve prospěch prvku se stejným nastavením handler má parametr typu CancelEventArgs, jejíž vlastnost Cancel se při neúspěchu nastaví na true pokud se validace povede, vyvolá se událost Validated

  3. Validace dat • vložená data v ovládacím prvku se obvykle zkontrolují pomocí regulárního výrazu (metoda IsMatch) • je možno použít prvek MaskedTextBox, který má ve vlastnosti Mask řetězec s požadovaným formátem, ze jehož znaky se zobrazí nápovědné znaky, např. 00->L<LL-0000: 12-Jan-1997 (__-___-____)

  4. Validace dat na formuláři může být komponenta ErrorProvider, která umožňuje informovat uživatele o chybě metoda SetError má parametr typu komponenta, jejíž hodnotu se nepodařilo nastavit a řetězec když je třeba kontolovat více ovládacích prvků, použije se kontejnerový prvek jako třeba GroupBox

  5. Validace dat validaci lze uměle vyvolat pomocí metod formuláře Validate a ValidateChildren ValidateChildren má parametr, který umožňuje omezit, které druhy ovládacích prvků se mají validovat vlastnost AutoValidate umožňuje nastavit, aby se validovalo pouze po zavolání těchto metod (a nikoliv, když ovládací prvky ztratí fokus) hodnotou AutoValidate.EnableAllowFocusChange

  6. Kreslení podporu kreslení zajišťují třídy ze jmenného prostoru System.Drawing základní třídou je třída Graphics ke kreslení na formulář je nutno si vyžádat instanci třídy Graphics voláním metody CreateGraphics

  7. Událost Paint • aby se nakreslené objekty správně překreslovaly při změnách formuláře je třeba kreslení provádět v obsluze události Paint • událost Paint se vyvolá vždy, když se formuláš překresluje • lze ji vyvolat v programu metodami Invalidate, Update nebo Refresh • voláním metody SetStyle formuláře s parametrem ControlStyles.ResizeDraw lze zařídit, aby obrázek s formulářem měnil i velikost (událost Paint se vyvolá i při přesunu)

  8. Barvy, štětce, pera ... • barvy jsou reprezentovány strukturou Color, která obsahuje • statické vlastnosti pro známé barvy (YellowGreen) • metody pro vytváření barev pomocí různých reprezentací (např. FromArgb) • metoda FromKnownColor s enumem KnownColors (systémové barvy, např. Highlight) • třída SystemColors

  9. Štětce (brushes) • štětce slouží k vyplňování uzavřených objektů barvami, bitmapami nebo vzory • různé druhy reprezentované různými třídami • SolidBrush: inicializován barvou • TextureBrush: inicializován bitmapou (objekt Bitmap) • HatchBrush: inicializován některým dvoubarevným vzorem (typ HatchStyle) a dvěma barvami • LinearGradientBrush: plynulý přechod mezi dvěma barvami • PathGradientBrush: přechod podél cesty

  10. Pera (pens) • kreslení čar, polygonů a tvarů • je možno nastavovat celou řadu vlastností jako • štětec (Brush) • konce čar (EndCap, StartCap) • čárování nebo čerchování (DashStyle, DashPattern) • zarovnání, spoje a podobně

  11. Cesty a tvary • tvary se kreslí pomocí metod třídy Graphics • metody DrawXXX: nakreslí příslušný tvar nevyplněný • metody FillXXX: nakreslí tvar, který je možno vyplnit vyplněný příslušným štětcem • k disposici jsou například tvary Arc, Bezier, Curve, Lines (neuzavřené) a Ellipse, Rectangle, Polygon, Pie a ClosedCurve (uzavřené) • kreslí se na základě nejrůznějších specifických vlastností

  12. Cesty • cesta, objekt typu GraphicsPath je v podstatě kontejner pro jednu nebo více podcest (uzavřený tvar nebo posloupnost spojených čar či oblouků) • připomíná Graphics, ale • není možné do ní kreslit na jakékoliv pozice • je nutno ji vykreslit na objekt Graphics metodou DrawPath (nemá vlastní vykreslovací prostor) • tvary se do ní přidávají metodami tvaru AddXXX • metody StartFigure a CloseFigure

  13. Obrázky jsou reprezentovány zejména třídou System.Drawing.Image instanci této třídy je možné vytvořit například statickou metodou FromFile obrázek lze vykreslit metodou DrawImage třídy Graphics této metodě je možné předávat parametry, které obrázek vykreslí nějak transformovaný (do nějakého tvaru, zvětšený nebo zmenšený ap.) nějaké transformace je také možné provádět přímo na obrázku (metoda RotateFlip aj.)

  14. Fonty, řetězce kreslení řetězců se provádí metodou DrawString té se předá řetězec, třída reprezentující font, štětec a nakonec poloha textu fonty jsou reprezentovány třídou FontFamily (např. Times New Roman), jednotlivé konkrétní tvary (jako TMR bold 10b) pak třídou Font

  15. Data binding • některé ovládací prvky zobrazují data uložená v jiných objektech • data lze zobrazovat automaticky pomocí spojování prvků s datovými zdroji (data sources) • spojovat lze • vlastnosti ovládacích prvků sjednoduchými složkami zdrojů (objektů): simple binding • nebo ovládací prvky s kolekcemi: complex binding • jednostranně nebo oboustranně

  16. Simple binding • každý ovládací prvek obsahuje kolekci objektů typu Binding, které obsahují vazbu některé jejich vlastnosti ke složce nějakého objektu • tato kolekce je ve vlastnosti DataBindings • třída Binding má konstruktor se třemi parametry • jméno vlastnosti ovládacího prvku (Property) • referenci na objekt zroje (DataSource) • tzv. navigation path ke složce zdroje (DataMember)

  17. Simple binding • navigation path je řetězec jmen oddělených tečkou • představuje složku nebo vlastnost zdroje, případně, složku objektu, který je obsažen v dané složce atd. “Stars.Planets.Moons.Mass” • je-li zdrojem například DataSet, může to být jméno tabulky a jméno sloupce “Products.ProductName”

  18. Simple Binding • pokud je zdrojem kolekce, je prvek svázán se složkou jednoho objektem v kolekci • formulář má složku BindingContext, která pro každou vazbu obsahuje objekt odvozený od typu BindingManagerBase • CurrencyManager: obaluje skutečný zdroj, vrací jeden prvek a umožňuje mezi prvky přecházet • PropertyManager: pokud zdroj není kolekce, obsahuje prostě příslušný objekt

  19. Binding Context • CurrencyManager • má složku Position: index aktuálního objektu • Count: celkový počet • Current • AddNew • dá se získat z vlastnosti BindingContext pomocí indexeru, který má za parametr zdroj dat, případně navigation path ke složce • ke každé kolekci je jenom jeden kontext

  20. Complex binding • některé ovládací prvky mohou být propojeny s kolekcí (ListBox, ComboBox, DataGridView), za tím účelem mají speciální složky • DataSource: objekt kolekce • DisplayMember: složka prvku kolekce, která se má zobrazit • ValueMember: hodnota, která je svázána s vybranou položkou (SelectedValue)

  21. Complex binding běžné kolekce nepodporují notifikace o změnách v kolekci, což způsobuje, že se tyto změny neprojevují na provázaných komponentách IBindingList a IBindingList<T>: rozhraní umožňující obousměrnou vazbu BindingSource: komponenta, která umožňuje zapouzdřit již existující kolekci

  22. DataGridView • tabulková komponenta pro zobrazování dat • objekt nesoucí data se k ní přiřadí vlastností DataSource, resp. DataMember • může zobrazovat data z • pole • DataTable, DataView • DataSet, DataViewManager • IList, IListSource • jakákoliv generická kolekce

  23. Poznámky k DataGridView u pole je se v tabulce zobrazí první vlastnost každé položky (délka u řetězců!) u tabulky v DataSetu je se DataSource nastaví na dataset a DataMember na jméno tabulky umí navigovat přes relace v datasetu složky, které nechceme zobrazovat u generických kolekcí je možno označit atributem [Browsable(False)]

  24. DataGridView sloupce se dají vytvořit automaticky podle jmen a datových typů položek prvků datového zdroje nebo se dají vytvořit ručně pomocí tříd dědících od třídy DataGridViewColumn a jejich vlastností (např. DataGridViewButtonColumn) sloupce jsou ve vlastnosti Columns třídy DataGridView

  25. Vícevláknová rozhraní • dlouho trvající blokující operace mohou způsobit nepříjemné zablokování aplikace • řešení je přesunout tyto operace z UI vlákna aplikace do tzv. pracovního vlákna • pracovní vlákno, ale nemůže přistupovat přímo k prvkům uživatelského rozhraní • řešením je použít thread-save metody třídy Form • Invoke, BeginInvoke, EndInvoke • CreateGraphics

  26. Vícevláknová rozhraní • existuje pomocná komponenta BackgroundWorker • metoda RunWorkerAsync: inicializuje a spustí příslušnou operaci • delegáti (události) • DoWork • ProgressChanged • RunWorkerCompleted

  27. Vícevláknová rozhraní komunikace s UI vláknem se provádí metodou ReportProgress (jen když je vlastnost WorkerReportsProgress na true) zavolání této metody vyvolá událost, na niž je možno v UI vlákně reagovat, předaná informace (číslo nebo jakýkoliv objekt) je ve vlastnosti UserState nebo ProgressPercentage třídy ProgressChangedEventArgs

More Related