Общие сведения о TextBox

Класс TextBox позволяет отображать и редактировать текст без форматирования. Чаще всего TextBox используется для редактирования текста без форматирования в форме. Например, форма, запрашивающая имя пользователя, номер телефона и т. д., будет использовать элементы управления TextBox для ввода текста. В этом разделе представлены сведения о классе TextBox и приведены примеры его использования как в XAML, так и на C#.

TextBox или RichTextBox?

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

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

Примечание.

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

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

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

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

Textbox with spell-checking

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

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

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

TextBox with context menu

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

Создание элементов TextBox

Элемент управления TextBox может состоять из одной или нескольких строк. Однострочный элемент управления TextBox лучше всего подходит для ввода небольших объемов обычного текста (например, поля "Имя", "Номер телефона" и т. д. в форме). В следующем примере показано, как создать однострочный элемент управления 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>

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

Если задать значение true для атрибута AcceptsReturn, то при нажатии клавиши ВВОД будет вставляться новая строка, а элемент управления TextBox также будет автоматически расширяться, предоставляя пространство для новой строки, если это необходимо.

Атрибут VerticalScrollBarVisibility добавляет полосу прокрутки к элементу TextBox, которая позволяет просматривать содержимое TextBox, если элемент TextBox расширяется за пределы фрейма или окна, в котором он находится.

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

Определение изменения содержимого

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

См. также