русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Extender providers. Провайдеры дополнительных свойств


Дата добавления: 2015-07-09; просмотров: 509; Нарушение авторских прав


An extender provider - компонент, который предоставляет свойства другим компонентам. Это делается с целью расширения множества свойств (элементов управления).

 

ToolTipProvider,

HelpProvider,

ErrorProvider.

 

Например, когда a ToolTip Component (Windows Forms) компонент добавляется к форме, все остальные компоненты, размещённые на этой форме, получают новое свойство, которое даже можно просматривать и устанавливать (редактировать) в окне Properties непосредственно в процессе разработки формы. И это новое свойство, называемое ToolTip, вызывается для каждого элемента управления данной формы.

Не надо обольщаться. Множество свойств элементов управления не изменилось. Дополнительное свойство предоставляется ВСЕМ элементам отдельным компонентом.

На этапе разработки, это свойство появляется в Properties window for the component that is being modified.

Однако при выполнении (at run time), это свойство не может быть доступно (accessed) непосредственно через данный конкретный элемент управления.

В следующем примере кода форма была построена с кнопочкой, которая была названа MyButton и элементол управления ToolTip, названным MyToolTip, which provides a ToolTip property.

 

// И вот так просто и наивно значение свойства кнопочки не получить,

// поскольку это свойство не родное!

// This is an example of code that is NOT CORRECT!

string myString;

myString = MyButton.ToolTip;

 

Подобное обращение пиведёт к ошибке ещё на стадии компиляции. А вот как надо обращаться к этому самому дополнительному свойству, установленному для кнопочки (просто форменное надувательство):

 

string myString;

myString = MyToolTip.GetToolTip(MyButton);

 

Провайдеры дополнительных свойств являются классами, а это означает, что у них имеются собственные свойства и методы.



 

Пример…

 

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

 

namespace Rolls01

{

/// <summary>

/// Summary description for numPointsForm.

/// </summary>

public class numPointsForm : System.Windows.Forms.Form

{

Form1 f1;

int nPoints;

private System.Windows.Forms.TextBox numBox;

private System.Windows.Forms.Button button1;

private System.ComponentModel.IContainer components;

 

private System.Windows.Forms.ToolTip toolTip;

// Ссылка на объект-представитель класса ErrorProvider

private System.Windows.Forms.ErrorProvider errorProvider;

 

private string[] errMess;

 

public numPointsForm(Form1 f1Key)

{

f1 = f1Key;

InitializeComponent();

errMess = new string[] {

"Больше двух тараканов!",

"Целое и больше двух!"

};

}

 

/// <summary>

/// Clean up any resources being used.

/// </summary>

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.numBox = new System.Windows.Forms.TextBox();

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

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

this.SuspendLayout();

//

// numBox

//

this.numBox.Location = new System.Drawing.Point(8, 11);

this.numBox.Name = "numBox";

this.numBox.Size = new System.Drawing.Size(184, 20);

this.numBox.TabIndex = 0;

this.numBox.Text = "";

this.numBox.Validating +=

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

//

// button1

//

this.button1.Location = new System.Drawing.Point(208, 8);

this.button1.Name = "button1";

this.button1.TabIndex = 1;

this.button1.Text = "OK";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// numPointsForm

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(288, 45);

this.Controls.Add(this.button1);

this.Controls.Add(this.numBox);

this.MaximizeBox = false;

this.MinimizeBox = false;

this.Name = "numPointsForm";

this.Text = "numPointsForm";

this.Load += new System.EventHandler(this.numPointsForm_Load);

this.ResumeLayout(false);

}

#endregion

 

private void numBox_Validating

(object sender, System.ComponentModel.CancelEventArgs e)

{

int x;

try

{

x = int.Parse(numBox.Text);

if (x <= 1)

{

numBox.Text = nPoints.ToString();

e.Cancel = true;

errorProvider.SetError(numBox, this.errMess[0]);

}

else

{

nPoints = x;

}

}

catch (Exception e2)

{

numBox.Text = nPoints.ToString();

e.Cancel = true;

// Обращение к Error провайдеру.

errorProvider.SetError(numBox, this.errMess[1]);

}

}

 

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

{

nPoints = f1.nPoints;

numBox.Text = nPoints.ToString();

toolTip.SetToolTip(numBox,"Количество тараканчиков. Больше двух.");

errorProvider = new ErrorProvider();

}

 

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

{

f1.nPoints = nPoints;

this.Close();

}

}

}



<== предыдущая лекция | следующая лекция ==>
Форма: контейнер как элемент управления | Validating и Validated элементов управления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.41 сек.