Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 178

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 172 173 174 175 176 177 < 178 > 179 180 181 182 183 184 .. 404 >> Следующая


4. Щелкните два раза мышью на элементе Textbox в окне

с инструментами. Измените его свойство N«me на txtLabeiText

и очистите свойство Text,

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

Структура управляющего элемента выглядит пока весьма разочаровыиающе — Textbox свободно перемещается по рабочей поверхности, а сама поверхность слишком велика. На самом деле, это не имеет значения, поскольку, то, что вы

видите, это совсем ие то, что вы получите в итоге! Код, который мы

сейчас добавим к управляющему элементу, изменит его внешний вид, но только после добавления элемента к форме (см. рис. слева).

Сначала следует определить взаимное располо^ пие управляющих элементов друг относительно друга. Поскольку пользователь должен самостоятельно принимать решение об этом расположении, мы добавим элементу не одно, а два свойства. Одно из ннх будет называться position (положение) — оно предоставляет пользователю возможность выбора: Right (справа) и Below (внизу). Если пользователь выбирает значение Right, то в дело вступает второе свойство. Оно
Дополнительные возможности Windows Form___________________________________________________377

называется TextBoxMargin (поля текстового окна) и представляет собой целое число, соответствующее числу пикселей между левым краем управляющего элемента и тем местом, в котором должно быть размещено текстовое окно. Если пользователь задает значение, равное 0, то текстовое окно размещается так, чтобы его правый край располагался вровень с правым краем управляющего элемента.

Добавление свойств

Для того чтобы пользователь мог выбирать между Right и Below, прежде всего потребуется перечислимый тип с этими значениями. Вернитесь в проект по созданию управляющего элемента, перейдите в редактор кода и введите следующий код:

public class ctlLabelTextbox ; System.Windows.Forms.UserControl {

//Нумерация двух возможных позиций public enur PositionEnum С _

Righti ' '

Below

- - - > EE

Это всего лишь обычный перечислимый тип, с которым мы познакомились в главе 5. Теперь о необычном — нам требуется, чтобы местоположение представляло собой свойство, которое может задаваться пользователем как программным путем, так и в процессе разработки. Этого можно добиться, включив это свойство в класс ctiLabeiTextBox. Сначала, однако, потребуется создать два поля, в которых будут храниться значения, выбранные пользователем:

// Поле — элемент данного класса, в котором будет храниться // информация о выборе, сделанном пользователем private PositionEnum mPosition = PositionEnum.Right; private int mTextboxMargin = 0;

public ctlLabelTextboxt) t

Затем мы добавляем свойство position: public PositionEnum Position {

get

{

return mPosition*

}

set

{

mPosition * value; '

HoveControls ()i

> .

)

Это свойство добавлено в класс точно так же, как и любое другое. Если возникнет необходимость вернуть его-значение, мы вернем поле mPosition, а если потребуется изменить свойство position — присвоим полю mPosition соответствующее значение и вызовем метод HoveControls о . К методу MoveControle о мы вернемся чуть ниже, а пока достаточно просто знать, что этот метод располагает два управляющего Элемента В СООТВеТСТВИИ СО Значениями СВОЙСТВ mPosition И mTexBoxMargin.
378 Глава 14

Аналогично создается cdohctdo TexBoxHargin за исключением того, что оно работает с целыми числами:

public Inc ТехtboxMargin (

get

С

return mTextboxMargin;

)

set

(

mTextboxMargin = value; ¦

MoveControls();

i

)

Добавление обработчиков событий

Прежде чем перейти к тестированию этих двух свойств, необходимо добавить два обработчика событии. Когда управляющий элемент помещается в форму, вызывается событие Load. Это событие следует использовать для инициализации управляющего элемента и всех ресурсов, которые могут им использоваться. Мы обрабатываем это событие, для того чтобы перемещать управляющие элементы и подгонять размер всего управляющего элемента под размер содержащихся в нем элементов. Мы будем обрабатывать еще одно событие — sizechanged. Оно возникает всегда, когда изменяются размеры управляющего элемента, и необходимо обрабатывать это событие, чтобы управляющий элемент изображался надлежащим образом. Мы подписываемся иа события в конструкторе управляющего элемента:

// Обработка события Sizechanged

this.Si eChanged += new System.EventHandler!this.OnSizeChanged);

It Обработка события Load

this.Load +¦ пей EventHandler(thia.OnLoad);

Затем добавляем обработчики событий: private void OnLoad(object sender, EventArgs e)

{

lblTextBox.Text ¦ this.Nome; //Добавляет текст к надписи

/ / Задание высоты управлявшего элемента

this.Height 3 txtLabelText.Height + IblTextBox.Height;
Предыдущая << 1 .. 172 173 174 175 176 177 < 178 > 179 180 181 182 183 184 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.