需要将多个文本框的TextBox_LostFocus的重复代码缩减为一个函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要将多个文本框的TextBox_LostFocus的重复代码缩减为一个函数相关的知识,希望对你有一定的参考价值。
我有一个包含多个文本框的xaml页面。对于每个文本框,都有一个TextBox_LostFocus事件处理程序,它处理文本框的内容。对于大多数文本框来说都是一样的。如何整理代码,以便我不必为所有文本框LostFocus事件函数编写相同的代码。
private void TextBox1_LostFocus(object sender,
Windows.UI.Xaml.RoutedEventArgs e)
{
if (TextBox1.Text != "")
{
feet = FeetConversion(TextBox1.Text.Trim());
TextBox1.Text = ConvertDecimalToFraction(feet);
}
}
private void TextBox2_LostFocus(object sender,
Windows.UI.Xaml.RoutedEventArgs e)
{
if (TextBox2.Text != "")
{
feet = FeetConversion(TextBox2.Text.Trim());
TextBox2.Text = ConvertDecimalToFraction(feet);
}
}
答案
您可以使所有TextBox订阅相同的一个处理程序方法。然后,您可以区分事件处理程序方法中的不同文本框并获取其文本。
我做了一个简单的代码示例。 XAML如下所示:
<Grid>
<StackPanel x:Name="stackpanel">
<TextBox></TextBox>
<TextBox></TextBox>
<TextBox></TextBox>
<TextBox></TextBox>
<TextBox></TextBox>
<TextBox></TextBox>
</StackPanel>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
foreach (var control in stackpanel.Children)
{
if (control is TextBox)
{
TextBox textBox = control as TextBox;
textBox.LostFocus += TextBox_LostFocus;
}
}
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null)
{
if (textBox.Text !="")
{
feet = FeetConversion(textBox.Text.Trim());
textBox.Text = ConvertDecimalToFraction(feet);
}
}
}
以上是关于需要将多个文本框的TextBox_LostFocus的重复代码缩减为一个函数的主要内容,如果未能解决你的问题,请参考以下文章
KindEditor获取多个textarea文本框的值并判断非空