Поделиться через


Текстовое поле

Класс TextBox позволяет отображать или изменять неформатированный текст. Редактирование неформатированного текста в форме — это распространённое использование TextBox. Например, форма, запрашиваемая имя пользователя, номер телефона и другие сведения, будут использовать TextBox элементы управления для ввода текста.

Снимок экрана: четыре элемента управления TextBox, демонстрирующие различные состояния.

В следующей таблице перечислены распространенные задачи для работы с элементом управления TextBox:

Название Description
Создание элемента управления "Многострочное текстовое поле" Узнайте, как создать текстовое поле, которое принимает несколько строк текста.
Обнаружение изменения текста в текстовом поле Узнайте, как реагировать на изменения текста в текстовом поле.
Включение символов вкладок в элементе управления TextBox Узнайте, как разрешить символы вкладок в текстовом поле.
Получение коллекции строк из текстового поля Узнайте, как получить строки текста из текстового поля.
Сделать элемент управления TextBox доступным только для чтения Узнайте, как запретить редактирование в Текстовом поле.
Размещение курсора в начале или конце текста в элементе управления TextBox Узнайте, как задать положение курсора в TextBox.
Получение выделения текста Узнайте, как получить выделенный текст из текстового поля.
Установка фокуса в элементе управления TextBox Узнайте, как сосредоточиться на текстовом поле.
Установка текстового содержимого элемента управления TextBox Узнайте, как задать исходный текст в текстовом поле.
Включение проверки орфографии в элементе управления редактирования текста Узнайте, как включить проверку орфографии в текстовом поле.
Использование настраиваемого контекстного меню с текстовым полем Узнайте, как создать настраиваемое контекстное меню для TextBox.
Использование проверки орфографии с контекстным меню Узнайте, как интегрировать проверку орфографии с контекстным меню.
Добавить водяной знак в текстовое поле Узнайте, как отобразить замещающий текст в текстовом поле.

TextBox или RichTextBox?

TextBox и RichTextBox позволяют пользователям вводить текст, но эти два элемента управления используются для разных сценариев. TextBox требует меньше системных ресурсов, чем RichTextBox, поэтому он идеально подходит для редактирования обычного текста (например, для использования в форме). RichTextBox — лучший выбор, если пользователю необходимо изменить форматированный текст, изображения, таблицы или другое поддерживаемое содержимое. Например, для редактирования документа, статьи или блога, требующего форматирования, изображений и другого содержимого, лучше всего использовать RichTextBox. В следующей таблице приведены основные функции TextBox и RichTextBox.

Контроль Проверка орфографии в режиме реального времени Контекстное меню Команды форматирования, такие как ToggleBold (Ctrl+B) FlowDocument содержимое, например изображения, абзацы, таблицы и другие
TextBox Да Да нет Нет.
RichTextBox Да Да Да (подробнее см. в обзоре RichTextBox) Да (подробнее см. в обзоре RichTextBox)

Замечание

Хотя TextBox не поддерживает форматирование связанных команд редактирования, таких как ToggleBold (Ctr+B), многие основные команды поддерживаются обеими элементами управления, такими как MoveToLineEnd. Дополнительные сведения см. в разделе EditingCommands.

Функции, поддерживаемые TextBox, рассматриваются в следующих разделах. Дополнительные сведения см. в RichTextBoxразделе "Обзор RichTextBox".

Проверка орфографии в режиме реального времени

Вы можете включить проверку орфографии в режиме реального времени в TextBox или RichTextBox. При включении проверки орфографии красная линия отображается под любыми прописными словами (см. следующее изображение).

Снимок экрана элемента управления TextBox с включенной проверкой орфографии с красным подчеркиванием под словом с ошибками.

Сведения о включении проверки орфографии см. в разделе "Включение проверки орфографии" в элементе управления редактирования текста.

Контекстное меню

По умолчанию и TextBox, и RichTextBox имеют контекстное меню, которое появляется при щелчке правой кнопкой мыши внутри элемента управления. Контекстное меню позволяет пользователю вырезать, копировать или вставлять (см. следующее изображение).

