TextBox控件是WPF中最基本的文字输入控件。它允许最终用户在一行、对话输入、或多行编写,就像是个编辑器。

单行TextBox

TextBox控件非常常用。你可以不使用任何属性,就能有一个完整并可编辑的文本字段。这里有一个简单的示例:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="TextBoxSample" Height="80" Width="250"><StackPanel Margin="10"><TextBox Text="Hello, world!" /></StackPanel>
</Window>

这就是你获取一个文本字段所需要的全部了,在运行这个示例之后,以及在截屏之前,我加入了一些文本,你也可以通过标签的方式来做,通过使用Text属性去预先为文本框填充内容。

尝试在文本框里鼠标右击。你会得到一个选项菜单,允许你和Windows剪贴板一块使用这个TextBox。默认的撤销和重做的键盘快捷方式(Ctrl + Z 和 Ctrl + Y)也应该是起作用的,并且所有这些功能你能夠不受限制的使用。

多行文本框

Make correction

如果你运行上面的例子,你会注意到,文本框控件默认是一个单行控件。当你按下 Enter时,啥事也不会发生,并且如果你添加比一个单行文本框所能容纳的长度还要多的内容时,控件就出滚动条了。不过,使一个TextBox控件变成一个多行编辑器是非常简单的:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="TextBoxSample" Height="160" Width="280"><Grid Margin="10"><TextBox AcceptsReturn="True" TextWrapping="Wrap" /></Grid>
</Window>

我添加了两个属性:AcceptsReturn使得TextBox变成一个多行控件,允许使用 回车/返回键进入到下一行, 和TextWrapping属性,当内容到达一行的尾部时,它会使文本能够自动被包裹起来。

有拼写检查的TextBox

作为额外的好处,TextBox控件实际上带有英语和其他几种语言(as of writing、英语、法语、德语和西班牙语)的自动拼写检查。

Make correction

它非常类似于微软Word,其中拼写错误被划线,您可以右键单击它的建议替代品。启用拼写检查非常容易:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="TextBoxSample" Height="160" Width="280"><Grid Margin="10"><TextBox AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /></Grid>
</Window>

我们使用前面的多行文本框示例作为基础,然后添加了两个新属性:SpellCheck类中名为IsEnabled的附加属性,该属性仅支持对父控件进行拼写检查,以及Language属性,该属性指示拼写检查器使用的语言。

使用TextBox的选择属性

就像Windows中的任何其他可编辑控件一样,TextBox允许选择文本,例如一次删除整个单词或将文本的一部分复制到剪贴板。WPF文本框具有用于处理选定文本的多个属性,所有这些属性都可以读取或修改。在下一个示例中,我们将读取这些属性:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSelectionSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="TextBoxSelectionSample" Height="150" Width="300"><DockPanel Margin="10"><TextBox SelectionChanged="TextBox_SelectionChanged" DockPanel.Dock="Top" /><TextBox Name="txtStatus" AcceptsReturn="True" TextWrapping="Wrap" IsReadOnly="True" /></DockPanel>
</Window>

该示例由两个文本框控件组成:一个用于编辑,另一个用于输出当前的选择状态。为此,我们将IsReadOnly属性设置为true,以防止对状态文本框的编辑。我们在第一个文本框中订阅SelectionChanged事件,我们在后面的代码中处理:

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;namespace WpfTutorialSamples.Basic_controls
{public partial class TextBoxSelectionSample : Window{public TextBoxSelectionSample(){InitializeComponent();}private void TextBox_SelectionChanged(object sender, RoutedEventArgs e){TextBox textBox = sender as TextBox;txtStatus.Text = "Selection starts at character #" + textBox.SelectionStart + Environment.NewLine;txtStatus.Text += "Selection is " + textBox.SelectionLength + " character(s) long" + Environment.NewLine;txtStatus.Text += "Selected text: '" + textBox.SelectedText + "'";}}
}

我们使用三个相关的属性来实现:

SelectionStart,它给出了当前光标位置或是否有选择:它从什么位置开始。

SelectionLength,它给出了当前选择的长度,如果有的话。 否则它将返回0。

SelectedText,如果有选择,它会给我们当前选择的字符串。 否则返回一个空字符串。

