Для создания пользовательского элемента управления выберите в меню Project (Проект) → Add User Control (Добавить новый элемент).
В открывшемся окне щелкните по значку User control (Пользовательский элемент).
Обратите внимание, что у появившегося окна пользовательского элемента нет заголовка и границ, т.к. мы работаем не с формой, а создаем свой элемент управления, который впоследствии будет располагаться на форме другого проекта.
В появившемся окне создайте элементы управления TextBox (txt) и Timer. Чтобы текстовое окно сливалось с формой, установите его свойства: BackColor – в значение Control, BorderStyle – в значение None.
Обязательно измените имя элемента управления на БегущаяСтрока (это имя будет затем использовано при создании экземпляров (копий) элемента управления).
Далее необходимо запрограммировать событие Resize (изменение размера) для нашего пользовательского элемента управления (в противном случае при размещении элемента управления на форме ширина текстового окна будет неизменной). Для этого дважды щелкните на рабочей области, а затем из списка событий выберите Resize.
Событие Resize происходит каждый раз при изменении размеров нашего элемента управления. Для события необходимо написать следующий код, который увеличивает ширину TextBox на всю доступную ширину элемента управления:
Private Sub БегущаяСтрока_Resize(…) Handles Me.Resize
With txt
.Top = 0
.Left = 0
.Width = Width
End With
End Sub
Конструкция With…End With позволяет совершать манипуляции с одним и тем же объектом без повторного указания имени этого объекта. Блок начинается с оператора With, внутри которого перечисляются манипуляции с объектом без обращения к нему по имени, завершается блок ключевыми словами End With.
Чтобы новый элемент появился на панели инструментов, запустите проект и затем просто закройте форму.
Перейдите на стандартную форму проекта и расположите на ней элемент управления (он добавился в верхней части панели ToolBox ).
Теперь необходимо заставить двигаться надпись (текстовое окно) по элементу, чтобы создать эффект движения строки. Для этого следует описать переменную, которая будет содержать текущую координату Х расположения текстового поля по горизонтали, а в событии Timer поместить следующий код:
Public Class БегущаяСтрока
Private PosX AsInteger
…
PrivateSub Timer1_Tick(…) Handles Timer1.Tick
With txt
.Top = 0
.Left = PosX
EndWith
txt.Text = "Привет"
PosX = PosX - 20
If PosX < 0 Then PosX = txt.Width
EndSub
Public Class БегущаяСтрока
Private PosX As Integer
…
Private Sub Timer1_Tick(…) Handles Timer1.Tick
With txt
.Top = 0
.Left = PosX
End With
txt.Text = "Привет"
PosX = PosX - 20
If PosX < 0 Then PosX = txt.Width
End Sub
Чтобы запустить таймер установите свойство Enabled таймера в True в событии формы Load:
Timer1.Enabled = True
Timer1.Enabled = True
Не забудьте задать для переменной PosX начальное значение. Это необходимо сделать в процедуре события БегущаяСтрока_Resize:
PosX = txt.Width
PosX = txt.Width
Перейдите на форму и, если Вы все сделали правильно, то в элементе управления БегущаяСтрока строка действительно будет бегущей! Запустите и отладьте приложение.
Теперь необходимо добавить возможность изменять слово в бегущей строке. Для этого добавьте текстовое окно (Text2) и кнопку. По нажатию на кнопку слово, введенное в текстовое окно, должно отображаться в бегущей строке.
Для того чтобы можно было выводить любой текст на БегущейСтроке, добавим описание глобальной переменной Текст в стандартный модуль (меню Project → AddModule):
Module Module1
Public Текст AsString = "Привет!"
Module Module1
Public Текст As String = "Привет!"
Первоначальное значение (значение по умолчанию) для переменной мы задали «Привет!».
Теперь необходимо заменить код в событии Tick таймера (вместо Text =»Привет!»):
txt.Text = Текст
txt.Text = Текст
Перейдите в стандартную форму и запрограммируйте событие Click кнопки:
Текст = Text2.Text
БегущаяСтрока1.txt.Text = Текст
Текст = Text2.Text
БегущаяСтрока1.txt.Text = Текст
Запустите проект.
Для того чтобы избежать всю эту длительную процедуру с описанием переменной Текст, можно было бы добавить к нашему элементу управления настоящее свойство Текст. Так и поступим.
Для задания нового свойства необходимо добавить в модуль элемента управления 2 процедуры:
PublicProperty текст()
Get
Return txt.Text
EndGetSet(ByVal Value)
txt.Text = Value
EndSetEndProperty
Public Property текст()
Get
Return txt.Text
End Get
Set(ByVal Value)
txt.Text = Value
End Set
End Property
Это описание говорит нам о том, что создается свойство текст для объекта БегущаяСтрока. Метод Get (получение свойства) позволяет нам “узнать” имеющееся значение текстового поля, а метод Set (установка свойства) позволяет установить значение свойства из внешнего параметра (Value).
Необходимо убрать (закомментировать) назначение значения свойства текстового окна в событии Tick следующим образом:
txt.Text = текст
txt.Text = текст
А в событие Load формы добавить начальное значение текстового поля:
txt.Text = "Привет!"
txt.Text = "Привет!"
На стандартной форме измените код для события Click кнопки:
Private Sub Button1_Click(…) Handles Button1.Click
БегущаяСтрока1.текст = Text2.Text
End Sub
Обратите внимание, теперь свойство текст является непосредственно созданным Вами свойством Вашего элемента управления.
Контрольное задание:
Добавьте к созданному элементу управления следующее новое свойство Скорость (скорость передвижения текста бегущей строки) и соответственно измените приложение для его тестирования.
Создание библиотеки класса элемента управления. Если создать новый проект, то Ваш элемент управления не будет отображаться на панели Toolbox. Чтобы правильно построить элемент управления, выберите меню Project (Проект) → Properties (Свойства) → в поле Application type (Тип приложения) выберите Class Library (Класс библиотека). Затем меню Build (Построить)→ Build Бегущая строка. Сохраните и закройте приложение.
Добавление библиотеки в новый проект. Создайте новый проект – Windows Application и назовите его с_БегСтрок. Чтобы добавить новый элемент управления, в контекстном меню панели инструментов выберите пункт Choose items (Выберите пункты). На вкладке Net Framework components нажмите на кнопку Brows… И выберите папку Release, которая находится в каталоге с вашим проектом бегущей строки (Visual Studio 2008\Projects\25_лабораторная\25_ лабораторная \bin\Release). Выберите файл Элемент_БегущаяСтрока.dll. Элемент появится на панели инструментов.
Перетащите его в область формы и запустите приложение.
Дополнительное задание:
Разработайте собственный элемент управления. Например, можно создать простой элемент для отображения текущей даты:
Для задания текущей даты используется конструкция:
Dim myDate AsDate = Today
txt.Text = myDate
Dim myDate As Date = Today
txt.Text = myDate
Добавьте свойства для изменения цвета и фона элемента управления.
Вопросы для самоконтроля:
Что такое пользовательский элемент управления?
Для чего необходимы процедуры PropertyGet и PropertySet?
Когда выполняется процедура PropertySet (PropertyGet)?
* При использовании материалов обязательна ссылка на источник: Майер С.Ф., «MS Visual Basic 2008» — Учебно-методическое пособие : Южный федеральный университет. – Ростов-на-Дону, 2017. – 92 с.
Все права защищены. Использование любых материалов сайта возможно только с разрешения правообладателя. По вопросам размещения рекламы на сайте - обращайтесь: mayersvetlana @ yandex.ru