Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Amikor a felhasználók adatokat írnak be az alkalmazásba, ellenőrizheti, hogy az adatok érvényesek-e, mielőtt az alkalmazás felhasználja őket. Előfordulhat, hogy bizonyos szövegmezők nem lehetnek nulla hosszúságúak, hogy egy mező telefonszámként legyen formázva, vagy hogy egy sztring ne tartalmazzon érvénytelen karaktereket. A Windows Forms számos módot kínál a bemenetek alkalmazásbeli ellenőrzésére.
Maszkolt szövegdoboz-vezérlő
Ha azt szeretné, hogy a felhasználók jól meghatározott formátumban, például telefonszámként vagy cikkszámként adjanak meg adatokat, ezt gyorsan és minimális kóddal is elvégezheti a MaskedTextBox vezérlő használatával. A maszk egy karakterlánc, amely egy maszkoló nyelvből származó karaktereket tartalmaz, és meghatározza, hogy mely karakterek írhatók be a szövegmező tetszőleges pozíciójába. A vezérlő a felhasználónak adott kéréseket jelenít meg. Ha a felhasználó helytelen bejegyzést ír be, például ha számjegyre van szükség, a vezérlő automatikusan elutasítja a bemenetet.
A MaskedTextBox által használt maszkoló nyelv rugalmas. Lehetővé teszi a szükséges karakterek, választható karakterek, literális karakterek, például kötőjelek és zárójelek, pénznemkarakterek és dátumelválasztók megadását. A vezérlő akkor is jól működik, ha adatforráshoz van kötve. Az adatkötés Format eseménye használható a bejövő adatok maszkkal való újraformálására, a Parse esemény pedig a kimenő adatok újraformázására az adatmező specifikációinak megfelelően.
Eseményvezérelt érvényesítés
Ha teljes programozott ellenőrzést szeretne az ellenőrzés felett, vagy összetett ellenőrzési ellenőrzésekre van szüksége, akkor a Legtöbb Windows Forms-vezérlőbe beépített érvényesítési eseményeket kell használnia. Minden szabad formátumú felhasználói bemenetet elfogadó vezérlő olyan eseményt tartalmaz Validating , amely akkor lép fel, amikor a vezérlő adatérvényesítést igényel. Validating Az eseménykezelő kódban több módon is ellenőrizheti a felhasználói bemenetet. Ha például egy irányítószámot tartalmazó szövegmezővel rendelkezik, az ellenőrzést a következő módokon végezheti el:
Ha az irányítószámnak egy adott irányítószámcsoporthoz kell tartoznia, sztring-összehasonlítást végezhet a bemeneten a felhasználó által megadott adatok ellenőrzéséhez. Ha például az irányítószámnak a
{10001, 10002, 10003}halmazban kell lennie, akkor szövegösszehasonlítással ellenőrizheti az adatokat.Ha az irányítószámnak egy adott formában kell lennie, a felhasználó által megadott adatok ellenőrzéséhez használhat reguláris kifejezéseket. Például az űrlap
#####vagy#####-####ellenőrzéséhez használhatja a^(\d{5})(-\d{4})?$reguláris kifejezést. Az űrlapA#A #A#ellenőrzéséhez használhatja a[A-Z]\d[A-Z] \d[A-Z]\dreguláris kifejezést. A reguláris kifejezésekről további információt .NET reguláris kifejezések és Reguláris kifejezés példákcímű témakörben talál.Ha az irányítószámnak érvényes egyesült államokbeli irányítószámnak kell lennie, meghívhat egy irányítószám webszolgáltatást, amely ellenőrzi a felhasználó által megadott adatokat.
A Validating esemény egy CancelEventArgstípusú objektumot ad meg. Ha megállapítja, hogy a vezérlő adatai érvénytelenek, az objektum Validating tulajdonságának Cancelbeállításával megszakíthatja a true eseményt. Ha nem állítja be a Cancel tulajdonságot, a Windows Forms feltételezi, hogy a vezérlő érvényesítése sikeres volt, és aktiválja a(z) Validated eseményt.
Egy TextBox-ben található e-mail-cím érvényesítésére szolgáló kódpéldáért tekintse meg a Validating esemény hivatkozására.
Eseményvezérelt érvényesítési adatokhoz kötött vezérlők
Az ellenőrzés akkor hasznos, ha a vezérlőket adatforráshoz, például adatbázistáblához kötötte. Az ellenőrzés használatával meggyőződhet arról, hogy a vezérlő adatai megfelelnek az adatforrás által megkövetelt formátumnak, és hogy nem tartalmaznak olyan speciális karaktereket, mint az idézőjelek és a fordított perjelek, amelyek esetleg nem biztonságosak.
Adatkötés használatakor a vezérlőben lévő adatok szinkronizálódnak az adatforrással a Validating esemény végrehajtása során. Ha megszakítja a Validating eseményt, az adatok nem lesznek szinkronizálva az adatforrással.
Fontos
Ha egyéni ellenőrzéssel rendelkezik, amely a Validating esemény után történik, az nem befolyásolja az adatkötést. Ha például egy Validated esemény kódja megkísérli megszakítani az adatkötést, az adatkötés továbbra is megtörténik. Ebben az esetben az ellenőrzés Validated eseményben való végrehajtásához módosítsa a vezérlő Binding.DataSourceUpdateMode tulajdonságát DataSourceUpdateMode.OnValidation-ről DataSourceUpdateMode.Never-ra, és adjon hozzá your-control.DataBindings["field-name"].WriteValue() az érvényesítési kódhoz.
Implicit és explicit ellenőrzés
Mikor ellenőrzik a vezérlők adatait? Ez önön múlik, a fejlesztőn. Az alkalmazás igényeitől függően implicit vagy explicit érvényesítést is használhat.
Implicit érvényesítés
Az implicit érvényesítési módszer ellenőrzi az adatokat, amikor a felhasználó belép. Ellenőrizze az adatokat úgy, hogy beolvassa a billentyűket a lenyomáskor, vagy gyakrabban, amikor a felhasználó eltávolítja a beviteli fókuszt a vezérlőből. Ez a módszer akkor hasznos, ha azonnal szeretne visszajelzést adni a felhasználónak az adatokról, miközben dolgoznak.
Ha implicit érvényesítést szeretne használni egy vezérlőelemhez, a vezérlő AutoValidate tulajdonságát EnablePreventFocusChange vagy EnableAllowFocusChangeértékre kell állítania. Ha megszakítja a Validating eseményt, a vezérlő viselkedését a AutoValidatehozzárendelt érték határozza meg. Ha hozzárendelte EnablePreventFocusChange, az esemény megszakítása megakadályozza az Validated esemény bekövetkezését. A bemeneti fókusz az aktuális vezérlőn marad, amíg a felhasználó érvényes formátumra nem módosítja az adatokat. Ha a EnableAllowFocusChange-hoz rendelte, a Validated esemény nem fog bekövetkezni, amikor lemondja az eseményt, de a fókusz továbbra is a következő vezérlőre fog áttérni.
A Disable hozzárendelése a AutoValidate tulajdonsághoz teljesen megakadályozza az implicit érvényesítést. A vezérlők érvényesítéséhez használjon explicit érvényesítést.
Kifejezett érvényesítés
Az explicit érvényesítési módszer egyszerre ellenőrzi az adatokat. Az adatokat egy felhasználói műveletre válaszul ellenőrizheti, például egy Mentés gombra vagy egy Következő hivatkozásra kattintva. A felhasználói művelet végrehajtásakor az alábbi módok egyikével aktiválhat explicit ellenőrzést:
- Hívja meg a Validate kódot az utolsó vezérlő érvényesítéséhez, amely elvesztette a fókuszt.
- Az ValidateChildren utasítást hívja meg az űrlap vagy tároló típusú vezérlő összes gyermekvezérlőjének ellenőrzéséhez.
- Egyéni metódus meghívása a vezérlők adatainak manuális ellenőrzéséhez.
A vezérlők alapértelmezett implicit érvényesítési viselkedése
A Különböző Windows Forms-vezérlők eltérő alapértelmezett értékekkel rendelkeznek a AutoValidate tulajdonságukhoz. Az alábbi táblázat a leggyakoribb vezérlőket és azok alapértelmezett beállításait mutatja be.
| Vezérlő | Alapértelmezett érvényesítési viselkedés |
|---|---|
| ContainerControl | Inherit |
| Form | EnableAllowFocusChange |
| PropertyGrid | A tulajdonság nem érhető el a Visual Studióban |
| ToolStripContainer | A tulajdonság nem érhető el a Visual Studióban |
| SplitContainer | Inherit |
| UserControl | EnableAllowFocusChange |
Az űrlap bezárása és az ellenőrzés felülírása
Ha egy vezérlő azért tartja a fókuszt, mert a benne lévő adatok érvénytelenek, lehetetlen bezárni a szülőűrlapot az egyik szokásos módon:
- Kattintson a Bezárás gombra.
- A System>Close menü kiválasztásával.
- A Close metódus programozottan történő meghívásával.
Bizonyos esetekben azonban érdemes lehet engedélyezni, hogy a felhasználó bezárja az űrlapot, függetlenül attól, hogy a vezérlők értékei érvényesek-e. Felülbírálhatja az ellenőrzést, és bezárhat egy olyan űrlapot, amely továbbra is érvénytelen adatokat tartalmaz, ha létrehoz egy kezelőt az űrlap FormClosing eseményéhez. Ebben az esetben állítsa a Cancel tulajdonságot falseértékre. Ez bezárásra kényszeríti az űrlapot. További információ és példa: Form.FormClosing.
Megjegyzés:
Ha így kényszeríti az űrlap bezárását, a nem mentett adatok elvesznek. Emellett a modális űrlapok nem ellenőrzik a vezérlők tartalmát, ha bezárva vannak. A vezérlőelem-ellenőrzéssel továbbra is zárolhatja a vezérlő fókuszát, de az űrlap bezárásával kapcsolatos viselkedés miatt nincs szükség aggódásra.
Lásd még
.NET Desktop feedback