大数跨境
0
0

WPF App开发入门教程( 九、文本控件)

WPF App开发入门教程( 九、文本控件) Win开发者
2025-12-04
5
导读:WPF中的文本控件介绍

控件分类

在第一篇文章

WPF App开发入门教程( 一、.Net Core/.NET和WPF介绍)

中的WPF的功能和特性部分根据功能性介绍了WPF的控件 名称。

在接下来的文章中,将会详细地介绍各个控件的概念及使用。

主要包括:

内容控件:Label、Button、CheckBox、ToggleButton、RadioButton、ToolTip和ScrollViewer

带有标题的内容控件:TabItem、GroupBox、Expander

导航控件:Frame、TabControl、Page

窗体控件:Window

文本控件:TextBox、PasswordBox、RichTextBox

列表控件:ListBox、ListView、DataGrid、ComboBox、TreeView和ToolBar

基于范围的控件:Slider和ProgressBar

日期控件:Calender和DatePicker

媒体控件:Image和MediaElement

轻量级控件:TextBlock

菜单:Menu、ContextMenu

浏览器控件:WebBrowser

 

文本控件

TextBox、PasswordBox、和RichTextBox都是文本控件。

虽然把这三个控件归到一个类别进行演示,实际他们继承的类并不相同。

TextBox和RichTextBox都继承自TextBoxBase,TextBoxBase是为文本编辑控件提供功能的抽象基类。

 

TextBox控件

TextBox是普通文本框控件,支持显示或编辑未设置格式的文本。相比于RichTextBox,TextBox占用的资源更少。

 

 

TextBox和RichTextBox对比

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

 

常用属性

属性
说明
TextWrapping
指示文本框应该如何换行
Text
文本框要显示的文本
TextAlignment
文本框水平对齐方式
SelectedText
文本框选中的文本
MaxLines
文本框显示的最多行数
MinLines
文本框显示的最小行数
AcceptReturn
按下回车时,是否换行
VerticalScrollBarVisibility
控制垂直滚动条的可见性
SelectionStart
所选文本的开始位置
SelectionLength
所选文本的长度

 

设置文本框文本

通过TextBox.Text属性,可以设置/获取文本框的显示文本

 

多行显示

通过TextBox.TextWraping属性,可以设置文本框的换行方式,可选以下枚举值:

public enum TextWrapping  {      //如果行溢出可用块宽度,则将发生换行。 但是,如果换行算法不能确定换行时机,例如超长单词限制于固定宽度容器中而不允许滚动时,行会溢出块宽度。      WrapWithOverflow = 0,      //不执行换行。      NoWrap = 1,      //如果行溢出可用块宽度,即使标准换行算法不能确定换行时机,例如超长单词限制于固定宽度容器中而不允许滚动时,也将发生换行。      Wrap = 2  }

可以通过设置TextBox.MaxLines属性来设置文本框能显示的最多行数,在未指定TextBox高度的情况下,TextBox会显示为能显示MaxLines行数的高度。

<TextBox Width="200" HorizontalAlignment="Center" VerticalAlignment="Center" Text="One of the TextAlignment values that specifies the horizontal alignment of the contents of the text box. The default is Left." TextWrapping="WrapWithOverflow" MaxLines="3"></TextBox>

TextBox.MinLines属性可以设置最小显示行数。

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

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

 

选择文本 

通过TextBox.SelectionStart属性设置所选文本的开始位置、TextBox.SelectionLength设置所选文本的长度。

TextBox.SelectedText属性可以快速检查或改变在文本框中选中的文本。

 

例如我们在界面上放置一个按钮,当按钮点击时,设置SelectionStart = 0,SelectionLength = 13

<TextBox Margin="10" Width="200" Name="tbox1" HorizontalAlignment="Center" VerticalAlignment="Center" Text="One of the TextAlignment" TextWrapping="WrapWithOverflow" VerticalScrollBarVisibility="Auto" MaxLines="3" AcceptsReturn="True"></TextBox><Button Content="选中文本" Click="Button_Click"></Button>

private void Button_Click(object sender, RoutedEventArgs e) {     tbox1.Focus();     tbox1.SelectionBrush = Brushes.Red;     tbox1.SelectionStart = 0;     tbox1.SelectionLength = 13; }

运行效果如下:

 

说明:

需要先设置文本框焦点,否则设置选中无效

 

TextBox.AutoWordSelection属性设置为true时,可以在拖动鼠标时自动选中整个单词。

TextBox.SelectionBrush属性可以设置文本选中时的画刷。

 

PasswordBox

PasswordBox是密码文本框,用于输入密码。它跟TextBox不同的是,输入的文本会变成圆圈符号,PasswordBox不支持剪贴板。

 

常用函数

函数
说明
Clear
清除PasswordBox.Password属性的值
Paste
将剪贴板的内容替换当前选中的密码文本
SelectAll
选中全部密码文本

 

常用属性

属性
说明
Password
获取/设置当前PasswordBox的密码文本
PasswordChar
获取/设置PasswordBox密码的掩码字符

当密码更改时,会触发PasswordChanged事件。

PasswordBox内部,使用的是System.Security.SecureString对象来存储密码,与普通文本类似,Security也是纯文本对象,但是是以加密方式在内存中保存。用于加密字符串的密钥是随机生成的,存储在一块从来不会写入到磁盘的内存中。

 

说明:

PasswordBox.Password属性是CLR属性,而非WPF的依赖属性,所以Password不支持绑定。在后面介绍MVVM及绑定时,会介绍如何实现PasswordBox.Password的绑定。

 

RichTextBox

RichTextBox是富文本框,它支持富文本(支持格式化文本(字体、颜色、段落)、图片、表格等复杂内容),使用WPF中的FlowDocument对象。

