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

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

Текущая версия на 15:15, 26 мая 2010

Validate text box value

<source lang="csharp">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());
     }
  }</source>

Validation callback

<source lang="csharp">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);
   }

}</source>