TextBox控件
该控件用于显示可编辑的文本,如需使TextBox只读,可以通过设置IsReadOnly属性来实现,将该属性设置为true,则不支持编辑。如果需要启用多行文本显示和编辑,可以通过设置AcceptsReturn属性实现,同时使用HorizontalScrollBarVisibility或VerticalScrollBar-Visibility属性以启用水平滚动条或垂直滚动条。可以使用BorderThickness和BorderBrush属性修改TextBox的边框。如要隐藏TextBox周围的边框,只需将TextBox的BorderThickness属性设置为0。
【XAML代码】
【示例】
下面通过一个示例来了解一下TextBox的使用。示例将实现一个简单的“小费计算器”。示例小程序的主界面将由3个TextBox组成,其中两个用来接收用户输入的信息,另一个用来显示计算结果。示例中所有的其他提示性文字都是用TextBlock来显示。
1)首先建立一个新的Windows Phone Application项目文件,将3个TextBox放入界面,另外放入若干个TextBlock用于显示提示信息,将其中一个TextBox控件的IsReadOnly设置为true,由于没有修改控件的默认名称,因此,它们的名称应该是:用于接受消费金额的TextBox是TextBox1,用于接受小费比例的TextBox控件是TextBox2,用于显示应付小费金额的TextBox是TextBox3。
▲程序的界面如图6-21所示。
2)读者可能会发现界面中没有Button控件,那么如何来计算消费呢?这里将采用输入消费金额即可计算消费的模式,也就是说要在用户输入消费金额的同时计算出消费金额,为了要时刻监控用户是否输入或者改变了输入的数据,需要使用TextBox1的TextChanged事件,该事件在每次检测到TextBox1控件内容变化时被触发。
如图6-22所示,在事件管理器中添加对此事件的响应。
3)这里有个小问题,就是每次计算消费还需要用户输入一个消费比例,但是每次都要输入会很麻烦,因此,有必要在程序加载的时候预设一个通用比例(例如15%)。如何解决这个问题呢?最简单的做法就是响应TextBox2的Loaded事件,该事件将会在TextBox2控件被完全加载后触发,
如图6-23所示。
4)为两个事件添加相应的代码如下:
private void textBox2_Loaded(object sender, RoutedEventArgs e)
{
textBox2.Text = "0.15";
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (textBox1.Text != "" & textBox2.Text != "")
{
Double a = Double.Parse(textBox1.Text);
Double b = Double.Parse(textBox2.Text);
textBox3.Text = (a * b).ToString();
}
}
5)程序运行后,输入一个数字在消费金额上,当输入完毕后即可看到消费金额已经计算完毕并显示,
▲如图6-24所示。
在这个示例中,并没有采用标准思路的Button来触发用户的操作,而是改用了TextBox的TextChanged事件。这种方法有时候会在项目设计中带来意想不到的便捷操作体验。在计算过程中,为了防止用户完全清除了消费金额和消费比例TextBox中的内容而导致计算错误,还使用了一个IF语句进行验证,确保在有数据的情况下才进行计算。但是这个验证的方法并不完善,因为它只能检验TextBox内容是否为空,而不能检验其中输入的信息是否为数字,如果用户输入了字母或其他字符将会导致错误。这一点,留给有兴趣的读者去完善。