Csharp/C Sharp/GUI Windows Form/Validation

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Error Provider to validate the text in a TextBox

<source lang="csharp">

 using System;
 using System.Drawing;
 using System.Collections;
 using System.ruponentModel;
 using System.Windows.Forms;
 using System.Data;
 public class ErrorForm : System.Windows.Forms.Form
 {
   private System.Windows.Forms.Label label1;
   private System.Windows.Forms.Button btnValidate;
   private System.Windows.Forms.ErrorProvider errorProvider1;
   private System.Windows.Forms.TextBox txtInput;
   public ErrorForm()
   {
     InitializeComponent();
     CenterToScreen();
   }
   private void InitializeComponent()
   {
     this.errorProvider1 = new System.Windows.Forms.ErrorProvider();
     this.label1 = new System.Windows.Forms.Label();
     this.txtInput = new System.Windows.Forms.TextBox();
     this.btnValidate = new System.Windows.Forms.Button();
     this.SuspendLayout();
     // 
     // errorProvider1
     // 
     this.errorProvider1.BlinkRate = 500;
     this.errorProvider1.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.AlwaysBlink;
     // 
     // label1
     // 
     this.label1.Location = new System.Drawing.Point(8, 8);
     this.label1.Name = "label1";
     this.label1.Size = new System.Drawing.Size(376, 56);
     this.label1.TabIndex = 2;
     this.label1.Text = "The following text box only allows 5 characters.";
     // 
     // txtInput
     // 
     this.txtInput.Location = new System.Drawing.Point(144, 80);
     this.txtInput.Name = "txtInput";
     this.txtInput.Size = new System.Drawing.Size(120, 20);
     this.txtInput.TabIndex = 0;
     this.txtInput.Text = "";
     this.txtInput.Validating += new System.ruponentModel.CancelEventHandler(this.txtInput_Validating);
     // 
     // btnValidate
     // 
     this.btnValidate.Location = new System.Drawing.Point(16, 72);
     this.btnValidate.Name = "btnValidate";
     this.btnValidate.Size = new System.Drawing.Size(112, 32);
     this.btnValidate.TabIndex = 1;
     this.btnValidate.Text = "OK";
     // 
     // ErrorForm
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(400, 125);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                     this.label1,
                                     this.btnValidate,
                                     this.txtInput});
     this.Name = "ErrorForm";
     this.Text = "Error Trapper";
     this.ResumeLayout(false);
   }
   static void Main() 
   {
     Application.Run(new ErrorForm());
   }
   private void txtInput_Validating(object sender, System.ruponentModel.CancelEventArgs e)
   {
     if(txtInput.Text.ToString().Length > 5) {
       errorProvider1.SetError( txtInput, "Can"t be greater than 5!");
     } 
     else{
       errorProvider1.SetError(txtInput, "");
       }
   }
 }
          
      </source>


