Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když uživatelé zadávají data do vaší aplikace, můžete ověřit platnost dat před tím, než je aplikace použije. Je možné požadovat, aby určitá textová pole neměla nulovou délku, aby pole bylo formátováno jako telefonní číslo, nebo aby řetězec neobsahoval neplatné znaky. Windows Forms nabízí několik způsobů, jak ověřit vstup v aplikaci.
MaskedTextBox – ovládací prvek
Pokud potřebujete, aby uživatelé zadali data v dobře definovaném formátu, jako je telefonní číslo nebo číslo části, můžete to provést rychle a s minimálním kódem pomocí ovládacího prvku MaskedTextBox. maska je posloupností znaků z maskovacího jazyka, který určuje, které znaky lze zadat kdekoliv ve vstupním poli. Ovládací prvek zobrazí sadu výzev uživateli. Pokud uživatel zadá nesprávnou položku, například uživatel zadá písmeno, pokud je požadována číslice, ovládací prvek automaticky odmítne vstup.
Jazyk maskování používaný MaskedTextBox je flexibilní. Umožňuje zadat požadované znaky, volitelné znaky, literální znaky, jako jsou spojovníky a závorky, znaky měny a oddělovače kalendářních dat. Ovládací prvek také funguje dobře, když je svázán se zdrojem dat. Událost Format datové vazby lze použít k přeformátování příchozích dat tak, aby byla v souladu s maskou, a událost Parse lze použít k přeformátování odchozích dat tak, aby vyhovovala specifikacím datového pole.
Ověřování řízené událostmi
Pokud chcete mít úplnou programovou kontrolu nad ověřováním nebo potřebujete komplexní ověřovací kontroly, měli byste použít ověřovací události integrované do většiny ovládacích prvků Windows Forms. Každý ovládací prvek, který přijímá vstup uživatele ve volném formuláři, má Validating událost, která se vyvolá pokaždé, když ovládací prvek vyžaduje ověření dat. V kódu obslužné rutiny Validating události můžete ověřit vstup uživatele několika způsoby. Pokud máte například textové pole, které musí obsahovat PSČ, můžete ověření provést následujícími způsoby:
Pokud PSČ musí patřit do konkrétní skupiny PSČ, můžete na vstupu provést porovnání řetězců, abyste ověřili data zadaná uživatelem. Pokud například PSČ musí být v sadě
{10001, 10002, 10003}, můžete k ověření dat použít řetězcové porovnání.Pokud musí být PSČ v určitém formátu, můžete k ověření údajů zadaných uživatelem použít regulární výrazy. Chcete-li například ověřit
#####formuláře nebo#####-####, můžete použít regulární výraz^(\d{5})(-\d{4})?$. K ověřeníA#A #A#formuláře můžete použít regulární výraz[A-Z]\d[A-Z] \d[A-Z]\d. Další informace o regulárních výrazech naleznete v tématu .NET Regulární výrazy a Příklady regulárních výrazů.Pokud poštovní směrovací číslo musí být platným poštovním směrovacím číslem ve Spojených státech, mohli byste zavolat webovou službu poštovního směrovacího čísla k ověření údajů zadaných uživatelem.
Události Validating je přiřazen objekt typu CancelEventArgs. Pokud zjistíte, že data ovládacího prvku nejsou platná, zrušte událost Validating nastavením vlastnosti Cancel tohoto objektu na true. Pokud vlastnost nenastavíte Cancel , Windows Forms předpokládá, že ověření bylo pro tento ovládací prvek úspěšné a vyvolá Validated událost.
Příklad kódu, který ověřuje e-mailovou adresu v TextBox, najdete v Validating odkazu na událost.
Ověřovací ovládací prvky vázané na data řízená událostmi
Ověření je užitečné, když jste svázali ovládací prvky se zdrojem dat, jako je například tabulka databáze. Ověřením můžete zajistit, aby data ovládacího prvku splňovala formát požadovaný zdrojem dat a neobsahuje žádné speciální znaky, jako jsou uvozovky a zpětné lomítka, která by mohla být nebezpečná.
Při použití datové vazby se data ve vašem ovládacím prvku synchronizují se zdrojem dat během provádění události Validating. Pokud zrušíte událost Validating, nebudou se data synchronizovat se zdrojem dat.
Důležité
Pokud máte vlastní ověření, které probíhá po té události Validating, neovlivní to tu datovou vazbu. Pokud například máte kód v události Validated, která se pokusí zrušit datovou vazbu, datová vazba bude stále probíhat. V tomto případě chcete provést ověření v události Validated, změnit vlastnost Binding.DataSourceUpdateMode ovládacího prvku z DataSourceUpdateMode.OnValidation na DataSourceUpdateMode.Nevera přidat your-control.DataBindings["field-name"].WriteValue() do ověřovacího kódu.
Implicitní a explicitní ověřování
Kdy se tedy ověří data ovládacího prvku? To je na vás, vývojáři. V závislosti na potřebách vaší aplikace můžete použít implicitní nebo explicitní ověření.
Implicitní ověřování
Implicitní ověřování ověřuje data při jejich zadávání uživatelem. Ověřte data čtením kláves, které jsou stisknuty, nebo častěji kdykoli, když uživatel přesune zaměření z ovládacího prvku. Tento přístup je užitečný, když chcete uživateli poskytnout okamžitou zpětnou vazbu k datům, když pracují.
Pokud chcete pro ovládací prvek použít implicitní ověřování, je nutné nastavit vlastnost AutoValidate ovládacího prvku na EnablePreventFocusChange nebo EnableAllowFocusChange. Pokud zrušíte událost Validating, bude chování ovládacího prvku určeno hodnotou, kterou jste přiřadili AutoValidate. Pokud jste událost přiřadili EnablePreventFocusChange, zrušení události zabrání výskytu Validated události. Fokus vstupu zůstane na aktuálním ovládacím prvku, dokud uživatel nezmění data na platný formát. Pokud jste přiřadili EnableAllowFocusChange, událost Validated nenastane při zrušení události, ale zaměření se stále změní na další ovládací prvek.
Přiřazení Disable k vlastnosti AutoValidate zcela zabraňuje implicitnímu ověřování. K ověření ovládacích prvků použijte explicitní ověření.
Explicitní ověření
Explicitní přístup k ověřování ověřuje data najednou. Data můžete ověřit v reakci na akci uživatele, například kliknutím na tlačítko Uložit nebo odkazem Další. Když dojde k akci uživatele, můžete explicitní ověření aktivovat jedním z následujících způsobů:
- Voláním Validate ověřte, že poslední ovládací prvek ztratil fokus.
- K ověření všech podřízených ovládacích prvků ve formuláři nebo kontejnerovém ovládacím prvku zavolejte ValidateChildren.
- Voláním vlastní metody ověřte data v ovládacích prvcích ručně.
Výchozí implicitní chování ověřování pro ovládací prvky
Různé ovládací prvky Windows Forms mají pro vlastnost AutoValidate různé výchozí hodnoty. Následující tabulka uvádí nejběžnější ovládací prvky a jejich výchozí hodnoty.
| Řízení | Výchozí chování ověřování |
|---|---|
| ContainerControl | Inherit |
| Form | EnableAllowFocusChange |
| PropertyGrid | Vlastnost není v sadě Visual Studio zpřístupněna |
| ToolStripContainer | Vlastnost není v sadě Visual Studio zpřístupněna |
| SplitContainer | Inherit |
| UserControl | EnableAllowFocusChange |
Zavření formuláře a přepsání ověření
Když ovládací prvek udržuje fokus, protože data, která obsahuje, jsou neplatná, není možné zavřít nadřazený formulář jedním z obvyklých způsobů:
- Kliknutím na tlačítko Zavřít
- Výběrem nabídky System>Zavřít.
- Voláním metody Close programově.
V některých případech ale můžete chtít, aby uživatel zavřel formulář bez ohledu na to, jestli jsou hodnoty v ovládacích prvcích platné. Ověření a zavření formuláře, který stále obsahuje neplatná data, můžete přepsat vytvořením obslužné rutiny pro událost FormClosing formuláře. V případě nastavte vlastnost Cancel na false. Tím vynutíte uzavření formuláře. Další informace a příklad najdete v tématu Form.FormClosing.
Poznámka:
Pokud vynutíte, aby se formulář tímto způsobem zavřel, dojde ke ztrátě neuložených dat. Modální formuláře navíc neověřují obsah ovládacích prvků, když jsou zavřené. Ověřování ovládacích prvků můžete použít k uzamčení fokusu na ovládací prvek, ale nemusíte se zabývat chováním souvisejícím s zavřením formuláře.
Viz také
.NET Desktop feedback