WPF教程(十七)TextBox

文本框是WPF最基础的文本输入控件,允许终端用户编写文本,可以是一行文字,也可以是多行。

单行文本框

文本框是如此的简单,你都不需要设置任何属性,就可以拥有一个完整的可编辑区。

<span style="font-size:14px;"><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 />
        </StackPanel>
</Window></span>
A simple TextBox control

以上代码就可以生成一个文本框,截图中的文字是我在运行代码之后输入进去的。你可以在标记里面预先输入,使用以下属性:

<span style="font-size:14px;"><TextBox Text="Hello, world!" /></span>
右击文本框,会弹出一个菜单,允许你使用系统剪切板。还可以使用默认的键盘快捷键,撤销Ctrl+Z和重做Ctrl+Y,所有这些都是自动获得的。

多行文本框

运行上面的例子,你会发现文本框默认的是单行。按下Enter键没什么反应,如果一直添加文字直到超出单行长度,文本框会滚动。下面的例子展示了如何显示多行:

<span style="font-size:14px;"><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></span>

代码中添加了两个属性:AcceptsReturn决定了文本框是多行的,当你按下回车键时,换到下一行。TextWrapping使文字到达右边界时自动切换到下一行。

使用文本框选择器

和其他系统的文本编辑控件一样,文本框可以一次性删除全部文字,拷贝一部分到剪切板。WPF文本框在选择文字后拥有一系列属性,你可以查看甚至修改。

<span style="font-size:14px;"><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></span>
上面的例子包含了两个文本框控件:一个用户编辑文字,一个用于输出当前选择器的状态。因此,我们设置了IsReadOnly属性为True,防止在状态文本框中编辑。在第一个文本框中订阅SelectionChanged事件,在后台代码如下处理:

<span style="font-size:14px;">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 + "'";
		}
	}
}
</span>
A TextBox control with selection status

我们实现了如下功能:

SelectionStart:获取当前光标的位置,也就是选择器开始的地方。

SelectionLength:获取当前选择器的长度,否则返回0.

SelectedText:获取当前选中的字符,否则返回空的字符串

修改选择器

所有这些属性都是可读可写的,例如,通过设置SelectionStartSelectionLength这两个属性,可以选中一段文字;设置SelectedText属性可以插入和选择一个字符串。最后一定要记住,使用文本框之前,必须先获得焦点,可以使用Focus()方法。





  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值