TextBox 概述
借助 TextBox 类,可以显示或编辑未设置格式的文本。 TextBox 的常见用途是在窗体中编辑未设置格式的文本。 例如,要求输入用户的姓名、电话号码等信息的表单将使用 TextBox 控件用于文本输入。 本主题介绍 TextBox 类,并提供有关如何在 Extensible Application Markup Language (XAML) 和 C# 中使用它的示例。
使用 TextBox 还是 RichTextBox?
TextBox 和 RichTextBox 都允许用户输入文本,但两个控件用于不同场景。 TextBox 需要的系统资源比 RichTextBox 少,因此非常适合只需要编辑纯文本的场景(例如在窗体中使用)。 当用户需要编辑带格式的文本、图像、表格或其他受支持的内容时,RichTextBox 是更好的选择。 例如,编辑需要格式、图像等的文档、文章或博客时,最好使用 RichTextBox 来实现。 下表汇总了 TextBox 和 RichTextBox 的主要功能。
控件 | 实时拼写检查 | 上下文菜单 | 格式命令,例如 ToggleBold (Ctr+B) | FlowDocument 内容,例如图像、段落、表格等 |
---|---|---|---|---|
TextBox | 是 | 是 | 否 | 不是。 |
RichTextBox | 是 | 是 | 是(请参阅 RichTextBox 概述) | 是(请参阅 RichTextBox 概述) |
注意
虽然 TextBox 不支持与格式相关的编辑命令(例如 ToggleBold (Ctr+B)),但是两个控件均支持许多基本命令,例如 MoveToLineEnd。 有关详细信息,请参阅EditingCommands。
TextBox 支持的功能在下面部分中介绍。 关于 RichTextBox 的详细信息,请参阅 RichTextBox 概述。
实时拼写检查
可以在 TextBox 或 RichTextBox 中启用实时拼写检查。 启用拼写检查时,任何拼写错误的字词下方都会出现红线(见下图)。
若要了解如何启用拼写检查,请参阅在文本编辑控件中启用拼写检查。
上下文菜单
默认情况下,TextBox 和 RichTextBox 都有一个上下文菜单,该菜单在用户在控件内右键单击时显示。 上下文菜单使用户可以剪切、复制或粘贴(见下图)。
可以创建自己的自定义上下文菜单来重写默认行为。 有关详细信息,请参阅通过 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 事件应该用于检测 TextBox 或 RichTextBox 中文本的更改,而不是你可能认为的 KeyDown。 有关示例,请参阅检测 TextBox 中的文本何时更改。