Обнуление записи приводит к сбою, TextChanged - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть запись, которая собирает число, которое впоследствии используется как двойное число.Все работает нормально, пока один не удалит все числа в записи, чтобы ввести новый.

Я попытался исправить это, выдав новое исключение, как только текст станет нулевым, но он все еще вылетает с

Входная строка была в неправильном формате.(FormatException)

ошибка возникает в moneyOutput.Text = Convert.ToDouble(moneyInput.Text).ToString() + "€";

, вот мой код xaml:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Bierrechner.Priceentry"
         BackgroundColor="#8c1029"
         Title="Eingabe">
<ScrollView>
    <StackLayout Margin="0,30,0,0" >


        <Entry x:Name="moneyInput"  TextChanged="MoneyInput_TextChanged" Placeholder="z.B. 34,99" PlaceholderColor="Gray" TextColor="White" Keyboard="Numeric"/>
        <Label x:Name="moneyOutput" Margin="0,40,0,0" HorizontalTextAlignment="Center" FontSize="Large" TextColor="Orange"/>
        <Button Text="Weiter" Clicked="Button_Clicked" HorizontalOptions="Center" VerticalOptions="EndAndExpand"/>


    </StackLayout>
</ScrollView>

и мой xaml.cs код:

private void MoneyInput_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (moneyInput.Text != null)
        {
            moneyOutput.Text = Convert.ToDouble(moneyInput.Text).ToString() + "€";
            sharePrice = Convert.ToDouble(moneyInput.Text);
        }

        else if (moneyInput.Text == null) 
        {
            throw new ArgumentException("String cannot be null or empty");                
        }
    }

Я заметил, что if (moneyInput.Text != null) не имеет никакого эффекта, потому что код все еще выполняется.

1 Ответ

0 голосов
/ 03 февраля 2019

Ваш код просто проверьте еще раз null.

if (moneyInput.Text != null)

Вам также необходимо проверить пустую строку.

if (!string.IsNullOrEmpty(moneyInput.Text))

На самом деле свойство Text не будет иметь значение null, когда поле вводаочищается, это просто пустая строка.

Также рассмотрите возможность использования Double.TryParse вместо Convert.ToDouble.Метод TryParse не будет генерировать исключение независимо от значения строки; если строка пустая, пустая или просто не сформирована, метод просто возвращает false.

...