Csharp/CSharp Tutorial/GUI Windows Forms/Validation — различия между версиями

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

Версия 15:31, 26 мая 2010

Validate text box value

using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

   public class Form1 : Form
   {
      public Form1()
      {
         InitializeComponent();
         this.buttonOK.Enabled = false;
         this.textBoxAddress.Tag = false;
         this.textBoxAge.Tag = false;
         this.textBoxName.Tag = false;
         this.textBoxName.Validating += new CancelEventHandler(textBoxEmpty_Validating);
         this.textBoxAddress.Validating += new CancelEventHandler(textBoxEmpty_Validating);
         this.textBoxAge.Validating += new CancelEventHandler(textBoxEmpty_Validating);
      }
      void textBoxEmpty_Validating(object sender, CancelEventArgs e)
      {
         TextBox 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;
         }
         ValidateOK();
      }
      private void buttonOK_Click(object sender, EventArgs e)
      {
         string output;
         output = this.textBoxName.Text + "\r\n";
         this.textBoxOutput.Text = output;
      }
      private void buttonHelp_Click(object sender, EventArgs e)
      {
         this.textBoxOutput.Text = "No";
      }
      private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e)
      {
         if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
            e.Handled = true; 
      }
      private void textBox_TextChanged(object sender, EventArgs e)
      {
         TextBox tb = (TextBox)sender;
         if (tb.Text.Length == 0)
         {
            tb.Tag = false;
            tb.BackColor = Color.Red;
         }
         else
         {
            tb.Tag = true;
            tb.BackColor = SystemColors.Window;
         }
         ValidateOK();
      }
      private void ValidateOK()
      {
         this.buttonOK.Enabled = ((bool)(this.textBoxAddress.Tag) &&
                                 (bool)(this.textBoxAge.Tag) &&
                                 (bool)(this.textBoxName.Tag));
      }
      private void InitializeComponent()
      {
         this.labelName = new System.Windows.Forms.Label();
         this.textBoxName = new System.Windows.Forms.TextBox();
         this.buttonOK = new System.Windows.Forms.Button();
         this.textBoxAddress = new System.Windows.Forms.TextBox();
         this.labelAddress = new System.Windows.Forms.Label();
         this.buttonHelp = new System.Windows.Forms.Button();
         this.labelAge = new System.Windows.Forms.Label();
         this.textBoxAge = new System.Windows.Forms.TextBox();
         this.labelOutput = new System.Windows.Forms.Label();
         this.textBoxOutput = new System.Windows.Forms.TextBox();
         this.checkBoxProgrammer = new System.Windows.Forms.CheckBox();
         this.groupBox1 = new System.Windows.Forms.GroupBox();
         this.radioButtonMale = new System.Windows.Forms.RadioButton();
         this.radioButtonFemale = new System.Windows.Forms.RadioButton();
         this.groupBox1.SuspendLayout();
         this.SuspendLayout();
         // 
         // labelName
         // 
         this.labelName.AutoSize = true;
         this.labelName.Location = new System.Drawing.Point(12, 9);
         this.labelName.Name = "labelName";
         this.labelName.Size = new System.Drawing.Size(35, 13);
         this.labelName.TabIndex = 0;
         this.labelName.Text = "Name";
         // 
         // textBoxName
         // 
         this.textBoxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                     | System.Windows.Forms.AnchorStyles.Right)));
         this.textBoxName.Location = new System.Drawing.Point(98, 6);
         this.textBoxName.Name = "textBoxName";
         this.textBoxName.Size = new System.Drawing.Size(277, 20);
         this.textBoxName.TabIndex = 1;
         this.textBoxName.TextChanged += new System.EventHandler(this.textBox_TextChanged);
         // 
         // buttonOK
         // 
         this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
         this.buttonOK.Location = new System.Drawing.Point(381, 4);
         this.buttonOK.Name = "buttonOK";
         this.buttonOK.Size = new System.Drawing.Size(75, 23);
         this.buttonOK.TabIndex = 2;
         this.buttonOK.Text = "OK";
         this.buttonOK.UseVisualStyleBackColor = true;
         this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
         // 
         // textBoxAddress
         // 
         this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                     | System.Windows.Forms.AnchorStyles.Right)));
         this.textBoxAddress.Location = new System.Drawing.Point(98, 32);
         this.textBoxAddress.Multiline = true;
         this.textBoxAddress.Name = "textBoxAddress";
         this.textBoxAddress.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
         this.textBoxAddress.Size = new System.Drawing.Size(277, 100);
         this.textBoxAddress.TabIndex = 3;
         this.textBoxAddress.TextChanged += new System.EventHandler(this.textBox_TextChanged);
         // 
         // labelAddress
         // 
         this.labelAddress.AutoSize = true;
         this.labelAddress.Location = new System.Drawing.Point(12, 35);
         this.labelAddress.Name = "labelAddress";
         this.labelAddress.Size = new System.Drawing.Size(45, 13);
         this.labelAddress.TabIndex = 4;
         this.labelAddress.Text = "Address";
         // 
         // buttonHelp
         // 
         this.buttonHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
         this.buttonHelp.CausesValidation = false;
         this.buttonHelp.Location = new System.Drawing.Point(381, 30);
         this.buttonHelp.Name = "buttonHelp";
         this.buttonHelp.Size = new System.Drawing.Size(75, 23);
         this.buttonHelp.TabIndex = 5;
         this.buttonHelp.Text = "Help";
         this.buttonHelp.UseVisualStyleBackColor = true;
         this.buttonHelp.Click += new System.EventHandler(this.buttonHelp_Click);
         // 
         // labelAge
         // 
         this.labelAge.AutoSize = true;
         this.labelAge.Location = new System.Drawing.Point(12, 255);
         this.labelAge.Name = "labelAge";
         this.labelAge.Size = new System.Drawing.Size(26, 13);
         this.labelAge.TabIndex = 8;
         this.labelAge.Text = "Age";
         // 
         // textBoxAge
         // 
         this.textBoxAge.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                     | System.Windows.Forms.AnchorStyles.Right)));
         this.textBoxAge.Location = new System.Drawing.Point(98, 252);
         this.textBoxAge.MaxLength = 3;
         this.textBoxAge.Name = "textBoxAge";
         this.textBoxAge.Size = new System.Drawing.Size(277, 20);
         this.textBoxAge.TabIndex = 9;
         this.textBoxAge.TextChanged += new System.EventHandler(this.textBox_TextChanged);
         this.textBoxAge.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxAge_KeyPress);
         // 
         // labelOutput
         // 
         this.labelOutput.AutoSize = true;
         this.labelOutput.Location = new System.Drawing.Point(12, 271);
         this.labelOutput.Name = "labelOutput";
         this.labelOutput.Size = new System.Drawing.Size(39, 13);
         this.labelOutput.TabIndex = 10;
         this.labelOutput.Text = "Output";
         // 
         // textBoxOutput
         // 
         this.textBoxOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                     | System.Windows.Forms.AnchorStyles.Left)
                     | System.Windows.Forms.AnchorStyles.Right)));
         this.textBoxOutput.Location = new System.Drawing.Point(15, 287);
         this.textBoxOutput.Multiline = true;
         this.textBoxOutput.Name = "textBoxOutput";
         this.textBoxOutput.ReadOnly = true;
         this.textBoxOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
         this.textBoxOutput.Size = new System.Drawing.Size(360, 168);
         this.textBoxOutput.TabIndex = 11;
         // 
         // checkBoxProgrammer
         // 
         this.checkBoxProgrammer.AutoSize = true;
         this.checkBoxProgrammer.Checked = true;
         this.checkBoxProgrammer.CheckState = System.Windows.Forms.CheckState.Checked;
         this.checkBoxProgrammer.Location = new System.Drawing.Point(15, 138);
         this.checkBoxProgrammer.Name = "checkBoxProgrammer";
         this.checkBoxProgrammer.Size = new System.Drawing.Size(88, 17);
         this.checkBoxProgrammer.TabIndex = 12;
         this.checkBoxProgrammer.Text = "Programmer?";
         this.checkBoxProgrammer.UseVisualStyleBackColor = true;
         // 
         // groupBox1
         // 
         this.groupBox1.Controls.Add(this.radioButtonMale);
         this.groupBox1.Controls.Add(this.radioButtonFemale);
         this.groupBox1.Location = new System.Drawing.Point(15, 161);
         this.groupBox1.Name = "groupBox1";
         this.groupBox1.Size = new System.Drawing.Size(360, 85);
         this.groupBox1.TabIndex = 13;
         this.groupBox1.TabStop = false;
         this.groupBox1.Text = "Sex";
         // 
         // radioButtonMale
         // 
         this.radioButtonMale.AutoSize = true;
         this.radioButtonMale.Checked = true;
         this.radioButtonMale.Location = new System.Drawing.Point(187, 33);
         this.radioButtonMale.Name = "radioButtonMale";
         this.radioButtonMale.Size = new System.Drawing.Size(48, 17);
         this.radioButtonMale.TabIndex = 1;
         this.radioButtonMale.TabStop = true;
         this.radioButtonMale.Text = "Male";
         this.radioButtonMale.UseVisualStyleBackColor = true;
         // 
         // radioButtonFemale
         // 
         this.radioButtonFemale.AutoSize = true;
         this.radioButtonFemale.Location = new System.Drawing.Point(58, 33);
         this.radioButtonFemale.Name = "radioButtonFemale";
         this.radioButtonFemale.Size = new System.Drawing.Size(59, 17);
         this.radioButtonFemale.TabIndex = 0;
         this.radioButtonFemale.Text = "Female";
         this.radioButtonFemale.UseVisualStyleBackColor = true;
         // 
         // Form1
         // 
         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
         this.ClientSize = new System.Drawing.Size(468, 466);
         this.Controls.Add(this.groupBox1);
         this.Controls.Add(this.checkBoxProgrammer);
         this.Controls.Add(this.textBoxOutput);
         this.Controls.Add(this.labelOutput);
         this.Controls.Add(this.textBoxAge);
         this.Controls.Add(this.labelAge);
         this.Controls.Add(this.buttonHelp);
         this.Controls.Add(this.labelAddress);
         this.Controls.Add(this.textBoxAddress);
         this.Controls.Add(this.buttonOK);
         this.Controls.Add(this.textBoxName);
         this.Controls.Add(this.labelName);
         this.MinimumSize = new System.Drawing.Size(484, 370);
         this.Name = "Form1";
         this.Text = "Form1";
         this.groupBox1.ResumeLayout(false);
         this.groupBox1.PerformLayout();
         this.ResumeLayout(false);
         this.PerformLayout();
      }
      private System.Windows.Forms.Label labelName;
      private System.Windows.Forms.TextBox textBoxName;
      private System.Windows.Forms.Button buttonOK;
      private System.Windows.Forms.TextBox textBoxAddress;
      private System.Windows.Forms.Label labelAddress;
      private System.Windows.Forms.Button buttonHelp;
      private System.Windows.Forms.Label labelAge;
      private System.Windows.Forms.TextBox textBoxAge;
      private System.Windows.Forms.Label labelOutput;
      private System.Windows.Forms.TextBox textBoxOutput;
      private System.Windows.Forms.CheckBox checkBoxProgrammer;
      private System.Windows.Forms.GroupBox groupBox1;
      private System.Windows.Forms.RadioButton radioButtonFemale;
      private System.Windows.Forms.RadioButton radioButtonMale;
      [STAThread]
      static void Main()
      {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         Application.Run(new Form1());
      }
   }