TextBox value validation Demo

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data;

 public class Form1 : System.Windows.Forms.Form
 {
   private System.Windows.Forms.Label lblName;
   private System.Windows.Forms.Label lblAddress;
   private System.Windows.Forms.Label lblOccupation;
   private System.Windows.Forms.Label lblAge;
   private System.Windows.Forms.Button btnOK;
   private System.Windows.Forms.Button btnHelp;
   private System.Windows.Forms.TextBox txtName;
   private System.Windows.Forms.TextBox txtAddress;
   private System.Windows.Forms.TextBox txtOccupation;
   private System.Windows.Forms.TextBox txtAge;
   public Form1()
   {
     InitializeComponent();
     this.btnOK.Enabled = false;
     this.txtAddress.Tag = false;
     this.txtAge.Tag = false;
     this.txtName.Tag = false;
     this.txtOccupation.Tag = false;
     this.txtName.Validating += new System.ruponentModel.CancelEventHandler(this.txtBoxEmpty_Validating);
     this.txtAddress.Validating += new System.ruponentModel.CancelEventHandler(this.txtBoxEmpty_Validating);
     this.txtOccupation.Validating += new System.ruponentModel.CancelEventHandler(this.txtOccupation_Validating);
     this.txtAge.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtAge_KeyPress);
     this.txtAge.Validating += new System.ruponentModel.CancelEventHandler(this.txtBoxEmpty_Validating);
     this.txtName.TextChanged += new System.EventHandler(this.txtBox_TextChanged);
     this.txtAddress.TextChanged += new System.EventHandler(this.txtBox_TextChanged);
     this.txtAge.TextChanged += new System.EventHandler(this.txtBox_TextChanged);
     this.txtOccupation.TextChanged += new System.EventHandler(this.txtBox_TextChanged);
   }
   private void InitializeComponent()
   {
     this.lblName = new System.Windows.Forms.Label();
     this.txtName = new System.Windows.Forms.TextBox();
     this.lblAge = new System.Windows.Forms.Label();
     this.btnOK = new System.Windows.Forms.Button();
     this.txtAge = new System.Windows.Forms.TextBox();
     this.txtAddress = new System.Windows.Forms.TextBox();
     this.lblAddress = new System.Windows.Forms.Label();
     this.lblOccupation = new System.Windows.Forms.Label();
     this.txtOccupation = new System.Windows.Forms.TextBox();
     this.btnHelp = new System.Windows.Forms.Button();
     this.SuspendLayout();
     // 
     // lblName
     // 
     this.lblName.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left);
     this.lblName.Location = new System.Drawing.Point(8, 16);
     this.lblName.Name = "lblName";
     this.lblName.Size = new System.Drawing.Size(92, 23);
     this.lblName.TabIndex = 0;
     this.lblName.Text = "Name";
     // 
     // txtName
     // 
     this.txtName.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.txtName.Location = new System.Drawing.Point(112, 16);
     this.txtName.Name = "txtName";
     this.txtName.Size = new System.Drawing.Size(176, 20);
     this.txtName.TabIndex = 5;
     this.txtName.Text = "";
     // 
     // lblAge
     // 
     this.lblAge.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left);
     this.lblAge.Location = new System.Drawing.Point(8, 144);
     this.lblAge.Name = "lblAge";
     this.lblAge.Size = new System.Drawing.Size(92, 23);
     this.lblAge.TabIndex = 3;
     this.lblAge.Text = "Age";
     // 
     // btnOK
     // 
     this.btnOK.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
     this.btnOK.Location = new System.Drawing.Point(296, 16);
     this.btnOK.Name = "btnOK";
     this.btnOK.TabIndex = 10;
     this.btnOK.Text = "OK";
     this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
     // 
     // txtAge
     // 
     this.txtAge.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.txtAge.Location = new System.Drawing.Point(112, 136);
     this.txtAge.Name = "txtAge";
     this.txtAge.Size = new System.Drawing.Size(176, 20);
     this.txtAge.TabIndex = 8;
     this.txtAge.Text = "";
     // 
     // txtAddress
     // 
     this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.txtAddress.Location = new System.Drawing.Point(112, 40);
     this.txtAddress.Multiline = true;
     this.txtAddress.Name = "txtAddress";
     this.txtAddress.ScrollBars = System.Windows.Forms.ScrollBars.Both;
     this.txtAddress.Size = new System.Drawing.Size(176, 72);
     this.txtAddress.TabIndex = 6;
     this.txtAddress.Text = "";
     // 
     // lblAddress
     // 
     this.lblAddress.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left);
     this.lblAddress.Location = new System.Drawing.Point(8, 40);
     this.lblAddress.Name = "lblAddress";
     this.lblAddress.Size = new System.Drawing.Size(92, 23);
     this.lblAddress.TabIndex = 1;
     this.lblAddress.Text = "Address";
     // 
     // lblOccupation
     // 
     this.lblOccupation.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left);
     this.lblOccupation.Location = new System.Drawing.Point(8, 120);
     this.lblOccupation.Name = "lblOccupation";
     this.lblOccupation.Size = new System.Drawing.Size(92, 23);
     this.lblOccupation.TabIndex = 2;
     this.lblOccupation.Text = "Occupation";
     // 
     // txtOccupation
     // 
     this.txtOccupation.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.txtOccupation.Location = new System.Drawing.Point(112, 112);
     this.txtOccupation.Name = "txtOccupation";
     this.txtOccupation.Size = new System.Drawing.Size(176, 20);
     this.txtOccupation.TabIndex = 7;
     this.txtOccupation.Text = "";
     // 
     // btnHelp
     // 
     this.btnHelp.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
     this.btnHelp.CausesValidation = false;
     this.btnHelp.Location = new System.Drawing.Point(296, 48);
     this.btnHelp.Name = "btnHelp";
     this.btnHelp.TabIndex = 11;
     this.btnHelp.Text = "Help";
     this.btnHelp.Click += new System.EventHandler(this.btnHelp_Click);
     // 
     // Form1
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(376, 253);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnHelp,
                                                                      this.btnOK,
                                                                      this.txtAge,
                                                                      this.txtOccupation,
                                    this.txtAddress,
                                    this.txtName,
                                    this.lblAge,
                                    this.lblOccupation,
                                    this.lblAddress,
                                    this.lblName});
     this.MinimumSize = new System.Drawing.Size(384, 280);
     this.Name = "Form1";
     this.Text = "TestBoxTest";
     this.ResumeLayout(false);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void btnOK_Click(object sender, System.EventArgs e)
   {
     string output;
     output = "Name: " + this.txtName.Text + "\r\n";
     output += "Address: " + this.txtAddress.Text + "\r\n";
     output += "Occupation: " + this.txtOccupation.Text + "\r\n";
     output += "Age: " + this.txtAge.Text;
     Console.WriteLine(output);
   }
   private void btnHelp_Click(object sender, System.EventArgs e)
   {
     string output;
     output = "Name = Your name" + "\r\n";
     output += "Address = Your address" + "\r\n";
     output += "Occupation = Only allowed value is "Employee" or empty" + "\r\n";
     output += "Age = Your age";
     Console.WriteLine(output);
   }
   private void txtBoxEmpty_Validating(object sender, System.ruponentModel.CancelEventArgs e)
   {
     TextBox tb;
     tb = (TextBox)sender;
     if (tb.Text.Length == 0)
     {
       tb.BackColor = Color.Red;
       tb.Tag = false;
     }
     else
     {
       tb.BackColor = System.Drawing.SystemColors.Window;
       tb.Tag = true;
     }
     ValidateAll();
   }
   private void ValidateAll()
   {
     this.btnOK.Enabled = ((bool)(this.txtAddress.Tag) &&
       (bool)(this.txtAge.Tag) &&
       (bool)(this.txtName.Tag) &&
       (bool)(this.txtOccupation.Tag));
   }
   private void txtOccupation_Validating(object sender, System.ruponentModel.CancelEventArgs e)
   {
     TextBox tb = (TextBox)sender;
     if (tb.Text.rupareTo("Employee") == 0 || tb.Text.Length == 0)
     {
       tb.Tag = true;
       tb.BackColor = System.Drawing.SystemColors.Window;
     }
     else
     {
       tb.Tag = false;
       tb.BackColor = Color.Red;
     }
     ValidateAll();
   }
   private void txtAge_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
   {
     if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
       e.Handled = true; // Remove the character
   }
   private void txtBox_TextChanged(object sender, System.EventArgs e)
   {
     TextBox tb = (TextBox)sender;
     if (tb.Text.Length == 0 && tb != txtOccupation)
     {
       tb.Tag = false;
       tb.BackColor = Color.Red;
     }
     else if (tb == txtOccupation && (tb.Text.Length != 0 && tb.Text.rupareTo("Employee") != 0))
     {
       tb.Tag = false;
     }
     else
     {
       tb.Tag = true;
       tb.BackColor = SystemColors.Window;
     }
     ValidateAll();
   }
 }


      </source>