Текстове поле (TextBox)

Текстове поле - це найбільш уживаний елемент управління, оскільки його можна використовувати не тільки для перегляду інформації, як розглянутий раніше елемент управління Label, але і для введення даних під час виконання програми.

Рис.1. Текстове поле (TextBox) На панелі Toolbar

Як і мітка, елемент управління TextBox (Текстове поле) характеризується великим набором властивостей. Розглянемо їх більш детально.

Властивості, що визначають зовнішній вигляд

Для задання стилю рамки текстового поля служить властивість BorderStyle, яка може набувати таких значень: None (Без рамки), FixedSingle (Одновимірна рамка) і Fixed3D (Об'ємна рамка). За замовчуванням текстове поле має об'ємну рамку.

Властивості BackColor і ForeColor дозволяють задати колір фону і колір тексту, що розміщується в елементі управління TextBox відповідно. Використовуючи властивість TextAlign, можна задати варіант вирівнювання інформації в текстовому полі: Center (По центру), Left (Ліворуч) або Right (По правому краю).

Для задання найменування шрифту, що відображається в текстовому полі, його розміру і накреслення використовується властивість Font.

Багаторядкові текстові поля

За умовчанням передбачається, що текстове поле служить для введення одного рядка тексту. При введенні декількох рядків або навіть великого блоку текстової інформації використовуються властивості MultiLine і ScrollBars елемента управління TextBox.

Властивість MultiLine визначає спосіб відображення текстового поля. При встановленому значенні True текст елемента управління TextBox може розташовуватися на декількох рядках. При введенні інформації в поле для переходу на новий рядок необхідно натискати клавішу <Enter>.

Для відображення смуг прокрутки при створенні багаторядкового текстового поля призначена властивість ScrollBars. Властивість задає вид смуги прокрутки і може приймати одне з наступних значень: None (Немає), Horizontal (Горизонтальна), Vertical (Вертикальна) і Both (Горизонтальна і вертикальна).

Для задання автоматичного переносу слів при створенні багаторядкового текстового поля використовується властивість WrapWord. Якщо ця властивість приймає значення False, то перехід на новий рядок здійснюється тільки при натисканні клавіші <Enter> і та частина рядка, яка не поміщається по довжині в елементі управління, буде не видна. Щоб всі слова були видні і автоматично переносилися на нову стрічку, необхідно залишити за замовчуванням значення True властивості WrapWord. При значенні True, не залежно від значення властивості ScrollBars, горизонтальна смуга прокрутки відображатися не буде.

Рис. 2. Вид текстового поля в залежності від значення його властивостей MultiLine, ScrollBar і WordWrap.

Управління текстом

Програма Visual Basic дозволяє під час виконання програми управляти текстом, що відображається в текстовому полі, за допомогою властивостей SelectionStart, SelectionLength і SelectedText.

У разі, коли фокус вперше переходить на текстове поле, за замовчуванням виділяється весь розташований в полі текст. В результаті введення або перегляду інформації курсор може переміщатися в межах поля. При подальшому повернення фокусу на поле курсор позиціонується в тому місці, куди він був встановлений в останній раз.

Використовуючи властивість SelectionStart об'єкта TextBox, можна вказати місце розміщення курсора в полі при установці фокусу. Значення 0 відповідає самій крайній лівій позиції. Властивість SelectionLength задає ширину точки введення. За замовчуванням вона дорівнює 0, тобто, в тому місці, де курсор встановлений, можна починати введення символів, не видаляючи розташованої в полі інформації.

Властивість SelectedText дозволяє задати текст, який замінить під час виконання програми виділений фрагмент. Щоб знімалося виділення тексту з об'єкта TextBox при переході до іншого елементу, слід задати значення True для властивості HideSelection.

Розглянемо невеликий приклад створення додатка, що містить форму, дані якої будуть доповнюватися новою інформацією. Для цього при установці фокусу на поле курсор повинен розташовуватися праворуч від тексту.

Форма містить заголовок і текстове поле. При створенні програми використовуються розглянуті елементи управління Label і TextBox:

1. Створіть новий Windows-додаток.

2. Щоб розмістити в формі заголовок, перетягніть на форму елемент управління Label. Використовуючи діалогове вікно Properties (Властивості) і властивість Text, задайте текст заголовка.

3. Для властивості TextAlign задайте значення MiddleCenter, розташувавши тим самим текст по центру елемента управління, і встановіть шрифт тексту за допомогою властивості Font.

4. Додайте на формі текстове поле. Для цього виберіть на панелі елементів керування об'єкт TextBox, перетягніть його на форму і надайте йому ім'я txtBox.

5. Щоб ввести текст, який відображається в текстовому полі при виконанні форми, виділіть властивість Text і введіть в правій колонці необхідний текст.

6. Для задання положення покажчика при зверненні до елементу управління створіть процедуру обробки події отримання текстовим полем фокусу. Для цього перейдіть у вікно редактора коду і виберіть зі списку Class Name (Ім'я класу) значення txtBox, а зі списку Method Name (Ім'я методу) - GotFocus.

7. У тіло процедури додайте наступні команди:

        txtBox.SelectionStart = txtBox.TextLength

        txtBox.SelectionLength = 0

Перша команда задає початкове положення виділяється в поле тексту. За допомогою властивості TextLength обчислюється довжина тексту, розміщеного в текстовому полі і заданого властивістю Text. Друга команда процедури задає довжину фрагмента тексту.

8. Запустіть додаток. Покажчик буде розташований в елементі управління TextBox праворуч від тексту.

Нередаговані текстові поля

Як вже зазначалося раніше, текстові поля, на відміну від міток, призначені для введення інформації користувачем при виконанні програми. Але коли необхідно, щоб дані тільки проглядалися і не редагувалися, використовується властивість ReadOnly. При встановленні значення True для зазначеного властивості користувач може переглядати дані без можливості редагування. У цьому випадку зміна інформації в текстовому полі здійснюється тільки програмно.

Перевірка правильності введення даних

При роботі з текстовими полями виникає необхідність перевірки введених користувачем даних. У Visual Basic для цих цілей призначений подія Validating. Дана подія викликається, тільки якщо властивість CausesValidation зазначеного і наступного елементів має значення True.

Розглянемо невеликий приклад, який дозволить вводити в текстове поле тільки числові значення. Якщо вводиться інформація в іншому форматі, з'являється відповідне попередження. Для цього виконайте такі дії:

1. Додайте в формі текстове поле.

2. Для завдання процедури обробки події Validating відкрийте вікно редактора коду. Зі списку Class Name (Ім'я класу) виберіть значення txtBox, а зі списку Method Name (Ім'я методу) - значення Validating, що дозволяє задати процедуру перевірки введених в поле даних.

3. Додайте в тіло процедури наступний код:

        If Not IsNumeric(txtBox.Text) Then

            MessageBox.Show("Потрібно вводити числа!")

            txtBox.Focus()

        End If

Функція IsNumeric використовується для перевірки введених даних на їх відповідність числовим значенням. У разі якщо введені дані будь-якого іншого формату, відкривається вікно повідомлень з текстом "Потрібно вводити числа!". Метод Focus дозволяє залишити фокус на полі, в яке неправильно було введено значення.

4. Додайте в формі ще одне текстове поле для використання в якості об'єкта, на який можна перевести фокус за допомогою клавіші <Tab> після введення інформації в перше поле.

Використання текстового поля для введення пароля

Текстове поле в Visual Basic характеризується двома властивостями, що дозволяють застосовувати їх при створенні полів, які призначаються для введення пароля:

  • PasswordChar - задає символ, який відображається в полі замість символів, що вводяться;
  • MaxLength - визначає максимальне число символів, що вводяться в поле.

На рис. 3 показана форма, в якій в якості символу, відображуваного в текстовому полі при введенні пароля, обраний символ зірочки (*).

Рис.3. Форма, призначена для введення паролю