Validation callback

using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Schema;
public class MainClass
{
    public static void Main()
    {
        XmlDocument doc;
        XPathNavigator editor2;
        XmlWriter writer;
        XmlSchemaSet schemaSet;
        ValidationEventHandler handler;
        doc = new XmlDocument();
        doc.Load("pubs.xml");
        foreach (XPathNavigator editor in doc.CreateNavigator().Select("/pubs/titles[authors/@au_lname="Green"]"))
        {
            editor2 = editor.SelectSingleNode("authors[@au_lname!="Green"]");
            if (editor2 != null) editor2.DeleteSelf();
            writer = editor.AppendChild();
            writer.WriteStartElement("authors");
            writer.WriteAttributeString("au_lname", "MacFeather");
            writer.WriteAttributeString("au_fname", "Stearns");
            writer.Close();
        }
        XPathNavigator editor3 = doc.CreateNavigator();
        schemaSet = new XmlSchemaSet();
        schemaSet.Add(null, "pubs.xsd");
        schemaSet.rupile();
        handler = new System.Xml.Schema.ValidationEventHandler(ValidationCallback);
        doc.Save("output.xml");
    }
    public static void ValidationCallback(object sender, ValidationEventArgs e)
    {
        System.Console.WriteLine(e.Message);
    }
}