Csharp/CSharp Tutorial/GUI Windows Forms/Validation — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:15, 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);
}
}