4.4 文本框(TextBox)

文本框(TextBox)控件是表示一个可用于显示和编辑单格式、多行文本的控件。TextBox控件常用于在表单中编辑非格式化文本,例如,如果一个表单要求输入用户姓名、电话号码等,则可以使用 TextBox 控件来进行文本输入。控件的XAML语法如下:

<TextBox .../>

TextBox的高度可以是一行,也可以包含多行。对于输入少量纯文本(如表单中的“姓名”、“电话号码”等)而言,单行TextBox是最好的选择。同时你也可以创建一个使用户可以输入多行文本的TextBox,例如,表单要求输入较多的文字,可能需要使用支持多行文本的TextBox。设置多行文本的方法很简单,将TextWrapping特性设置为Wrap会使文本在到达TextBox控件的边缘时换至新行,必要时会自动扩展TextBox控件以便为新行留出空间,这点是和TextBlock控件一样的。同时TextBox控件也可以设置文字的相关属性(FontFamily、FontSize、FontStyle、FontWeight)。下面我们再来介绍TextBox控件中的一些特别的功能特性。

(1)支持回车键换行

因为TextBox控件是一个文本输入的控件,所以它除了对自动换行的支持之外,还这次还回车键换行的输入。不过在默认的情况下,TextBox控件是不支持回车键换行的,如果需要支持回车键换行,需要把把AcceptsReturn属性设置为true。

(2)键盘的类型

由于Windows Phone手机并不支持第三方的输入法软件,所以在文本框输入的情况下,只能够使用系统提供的输入法和键盘类型。那么TextBox控件是可以通过InputScope属性来设置在控件输入信息的时候所提供的键盘类型,比如你的TextBox文本框只是要求用户输入手机号码,那么你通过设置InputScope="TelephoneNumber"来制定电话号码的输入键盘。关于键盘的类型可以通过枚举InputScopeNameValue来看到所有的键盘类型,包括有EmailSmtpAddress(邮件地址输入)、Url(网址输入)、Number(数字输入)等等。如果使用C#代码来设置TextBox控件的键盘类型,代码的编写会稍微麻烦一点,示例代码如下所示:

textBox1.InputScope = new InputScope();

textBox1.InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.TelephoneLocalNumber });

(3)控件头

通常我们在创建一个输入框的时候都需要在输入框的上面添加相关的说明,比如“请输入用户名”等。那么TextBox控件会通过Header属性来直接支持添加这个控件头的描述说明,简化了控件的实现。Header属性的默认样式是跟系统的文本框的控件头的样式保持一致。

(4)操作事件

TextBox控件支持三个常用的操作事件,分别是TextChanged事件(TextBox控件文本信息的改变会触发该事件)、SelectionChanged事件(TextBox控件选择信息的改变会触发该事件)、Paste事件(在TextBox控件中粘贴的操作会触发该事件)。TextChanged事件通常会用来检查用户输入信息的改变,然后再获取控件的Text属性的信息进行相关的操作。SelectionChanged事件也是类似的作用,不过SelectionChanged事件则是检查用户选择的文本信息的改变,然后获取控件的SelectedText属性表示选择的文本信息,如果没有选择文本信息,则SelectedText的值是空的字符串。当控件中发生粘贴操作的时候会触发Paste事件,如果有一些信息的输入是不允许粘贴的,可以利用该事件来禁止粘贴的输入操作。

下面给出文本框的示例:创建TextBox控件演示TextBox控件的键盘选择,控件头和操作事件的实现。
    代码清单4-3文本框控件演示(源代码:第4章\Examples_4_3)

MainPage.xaml文件主要代码
------------------------------------------------------------------------------------------------------------------
<StackPanel>
<!--创建一个电话号码的输入文本框控件-->
<TextBox InputScope="TelephoneNumber">
<TextBox.Header>
请输入电话号码:
</TextBox.Header>
</TextBox>
<!--测试TextBox控件的相关操作事件-->
<TextBox x:Name="TextBox1" TextWrapping="Wrap" AcceptsReturn ="true" Header="输入信息:" SelectionHighlightColor="Red"
TextChanged="TextBox1_TextChanged"
SelectionChanged="TextBox1_SelectionChanged"
Paste="TextBox1_Paste"/>
<TextBlock x:Name="textBlock2" Text="操作信息:" FontSize="20"/>
<TextBlock x:Name="textBlock1" TextWrapping="Wrap" FontSize="20"/>
</StackPanel>
MainPage.xam.cs文件主要代码
------------------------------------------------------------------------------------------------------------------
// 文本的信息
string text = "";
// 选择的文本信息
string selectedText = "";
// 是否发生粘贴
string pasteTest = "";
// 文本变化的事件
private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
{
text = TextBox1.Text;
ShowInformation();
}
// 文本选择的事件
private void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
selectedText = TextBox1.SelectedText;
ShowInformation();
}
// 粘贴事件
private void TextBox1_Paste(object sender, TextControlPasteEventArgs e)
{
text = TextBox1.Text;
selectedText = TextBox1.SelectedText;
pasteTest = "产生了粘贴操作";
ShowInformation();
}
// 操作信息展示
private void ShowInformation()
{
textBlock1.Text = "文本信息:“" + text + "”选择的信息:“" + selectedText + "”粘贴的信息:“" + pasteTest + "”";
}

