需要将多个文本框的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文本框的值并判断非空

通过 onchange 事件将 SELECT 的值传递给 Javascript 函数?

多页中文本框的访问地址

word怎么在一页上排出多个一样的表格

ppt怎么让文本框之间距离一样