рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рд░реВрдкреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд▓рдВрдмрд╛, рдердХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрднреА-рдХрднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Redmont рдХреЗ рд▓реЛрдЧ рд╣рдорд╛рд░рд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣реЗ рд╣реИрдВ,
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реВрдк рд▓реЗрдВ:

рдХрдИ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдлрд╝реАрд▓реНрдб, рдПрдХ рдирдВрдмрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдХ рдИ-рдореЗрд▓ рдлрд╝реАрд▓реНрдб рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ:
рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдо, рдирд╛рдо рдФрд░ рдкреЗрдЯреНрд░реЛрдирд╛рдорд┐рдХ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореБрджреНрд░рд┐рдд (рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдирд╣реАрдВ) рдкреНрд░рддреАрдХ рд╕реЗ рднрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
txtSurname .ValidateControl() .IsNotNullOrWhitespace(); txtName .ValidateControl() .IsNotNullOrWhitespace(); txtMiddleName .ValidateControl() .IsNotNullOrWhitespace();
рдЖрдпреБ рдХрдо рд╕реЗ рдХрдо 16 рд╡рд░реНрд╖ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдпреБ 21 рд╡рд░реНрд╖ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдлреЙрд░реНрдо рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИ:
nmAge .ValidateControl() .IsTrue(ctl => ctl.Value >= 16, " 16 .", ValidationType.Required) .IsTrue(ctl => ctl.Value >= 21, " (21+) .", ValidationType.Optional);
рдИ-рдореЗрд▓ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рд╣реА рдорд╛рди (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдИ-рдореЗрд▓ рдХреЗ рд╕рдорд╛рди) рд╕реЗ рднрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
txtEMail .ValidateControl() .IsValidEMail(false);
рдпрджрд┐ рд╕рднреА рдлрд╝реАрд▓реНрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рднрд░реЗ рд╣реИрдВ - "рд╕рд╣реЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ - рдирд╣реАрдВ:
butSave .ValidateControl() .EnableByValidationResult();
рд╕рд┐рдВрдЧрд▓-рд╢реАрдЯ рдлреЙрд░реНрдо рдХреНрд▓рд╛рд╕ рдХреЛрдб public partial class frmMain : Form { public frmMain() { InitializeComponent();
рдлреЙрд░реНрдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ: рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЧрд▓рдд рдбреЗрдЯрд╛ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реА рдмрд╛рдд: рдпрджрд┐ рдЖрдк рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреЛ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреЙрд░реНрдо рд╣рдорд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ:

рддреАрд╕рд░рд╛: "рд╕рд╣реЗрдЬреЗрдВ" рдмрдЯрди рдХреЗрд╡рд▓ рд╕рдлрд▓ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
рдареАрдХ рд╣реИ, рд╣рдордиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реВрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рд▓реЗрдХрд┐рди рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреНрдпрд╛ рд╣реИ? рдЖрдЗрдП рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╣рдмрд░ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдкреНрд░реЛрдореЗрдкреНрдЯреВ рдЦреЛрдЬ рдлрд╝реЙрд░реНрдо рдХрд░реЗрдВрдЧреЗ:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ, рдЬрдм рдЪрдпрдирд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЪреЗрдХ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд▓рд╕ рд╕рдХреНрд░рд┐рдпрдг рдирд┐рдпрдВрддреНрд░рдг рдЬреЛ рдЪрдпрдирд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдпрдХрд░рдг рд╣рдо рдпрд╣ рдХрд░реЗрдВрдЧреЗ:
// var categoryCheckBoxes = pnlCategories.Controls.Cast<CheckBox>(); // dtBegin.EnableByTimer(() => chkFilterByDate.Checked); dtEnd.EnableByTimer(() => chkFilterByDate.Checked); pnlCategories.EnableByTimer(() => chkFilterByCategory.Checked); pnlTextFilter.EnableByTimer(() => chkFilterByText.Checked);
рдЕрдм рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдоред рдпрджрд┐ рддрд┐рдерд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрдн рддрд┐рдерд┐ рдЕрдВрддрд┐рдо рддрд┐рдерд┐ рд╕реЗ рдХрдо рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрд┐рдерд┐ 1990 рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рддреНрдпрд╛рдкрди рджреЛрдиреЛрдВ DatePickers рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХреЗрдд рдХреЗрд╡рд▓ dtEnd рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
dtEnd .ValidateControl() .IsTrue(ctl => !chkFilterByDate.Checked || dtBegin.Value >= new DateTime(1990, 1, 1), " 1990 ") .IsTrue(ctl => !chkFilterByDate.Checked || dtBegin.Value <= dtEnd.Value, " ");
рдпрджрд┐ рдЖрдк рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╢реНрд░реЗрдгреА рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
pnlCategories .ValidateControl() .IsTrue(ctl => !chkFilterByCategory.Checked || categoryCheckBoxes.Any(c => c.Checked), " ");
рдпрджрд┐ рдЖрдк рдкрд╛рда рдХреА рдЦреЛрдЬ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд╛рда рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдХрд╣рд╛рдБ рджреЗрдЦрдирд╛ рд╣реИ:
pnlTextFilter .ValidateControl() .IsTrue(ctl => !chkFilterByText.Checked || chkSearchTextInBody.Checked || chkSearchTextInHeader.Checked, " ") .IsTrue(ctl => !chkFilterByText.Checked || !string.IsNullOrWhiteSpace(txtSearchText.Text), " ");
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдлрд▓ рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
gbSearchParameters .ValidateControl() .IsTrue(ctl => chkFilterByCategory.Checked || chkFilterByDate.Checked || chkFilterByText.Checked, " .");
рдЦреИрд░, рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдореБрдЦреНрдп рд╕рдХреНрд░рд┐рдп рдмрдЯрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ:
butSearch .ValidateControl() .EnableByValidationResult();
рдлреБрд▓ рд╕реЗрдХрдВрдб рдлреЙрд░реНрдо рдХреЛрдб using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Teleavtomatika.Forms; namespace Teleavtomatika_Form_Validation { public partial class frmMain2 : Form { public frmMain2() { InitializeComponent(); // var categoryCheckBoxes = pnlCategories.Controls.Cast<CheckBox>(); // dtBegin.EnableByTimer(() => chkFilterByDate.Checked); dtEnd.EnableByTimer(() => chkFilterByDate.Checked); pnlCategories.EnableByTimer(() => chkFilterByCategory.Checked); pnlTextFilter.EnableByTimer(() => chkFilterByText.Checked); // : // , // 1990 // DatePicker', dtEnd dtEnd .ValidateControl() .IsTrue(ctl => !chkFilterByDate.Checked || dtBegin.Value >= new DateTime(1990, 1, 1), " 1990 ") .IsTrue(ctl => !chkFilterByDate.Checked || dtBegin.Value <= dtEnd.Value, " "); // // pnlCategories .ValidateControl() .IsTrue(ctl => !chkFilterByCategory.Checked || categoryCheckBoxes.Any(c => c.Checked), " "); // // // pnlTextFilter .ValidateControl() .IsTrue(ctl => !chkFilterByText.Checked || chkSearchTextInBody.Checked || chkSearchTextInHeader.Checked, " ") .IsTrue(ctl => !chkFilterByText.Checked || !string.IsNullOrWhiteSpace(txtSearchText.Text), " "); // - gbSearchParameters .ValidateControl() .IsTrue(ctl => chkFilterByCategory.Checked || chkFilterByDate.Checked || chkFilterByText.Checked, " ."); // "": butSearch .ValidateControl() .EnableByValidationResult(); } } }
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡реАрдбрд┐рдпреЛ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдпрд╣рд╛рдВ рдХреЗ рд╕реВрддреНрд░