TextBox 概述

借助 TextBox 类,可以显示或编辑未设置格式的文本。 TextBox 的常见用途是在窗体中编辑未设置格式的文本。 例如,要求输入用户的姓名、电话号码等信息的表单将使用 TextBox 控件用于文本输入。 本主题介绍 TextBox 类,并提供有关如何在 Extensible Application Markup Language (XAML) 和 C# 中使用它的示例。

使用 TextBox 还是 RichTextBox?

TextBoxRichTextBox 都允许用户输入文本,但两个控件用于不同场景。 TextBox 需要的系统资源比 RichTextBox 少,因此非常适合只需要编辑纯文本的场景(例如在窗体中使用)。 当用户需要编辑带格式的文本、图像、表格或其他受支持的内容时,RichTextBox 是更好的选择。 例如,编辑需要格式、图像等的文档、文章或博客时,最好使用 RichTextBox 来实现。 下表汇总了 TextBoxRichTextBox 的主要功能。

控件 实时拼写检查 上下文菜单 格式命令,例如 ToggleBold (Ctr+B) FlowDocument 内容,例如图像、段落、表格等
TextBox 不是。
RichTextBox 是(请参阅 RichTextBox 概述 是(请参阅 RichTextBox 概述

注意

虽然 TextBox 不支持与格式相关的编辑命令(例如 ToggleBold (Ctr+B)),但是两个控件均支持许多基本命令,例如 MoveToLineEnd。 有关详细信息,请参阅EditingCommands

TextBox 支持的功能在下面部分中介绍。 关于 RichTextBox 的详细信息,请参阅 RichTextBox 概述

实时拼写检查

可以在 TextBoxRichTextBox 中启用实时拼写检查。 启用拼写检查时,任何拼写错误的字词下方都会出现红线(见下图)。

Textbox with spell-checking

若要了解如何启用拼写检查,请参阅在文本编辑控件中启用拼写检查

上下文菜单

默认情况下,TextBoxRichTextBox 都有一个上下文菜单,该菜单在用户在控件内右键单击时显示。 上下文菜单使用户可以剪切、复制或粘贴(见下图)。

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。 以下示例演示如何使用 Extensible Application Markup Language (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 控件以包含新行的空间。

AcceptsReturn 属性设置为 true 会导致在按下 RETURN 键时插入新行,如果需要,会再次自动扩展 TextBox 以包含新行的空间。

VerticalScrollBarVisibility 属性将滚动条添加到 TextBox,以便在 TextBox 扩展超出包围它的框架或窗口的大小时可以滚动 TextBox 的内容。

有关与使用 TextBox 相关联的不同任务的详细信息,请参阅操作说明主题。

检测内容何时更改

通常 TextChanged 事件应该用于检测 TextBoxRichTextBox 中文本的更改,而不是你可能认为的 KeyDown。 有关示例,请参阅检测 TextBox 中的文本何时更改

另请参阅