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

С# - Ватсон К.

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


5. Обратитесь к коду и найдите в методе initializecomponent о следующую строку:

this.MyControl = new LabelTextbox.ctlLabelTextbox();

Для этого, вероятно, придется развернуть область, помеченную как

'Windows Form Designer generated code',

6. Разместите на этой строке точку останова.
Дополнительные возможности Windows Form

381

7, Запустите программу. Как и следовало ожидать, выполнение кода прервется в том месте, где помещена точка останова. Продолжите выполнение программы в пошаговом режиме (если вы используете клавиши, определяемыми по умолчанию, то этого можно добиться нажатием клавиши Ft I). Продолжая выполнять программу в пошаговом режиме, вы попадете в конструктор нового управляющего элемента — это как раз то. что необходимо для отладки компонента. Вы также можете расставить дополнительные точки останова. Для запуска приложения нажмите F5.

Расширение управляющего элемента LabelTextbox

Практинум: продолжение примера создания управляющего элемента LabelTextbox

Теперь можно протестировать свойства управляющего элемента. Повторите все шаги по созданию проекта в новом экземпляре Visual Studio, в котором существует управляющий элемент LabelTextbox. Затем перенесите управляющий элемент в форму. Надпись с именем управляющего элемента н текстовое окно занимают всю оставшуюся площадь управляющего элемента. Обратите внимание на то, что управляющие элементы, расположенные внутри управляющего элемента LabelTextbox, занимают правильные позиции, когда управляющий элемент добавляется к форме (см. рис. слева),

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

На данном этапе практически ничего нельзя делать с помощью названного управляющего элемента, поскольку у нас отсутствует возможность изменять текст надписи и текст в окне. Для работы с этим текстом МЫ добавим два свойства: LabelText И TextBoxText. Эти свойства добавляются точно так же, как и два предыдущих свойства:

public string LabelText (

get

(

return lblTextBox.Text;

)

set

(

lblTextBox.Text ¦ value;

HoveControls (); // Метод HoveControls вызывается для изменения

//размеров Textbox при наличии такой необходимости

}

}

public string TextboxText

(

get

{

return txtLabelText.Text;

)

1КИЕ 1 BfilEi
dlLalMT iSifcfl* 1" .
• ' ' . ... :
¦ 'j- 1
; ; ; 1 1* • V '
r - - ¦ - «.¦
4 i ' 1
. . •
. . » . ¦. * ' '
:::1 ¦ j i i , i . a >
382 Глава 14

set

(

txtLabelText.Text = valuei

)

)

Если возникает необходимость включить некоторый текст, то мы просто присваиваем соответствующий текст надписи и свойству Text текстового окна и возвращаем значение названных свойств. Если текст надписи будет изменен, нам потребуется обратиться к метолу MovecontrolsO, поскольку этот текст может оказывать влияние на то, каким образом будет располагаться текстовое окно. С другой стороны, текст, включаемый для вывода в текстовом окне, не приводит к перемещению управляющих элементов, и в том случае, еслн он окажется длиннее, чем текстовое окно, то он просто перестанет быть видимым.

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

Поскольку данный управляющий элемент является производным от класса Osercantroi, он наследует от него большое количество функциональных возможностей. Существует, одиако, определенное количество событий, которые мы не желаем передавать пользователю стандартным способом. Среди них можно назвать такие события, как KeyDown, Keypress и кеуор. Причина, по которой нам необходимо внести определенные изменения в эти события, заключается в том, что пользователь предполагает, что они будут отправляться в тот момент, когда он нажимает какую-либо клавишу в текстовом окне. А в том виде, в котором они существуют сейчас, эти события будут отправляться только в том случае, если сам управляющий элемент находится в фокусе и пользователь нажимает клавишу.

Для того чтобы изменить такое поведение, мы должны самостоятельно обрабатывать события, отправляемые текстовым окном, а затем переправлять их далее пользователю. Сначала нам необходимо подписаться на соответствующие события в конструкторе формы:

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

this.SizeChanged += new System.EventHandler(this.OnSizeChanged);

// Обработка событий в Textbox, связанных с клавиатурой

thi s. txtLabelText. KeyDown += new KeyEventHandler(this.CxtLabelTextJteyDown); this.txtLabelText.KeyUp += new HeyEventHandler(this.txtLebelfext_KeyUp)) this.txtLabelText.KeyPress +« new

KeyPreseEventHandler(this.txtLabelText_KeyPreas);

Затем следует добавить три обработчика событий: private void txtLabelText_KeyDoi (object sender. Key EventArgs e)

{

OnXeyDown(e) ,•

J

private void txtLebelText_KeyUp(object sender, XeyEventArge e)

(

OriKeyUp(e) ;

> ' private void txtLabelText_KeyPreee(object sender, KeyPreeeEventArgs e)

<

OnKeyPress(e}i

) ¦ .

Вызов метода опкеуххх формирует обращение к любому методу, который подписан на данное событие.
Дополнительные возможности Windows Form______________________________________________________383
Предыдущая << 1 .. 174 175 176 177 178 179 < 180 > 181 182 183 184 185 186 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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