本文来源于《深入浅出Windows Phone 8.1 应用开发》

WP8.1 Runtime文章列表:http://www.cnblogs.com/linzheng/p/3998037.html

源代码下载:http://vdisk.weibo.com/s/zt_pyrfNHb99O

欢迎关注我的微博@WP林政   微信公众号:wp开发(号:wpkaifa)

WP8.1技术交流群:372552293

[深入浅出WP8.1(Runtime)]文本框(TextBox)的更多相关文章

  1. [深入浅出WP8.1(Runtime)]文本块(TextBlock)

    4.3 文本块(TextBlock) 文本块(TextBlock)控件是用于显示少量文本的轻量控件,可以通过TextBlock呈现只读的文本,你可以把TextBlock控件理解为一种纯文本的展示控件. ...

  2. [深入浅出WP8.1(Runtime)]浮出控件(Flyout)

    4.15 浮出控件(Flyout) 浮出控件(Flyout)是一个轻型的辅助型的弹出控件,通常会作为提示或者要求用户进行相关的交互来使用.Flyout控件与Windows Phone里面的弹出框Mes ...

  3. [深入浅出WP8.1(Runtime)]应用文件的URI方案

    6.2.4 应用文件的URI方案 在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地 ...

  4. [深入浅出WP8.1(Runtime)]数据绑定的基础

    11.1 数据绑定的基础 数据绑定是一种XAML界面和后台数据通信的方式,因为界面和后台数据的通信的场景有多种,并且数据于数据之间也存在着不一样的关联关系,所以数据绑定的实现技巧和方式也是多种多样的. ...

  5. [深入浅出WP8.1(Runtime)]Toast通知

    9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...

  6. [深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别

    1.2.2 Windows Phone 8.1应用程序模型 Windows Phone 8.1支持多种开发语言来开发应用程序,包括C#.VB.JavaScript和C++,那么本书的代码主要是采用C# ...

  7. [深入浅出WP8.1(Runtime)]Socket编程之UDP协议

    13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...

  8. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  9. [深入浅出WP8.1(Runtime)]应用实例——移动截图

    10.2应用实例——移动截图 移动截图例子是实现一个把一张图片的某个部分截取出来的功能,并且用户可以选定截取的图片区间.那个该例子会使用ManipulationDelta事件来实现对截取区间的选择.然 ...

随机推荐

  1. APP消息推送:通知和透传

    目前市场上的消息推送方式有两种:通知和透传.什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理.透传消息, ...

  2. 【翻译十一】java-原子性操作

    Atomic Access In programming, an atomic action is one that effectively happens all at once. An atomi ...

  3. Implementing Navigation with UINavigationController

    Implementing Navigation with UINavigationController Problem You would like to allow your users to mo ...

  4. PHPCMS-V9 获取一级栏目、二级栏目、三级栏目

    <!-- 获取一级栏目 -->{pc:content action=" siteid="$siteid" order="listorder ASC& ...

  5. 装饰模式/decorator模式/结构型模式

    装饰模式Decorator 定义 为对象动态的增加新的功能,实现要求装饰对象和被装饰对象实现同一接口或抽象类,装饰对象持有被装饰对象的实例. java实现要点 定义一个接口或抽象类,作为被装饰者的抽象 ...

  6. hdu 5833 Zhu and 772002 高斯消元

    Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...

  7. hdu 4597 + uva 10891(一类区间dp)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...

  8. barabasilab-networkScience学习笔记2-图理论

    第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...

  9. 汇编学习(六)——代码转换程序

    (一)逻辑运算指令 一.双操作数逻辑运算指令 1.指令格式: AND dst,src ; "与"运算, OR dst,src ; "或"运算 XOR dst,s ...

  10. 序列化 Serializable

    1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...