Снимок экрана элемента управления TextBox с контекстным меню с параметрами вырезания, копирования и вставки.

Вы можете создать собственное пользовательское контекстное меню, чтобы переопределить поведение по умолчанию. Дополнительные сведения см. в разделе "Использование настраиваемого контекстного меню" с текстовым полем.

Создание текстовых ящиков

Элемент TextBox может быть в высоту одной строкой или состоять из нескольких строк. Одна строка TextBox лучше всего подходит для ввода небольших объемов обычного текста (например, "Name", "Номер телефона" и других сведений в форме). В следующем примере показано, как создать одну строку TextBox.

<Page  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel>
    <TextBox Width="200" MaxLength="100" />
  </StackPanel>
</Page>

Вы также можете создать объект TextBox , позволяющий пользователю вводить несколько строк текста. Например, если форма попросила биографический эскиз пользователя, вы хотите использовать формат TextBox , поддерживающий несколько строк текста. В следующем примере показано, как использовать язык разметки расширяемых приложений (XAML) для определения TextBox элемента управления, который автоматически расширяется для размещения нескольких строк текста.

<TextBox
  Name="tbMultiLine"
  TextWrapping="Wrap"
  AcceptsReturn="True"
  VerticalScrollBarVisibility="Visible"
>
  This TextBox will allow the user to enter multiple lines of text.  When the RETURN key is pressed, 
  or when typed text reaches the edge of the text box, a new line is automatically inserted.
</TextBox>

TextWrapping Задание атрибута Wrap, который активирует перенос текста на новую строку при достижении края TextBox элемента управления, автоматически расширяет TextBox элемент управления, если это необходимо для добавления места под новую строку.

Задание атрибута AcceptsReturntrue приводит к вставке новой строки при нажатии клавиши RETURN и автоматически расширяет TextBox для включения места под новую строку, если это необходимо.

Атрибут VerticalScrollBarVisibility добавляет полосу прокрутки к TextBox, чтобы содержимое TextBox можно было просматривать, если TextBox расширяется за пределы размеров рамки или окна, которые его заключают.

Дополнительные сведения о различных задачах, связанных с использованием TextBox, см. в разделах инструкций, перечисленных в начале этой статьи.

Обнаружение изменений содержимого

Обычно событие TextChanged должно использоваться для обнаружения, когда текст меняется в TextBox или RichTextBox, вместо KeyDown, как вы могли бы ожидать. Пример см. в разделе "Обнаружение изменений текста в текстовом поле".

Стили и шаблоны

Вы можете изменить значение по умолчанию ControlTemplate , чтобы предоставить TextBox элементу управления уникальный внешний вид. Дополнительные сведения см. в статье "Что такое стили и шаблоны?", а также как создать шаблон для элемента управления.

Свойство контента

Свойство TextBox используется элементом Text управления для отображения текстового содержимого.

Комплектующие

В следующей TextBox таблице перечислены именованные части элемента управления.

Часть Тип Description
PART_ContentHost FrameworkElement Элемент платформы, на котором размещается текстовое содержимое.

Визуальные состояния

В следующей TextBox таблице перечислены визуальные состояния элемента управления.

Имя VisualState Имя VisualStateGroup Description
Disabled CommonStates Элемент управления отключен.
Focused FocusStates Элемент управления имеет фокус клавиатуры.
НедействительныйФокус ValidationStates Элемент управления имеет ошибку проверки и находится в фокусе клавиатуры.
НедействительныйНефокусированный ValidationStates Элемент управления имеет ошибку проверки, но не имеет фокуса клавиатуры.
Наведение курсора CommonStates Указатель мыши находится над элементом управления.
Обычная CommonStates Элемент управления находится в обычном состоянии.
ReadOnly CommonStates Элемент управления находится в режиме только для чтения.
Нецеленаправленных FocusStates Элемент управления не имеет фокуса клавиатуры.
Действительный ValidationStates Элемент управления действителен и не имеет ошибок проверки.

См. также