修改选择

所有这些属性都是可读的和可写的,这意味着您也可以修改它们。例如,您可以设置SelectionStart和SelectionLength属性以选择自定义文本范围,或者可以使用SelectedText属性插入和选择字符串。请记住,文本框必须具有焦点,例如首先调用Focus()方法,以便工作。

推荐一款WPF MVVM框架开源项目:Newbeecoder.UI

Newbeecoder.UI开源项目

Demo下载:

Newbeecoder.UI开源项目https://share.weiyun.com/py6W1dcK

WPF 入门教程 TextBox详解相关推荐

  1. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  2. Kafka入门教程与详解

    1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...

  3. 万字肝完nodejs入门教程,详解入口,建议收藏(更新中)

    nodejs入门教程 1.前言 2.入门教程 2.1 命令行运行node.js脚本 2.2 退出node.js程序 2.3 如何使用 Node.js REPL 2.3.1 使用方式 2.3.2 点命令 ...

  4. Aras入门教程2_ItemType详解

    -----PLM从业者,Teamcenter.Aras Innovator实施,Aras中文资料比较少,分享给大家一些Aras入门的材料,如有不完善的地方,欢迎交流----- 概述 对象类(ItemT ...

  5. SpringBoot入门教程(一)详解intellij idea搭建SpringBoot

    最近公司有一个内部比赛(黑客马拉松),报名参加了这么一个赛事,在准备参赛作品的同时,由于参赛服务器需要自己搭建且比赛产生的代码不能外泄的,所以借着这个机会,本地先写了个测试的demo,来把tomcat ...

  6. HTLM 零基础入门教程(详解)

    文章目录 前言 文档的后缀名 HTML 标签 一.htlm概念 二.htlm特点 主要有以下三点: 三.常用标签及其属性 1-文本修饰 2-段落 3-标题 4-序列 5-图片 6-音频文件 7-视频文 ...

  7. WPF 入门教程(一)

    WPF 入门教程(一) 1.布局规则 1.WPF 窗体中,一个窗体只能持有一个空间,当需要展示多个控件时,则需要首先设置一个容器控件(Container).控件的布局有容器来决定. 2.控件应避免明确 ...

  8. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  9. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  10. python编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

最新文章

  1. 单播,组播,广播的区别
  2. C/C++与Matlab混合编程初探
  3. rust(19)-进制
  4. python hist函数_虎哥的python小技巧放送之绘制统计图(2)
  5. HarmonyOS之深入解析通知的使用
  6. 从零开始内建你的安全测试流程
  7. linux正向连接shell_[经验] Linux 怎么连接 Xshell?
  8. Windows下Qt Creator设置IDE菜单字体样式
  9. 类型 jpa mysql_Spring Boot集成JPA
  10. python中常见的运行时错误_python--17个新手常见Python运行时错误
  11. tcl脚本中list(列表的用法)附举例说明
  12. 计算机专业必看电影,IT人士必看的10部电影
  13. 2020第十一届11月蓝桥杯大赛软件类B组C/C++省赛题解
  14. 利用OpenCV进行颜色检测
  15. string.h头文件
  16. zk 有一个节点报 It is probably not running且日志无明显报错
  17. OGNL学习笔记-OGNL基础
  18. Qt XXXr.obj : error LNK2001: 无法解析的外部符号 3 个无法解析的外部命令问题
  19. 计算机中右移一位和除以二的区别
  20. 商品规格表的制作 mysql_购物商城数据库设计-商品表DDL(Mysql)

热门文章

  1. 分享146个培训课件PPT模板,总有一款适合你
  2. 计算机Java毕业设计管理系统题目及源码分享
  3. nginx源码准备 - Linux C++网络编程(五)
  4. 如何用python计算圆周率_使用MicroPython计算任意位数圆周率
  5. LEACH算法仿真实验
  6. java取拼音首字母_java取出汉字字符串的拼音首字母
  7. 如何检查电脑是否已经安装Flash Player
  8. ubuntu18.04 安装nvidia显卡驱动
  9. Mathtype6.9保姆级安装教程,亲测可用-----经常踩坑
  10. python实现遗传算法实例_vn.py发布v2.0.3 - 遗传算法