 这里仅做简单介绍,在后面介绍WPF中的文档时,再进行详细介绍。

 

基础使用

  <!-- 基础 RichTextBox -->  <RichTextBox x:Name="rtbMain" Margin="20">      <!-- 初始内容:FlowDocument + Paragraph + Run -->      <FlowDocument>          <Paragraph FontSize="14" Foreground="Black">              <Run Text="这是 RichTextBox 初始文本"/>              <Bold>                  <Run Text="(加粗)"/>              </Bold>              <Italic>                  <Run Text="(斜体)"/>              </Italic>          </Paragraph>          <Paragraph>              <Run Text="第二行文本,支持换行和段落间距"/>          </Paragraph>          <Paragraph>              <Image Source="c.jpg" Width="300"></Image>          </Paragraph>      </FlowDocument>  </RichTextBox>


 运行效果


常用属性

属性
说明
IsReadOnly
是否只读(true 则禁止编辑)
AcceptsTab
是否允许按 Tab 键(默认 false
VerticalScrollBarVisibility
垂直滚动条显示规则(Auto/Visible/Hidden
HorizontalScrollBarVisibility
水平滚动条显示规则
FontFamily/FontSize/FontWeight
默认字体样式(可被内部元素覆盖)

示例代码

https://github.com/zhaotianff/DotNetCoreWPF/tree/master/%E5%85%AB%E3%80%81WPF%E4%B8%AD%E7%9A%84%E5%B8%B8%E7%94%A8%E6%8E%A7%E4%BB%B6(%E4%B8%89)/WPF%E4%B8%AD%E7%9A%84%E5%B8%B8%E7%94%A8%E6%8E%A7%E4%BB%B6(%E4%B8%89)

 

参考资料:

https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.primitives.textboxbase?view=windowsdesktop-8.0

https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.listview?view=windowsdesktop-8.0

https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/controls/how-to-create-a-custom-view-mode-for-a-listview?view=netframeworkdesktop-4.8


【声明】内容源于网络
0
0
Win开发者
Windows开发技术分享与传播。主要涵盖C#/WPF桌面开发、Win32桌面开发、PowerShell、基础逆向技术、Windows高级技巧等。
内容 160
粉丝 0
Win开发者 Windows开发技术分享与传播。主要涵盖C#/WPF桌面开发、Win32桌面开发、PowerShell、基础逆向技术、Windows高级技巧等。
总阅读100
粉丝0
内容160