3.2 TextBox
TextBox也是最常用的文本控件,主要用于输入和保存文本内容,是实现文本编辑的主要控件。用户可以通过TextBox的Text属性设置或获取文本内容,如果需要禁用TextBox的编辑功能,可以设置IsReadOnly属性为True,将它设置为只读。TextBox控件与Windows Form窗体程序设计中的TextBox特性基本相同,但功能更加强大。
TextBox控件同样存在TextWrapping属性,取值、作用与TextBlock控件相同,即当TextWrapping="Wrap"时,如果输入一行比较长的文本,长度超过TextBox控件的宽度时,文本内容会换行。TextBox控件还允许接收“回车”键,实现输入文本内容的手工换行,这时需要设置AcceptsReturn属性为True。
当TextBox控件中输入多行文本数据时,可以设置HorizontalScrollBarVisibility或VerticalScrollBarVisibility属性为ScrollBarVisibility.Visible,来显示水平或垂直滚动条,用户可以拖动滚动条查看更多文本内容。
TextBox控件的TextAlignment属性可以设置文本内容在文本框中的对齐方式,可以取Center、Left、Right、Justify,分别表示居中对齐、左对齐、右对齐和两端对齐。
TextBox控件还提供了SelectedText、SelectionLength、SelectionStart用于获取或设置文本框中全部或部分选中内容。其中,SelectedText用于设置或获取选中的内容,SelectionLength用于设置或获取选中文本的长度,SelectionStart用于设置或获取选中文本的起始点。
如以下实例结合TextBlock,设计了一个信息发布页面,单击“获取选中内容”按钮可以获取内容文本框中选中的文本内容,执行结果如图3-4所示。程序的XAML代码如下。
XAML代码:TextBox.xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="107*" /> <ColumnDefinition Width="349*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="82*" /> <RowDefinition Height="66*" /> <RowDefinition Height="78*" /> <RowDefinition Height="174*" /> <RowDefinition Height="72*" /> <RowDefinition Height="155*" /> </Grid.RowDefinitions> <TextBlock HorizontalAlignment="Center" Name="TextBlock1" Text="信息发布" VerticalAlignment="Stretch" Margin="64,18,173,22" FontSize="28" Width="Auto" Grid.Column="1" /> <TextBlock FontSize="20" HorizontalAlignment="Right" Name="TextBlock2" Text="标题:" VerticalAlignment="Center" Width="Auto" Grid.Row="1"/> <TextBlock FontSize="20" HorizontalAlignment="Right" Name="TextBlock3" Text="内容:" VerticalAlignment="Center" Width="Auto" Grid.Row="2" /> <TextBox Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" Margin="5,5,0,0" Name="txbTitle" Text="" VerticalAlignment="Center" MinWidth="300" MinHeight="42" Height="60" Width="322" FontSize="20" InputScope="Url"></TextBox> <TextBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" Margin="5,0,0,0" Name="txbContent" Text="" VerticalAlignment="Top" MinWidth="300" MinHeight="42" Height="252" Grid.RowSpan="2" Width="322" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" FontSize="20" TextWrapping="Wrap" /> <Button Content="发布" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" Margin="5,0,0,0" Name="Button1" VerticalAlignment="Top" Width="120" /> <Button Content="获取选中的内容" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" Margin="125,0,0,0" Name="Button2" VerticalAlignment="Top" Width="225" /> <TextBlock Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="47,25,37,26" Name="Result" Text="" VerticalAlignment="Top" Width="372" Grid.Row="5" TextWrapping="Wrap" /> </Grid>
程序代码如下。
VB.NET代码:TextBox.xaml.vb
Private Sub Button1_Click(sender As System.Object,e As System.Windows.RoutedEventArgs)Handles Button1.Click Dim ResultString As String="" If Me.txbTitle.Text.Trim <> "" And Me.txbContent.Text.Trim <> "" Then ResultString="您发布的信息如下:" ResultString=vbNewLine & "标题:" & Me.txbTitle.Text.Trim ResultString=vbNewLine & "内容:" & Me.txbContent.Text.Trim Me.Result.Text=ResultString End If End Sub Private Sub Button2_Click(sender As System.Object,e As System.Windows.RoutedEventArgs)Handles Button2.Click Dim SelectedStr As String="" If Me.txbContent.SelectionLength > 0 Then MessageBox.Show("您选中的内容为:" & Me.txbContent.SelectedText & vbNewLine & "选中起始点为:" &_ Me.txbContent.SelectionStart.ToString &_vbNewLine & "选中文本长度为:" & Me.txbContent.SelectionLength,"获取选中的内容",MessageBoxButton.OK) End If End Sub Private Sub PhoneApplicationPage_Loaded(sender As System.Object,e As System.Windows.RoutedEventArgs)Handles MyBase.Loaded Me.txbContent.Text="他们说,珀尔马特与施密特分别于1988年和1994年开始领导各自团队从事超新星研究,里斯在施密特的团队中发挥了重要作用。这两支研究团队都以Ia型超新星为观察对象,借助望远镜、新型数码感光设备、高性能计算机等,几乎同时确认宇宙正在加速膨胀。" Me.txbTitle.Text="3位科学家分享2011年诺贝尔物理学奖" End Sub End Sub
图3-4 信息发布页面与TextBox文本内容选择演示
TextBox控件还有一个非常重要的属性是InputScope,此属性决定了当TextBox获得焦点时,手机系统的软件输入面板(Software Input Panel,SIP)的呈现方式。如当InputScope的取值为Url时,SIP面板如图3-5所示。InputScope的取值共有62种,SIP面板呈现方式有11种,InputScope值与SIP面板呈现方式的对应关系如表3-1所示。不同的SIP面板呈现方式中的按键不同,分别适合不同的输入场合,有利于提高输入数据的便捷性。
图3-5 InputScope="Url"时,呈现的SIP面板
表3-1 InputScope值与SIP面板的对应关系
续表
续表