Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для КР по ООП.doc
Скачиваний:
8
Добавлен:
18.04.2019
Размер:
2.47 Mб
Скачать

Validating и Validated элементов управления

Предполагается, что свойство CausesValidation элементов управления, для которых будет проводиться проверка, установлено в true. Это позволяет отработать обработчику события Validating, которое возникает в момент потери фокуса элементом управления. У обработчика события Validating имеется аргумент объект-представитель класса CancelEventArgs обычно с именем e. У него есть поле Cancel, которое в случае ошибки можно установить в true, что приводит к возвращению фокуса.

Validated генерируется после Validating. Разница между ними заключается в следующем.

Validating активизируется для данного элемента управления непосредственно после потери фокуса. Перехват этого события позволяет, например, оперативно проверить правильность заполнения данного поля ввода и в случае некорректного заполнения вернуть фокус в это поле. При этом можно предпринять некоторые шаги по коррекции неправильного значения. Например, если в поле ввода должна располагаться последовательность символов, преобразуемая к целочисленному значению, а туда была записана “qwerty”, то можно восстановить последнее корректрое значение или вписать туда строку “0”.

Validated активизируется при попытке закрытия формы. В обработчике этого события обычно располагается код, который позволяет осуществить проверку корректности заполнения всей формы в целом. Например, отсутствие значений в текстовых полях, которые обязательно должны быть заполнены.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace PropertiesProviders

{

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.Button BigButton;

private System.Windows.Forms.ToolTip toolTip01;

private System.ComponentModel.IContainer components;

private System.Windows.Forms.Button RedButton;

private System.Windows.Forms.ErrorProvider errorProvider1;

int nTip = 0;

string[] Tips = {

“Не торопись...”,

“Попробуй ещё раз... ” ,

“Зри в корень... ”

};

int nErr = 0;

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.HelpProvider helpProvider1;

string[] ErrMess = {

“Не надо было этого делать... ”,

“Какого хрена... ”,

“Ну всё... ”,

“”

};

public Form1()

{

InitializeComponent();

}

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();

this.BigButton = new System.Windows.Forms.Button();

this.toolTip01 = new System.Windows.Forms.ToolTip(this.components);

this.RedButton = new System.Windows.Forms.Button();

this.errorProvider1 = new System.Windows.Forms.ErrorProvider();

this.textBox1 = new System.Windows.Forms.TextBox();

this.helpProvider1 = new System.Windows.Forms.HelpProvider();

this.SuspendLayout();

//

// BigButton

//

this.BigButton.Location = new System.Drawing.Point(8, 40);

this.BigButton.Name = “BigButton”;

this.BigButton.TabIndex = 0;

this.BigButton.Text = “BigButton”;

this.toolTip01.SetToolTip(this.BigButton, “Жми на эту кнопку, дружок!”);

this.BigButton.Click += new System.EventHandler(this.BigButton_Click);

//

// RedButton

//

this.RedButton.Location = new System.Drawing.Point(112, 40);

this.RedButton.Name = “RedButton”;

this.RedButton.Size = new System.Drawing.Size(80, 23);

this.RedButton.TabIndex = 1;

this.RedButton.Text = “RedButton”;

this.toolTip01.SetToolTip(this.RedButton, “А на эту кнопку не падо нажимать!”);

this.RedButton.Click += new System.EventHandler(this.RedButton_Click);

//

// errorProvider1

//

this.errorProvider1.ContainerControl = this;

//

// textBox1

//

this.helpProvider1.SetHelpString(this.textBox1, “int values only...”);

this.textBox1.Location = new System.Drawing.Point(272, 40);

this.textBox1.Name = “textBox1”;

this.helpProvider1.SetShowHelp(this.textBox1, true);

this.textBox1.TabIndex = 2;

this.textBox1.Text = “”;

this.textBox1.Validating +=

new System.ComponentModel.CancelEventHandler(this.textBox1_Validating);

//

// Form1

//

this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);

this.ClientSize = new System.Drawing.Size(536, 168);

this.Controls.Add(this.textBox1);

this.Controls.Add(this.RedButton);

this.Controls.Add(this.BigButton);

this.Name = “Form1”;

this.Text = “Form1”;

this.ResumeLayout(false);

}

#endregion

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

private void BigButton_Click(object sender, System.EventArgs e)

{

this.toolTip01.SetToolTip(this.BigButton, Tips[nTip]);

if (nTip < 2) nTip++;

else nTip = 0;

}

private void RedButton_Click(object sender, System.EventArgs e)

{

errorProvider1.SetError(RedButton, ErrMess[nErr]);

if (nErr < 3) nErr++;

else nErr=0;

}

private void textBox1_Validating

(object sender, System.ComponentModel.CancelEventArgs e)

{

int val = 0;

try

{

if (this.textBox1.Text != “”)

val = int.Parse(textBox1.Text);

errorProvider1.SetError(textBox1, “”);

}

catch

{

e.Cancel = true;

errorProvider1.SetError(textBox1, “Целое, блин...”);

}

}

}

}