VB 19. Создание пользовательского элемента управления

* Задание: Разработайте элемент управления «Бегущая строка», который прокручивает заданный текст в TextBox справа налево

Выполнение:

  1. Создайте новый проект.
  2. Для создания пользовательского элемента управления выберите в меню Project (Проект) → Add User Control (Добавить новый элемент).
  3. В открывшемся окне щелкните по значку User control (Пользовательский элемент).

Обратите внимание, что у появившегося окна пользовательского элемента нет заголовка и границ, т.к. мы работаем не с формой, а создаем свой элемент управления, который впоследствии будет располагаться на форме другого проекта.

  1. В появившемся окне создайте элементы управления TextBox (txt) и Timer. Чтобы текстовое окно сливалось с формой, установите его свойства: BackColor – в значение Control, BorderStyle – в значение None.
  2. Обязательно измените имя элемента управления на БегущаяСтрока (это имя будет затем использовано при создании экземпляров (копий) элемента управления).
  3. Далее необходимо запрограммировать событие Resize (изменение размера) для нашего пользовательского элемента управления (в противном случае при размещении элемента управления на форме ширина текстового окна будет неизменной). Для этого дважды щелкните на рабочей области, а затем из списка событий выберите Resize.
  4. Событие 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.

  1. Чтобы новый элемент появился на панели инструментов, запустите проект и затем просто закройте форму.
Элемент управления «Бегущая строка»
Элемент управления «Бегущая строка»
  1. Перейдите на стандартную форму проекта и расположите на ней элемент управления (он добавился в верхней части панели ToolBox ).
  2. Теперь необходимо заставить двигаться надпись (текстовое окно) по элементу, чтобы создать эффект движения строки. Для этого следует описать переменную, которая будет содержать текущую координату Х расположения текстового поля по горизонтали, а в событии Timer поместить следующий код:
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
  1. Чтобы запустить таймер установите свойство Enabled таймера в True в событии формы Load:
Timer1.Enabled = True
  1. Не забудьте задать для переменной PosX начальное значение. Это необходимо сделать в процедуре события БегущаяСтрока_Resize:
PosX = txt.Width
  1. Перейдите на форму и, если Вы все сделали правильно, то в элементе управления БегущаяСтрока строка действительно будет бегущей! Запустите и отладьте приложение.
  2. Теперь необходимо добавить возможность изменять слово в бегущей строке. Для этого добавьте текстовое окно (Text2) и кнопку. По нажатию на кнопку слово, введенное в текстовое окно, должно отображаться в бегущей строке.
  3. Для того чтобы можно было выводить любой текст на БегущейСтроке, добавим описание глобальной переменной Текст в стандартный модуль (меню ProjectAddModule):
Module Module1
 
Public Текст  As String = "Привет!"
  1. Первоначальное значение (значение по умолчанию) для переменной мы задали «Привет!».
  2. Теперь необходимо заменить код в событии Tick таймера (вместо Text =»Привет!»):
txt.Text = Текст
  1. Перейдите в стандартную форму и запрограммируйте событие Click кнопки:
Текст = Text2.Text
БегущаяСтрока1.txt.Text = Текст
  1. Запустите проект.
  2. Для того чтобы избежать всю эту длительную процедуру с описанием переменной Текст, можно было бы добавить к нашему элементу управления настоящее свойство Текст. Так и поступим.
  3. Для задания нового свойства необходимо добавить в модуль элемента управления 2 процедуры:
Public Property текст()
Get
  Return txt.Text
End Get
 
Set(ByVal Value)
  txt.Text = Value
End Set
End Property

Это описание говорит нам о том, что создается свойство текст для объекта БегущаяСтрока. Метод Get (получение свойства) позволяет нам “узнать” имеющееся значение текстового поля, а метод Set (установка свойства) позволяет установить значение свойства из внешнего параметра (Value).

  1. Необходимо убрать (закомментировать) назначение значения свойства текстового окна в событии Tick следующим образом:
txt.Text = текст
  1. А в событие Load формы добавить начальное значение текстового поля:
txt.Text = "Привет!"
  1. На стандартной форме измените код для события Click кнопки:
Private Sub Button1_Click(…) Handles Button1.Click
  БегущаяСтрока1.текст = Text2.Text
End Sub
  1. Обратите внимание, теперь свойство текст является непосредственно созданным Вами свойством Вашего элемента управления.
Контрольное задание:

Добавьте к созданному элементу управления следующее новое свойство Скорость (скорость передвижения текста бегущей строки) и соответственно измените приложение для его тестирования.

  1. Создание библиотеки класса элемента управления. Если создать новый проект, то Ваш элемент управления не будет отображаться на панели Toolbox. Чтобы правильно построить элемент управления, выберите меню Project (Проект) → Properties (Свойства) → в поле Application type (Тип приложения) выберите Class Library (Класс библиотека). Затем меню Build (Построить)→ Build Бегущая строка. Сохраните и закройте приложение.
  2. Добавление библиотеки в новый проект. Создайте новый проект – Windows Application и назовите его с_БегСтрок. Чтобы добавить новый элемент управления, в контекстном меню панели инструментов выберите пункт Choose items (Выберите пункты). На вкладке Net Framework components нажмите на кнопку Brows… И выберите папку Release, которая находится в каталоге с вашим проектом бегущей строки (Visual Studio 2008\Projects\25_лабораторная\25_ лабораторная \bin\Release). Выберите файл Элемент_БегущаяСтрока.dll. Элемент появится на панели инструментов.
  3. Перетащите его в область формы и запустите приложение.
Дополнительное задание:

Разработайте собственный элемент управления. Например, можно создать простой элемент для отображения текущей даты:

Для задания текущей даты используется конструкция:

Dim myDate As Date = Today
txt.Text = myDate

Добавьте свойства для изменения цвета и фона элемента управления.

Вопросы для самоконтроля:

  1. Что такое пользовательский элемент управления?
  2. Для чего необходимы процедуры Property Get и Property Set?
  3. Когда выполняется процедура Property Set (Property Get)?

* При использовании материалов обязательна ссылка на источник: Майер С.Ф., «MS Visual Basic 2008» — Учебно-методическое пособие : Южный федеральный университет. – Ростов-на-Дону, 2017. – 92 с.