TextBox 概述

TextBox 类使你能够显示或编辑未格式化的文本。 TextBox 的常见用途是在窗体中编辑未设置格式的文本。 例如,请求用户名、电话号码等的表单将使用 TextBox 文本输入控件。 本主题介绍 TextBox 类,并提供了如何在可扩展应用程序标记语言(XAML)和 C# 中使用它的示例。

TextBox 还是 RichTextBox?

同时TextBoxRichTextBox允许用户输入文本,但两个控件用于不同的方案。 TextBoxRichTextBox 需要更少的系统资源,因此它在只需要编辑纯文本时是理想的,例如用于表单中。 如果用户需要编辑格式化文本、图像、表格或其他受支持的内容,则这是 RichTextBox 更好的选择。 例如,编辑需要格式、图像等的文档、文章或博客时,最好使用 RichTextBox 来实现。 下表总结了TextBoxRichTextBox的主要特征。

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

注释

尽管TextBox不支持格式设置相关的编辑命令(如 ToggleBold Ctr+B),但两个控件都支持许多基本命令。MoveToLineEnd 有关详细信息,请参阅 EditingCommands

以下各节介绍了支持 TextBox 的功能。 关于 RichTextBox 的详细信息,请参阅 RichTextBox 概述

实时拼写检查

可以在 TextBoxRichTextBox 中启用实时拼写检查。 启用拼写检查后,任何拼写错误的单词下方会显示一条红线(见下图)。

拼写检查文本框Editing_TextBox_with_Spellchecking

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

上下文菜单

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

具有上下文菜单的 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>

TextWrapping属性设置为Wrap会导致文本在到达控件TextBox边缘时换行到新行,如有必要,会自动扩展TextBox控件以包含新行的空间。

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

VerticalScrollBarVisibility 属性将滚动条添加到 TextBox 以便滚动浏览 TextBox 的内容,如果 TextBox 的扩展超出了包含它的框架或窗口大小。

若要详细了解与使用 TextBox 相关联的不同任务,请参阅操作说明主题

检测内容更改时间

通常,应该使用TextChanged事件来检测TextBoxRichTextBox中的文本何时发生更改,而不是如预期的那样使用KeyDown。 有关示例,请参阅检测 TextBox 中的文本何时更改

另请参阅