Повторяющийся код для TextBox_LostFocus для нескольких текстовых полей должен быть сокращен до одной функции - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть страница 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);
            }
        }

1 Ответ

0 голосов
/ 01 мая 2019

Вы можете заставить все 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);
        }
    }
}
...