清空条目会导致崩溃,TextChanged

Nulling an Entry results in crash, TextChanged

我有一个条目收集一个数字,之后用作双数。 在删除条目中的所有数字以输入新数字之前,一切正常。

我尝试通过在 Text 为 null 时抛出一个新异常来修复它,但它仍然因

而崩溃

Input string was not in a correct format. (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) 没有任何效果,因为代码仍在执行。

您的代码再次检查 null。

if (moneyInput.Text != null)

您还需要检查空字符串。

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

其实Text属性在输入框清空时不会为null,它只是一个空字符串。

也可以考虑使用 Double.TryParse,而不是 Convert.ToDouble。无论字符串的值是什么,TryParse 方法都不会抛出异常,如果字符串为 null、空或格式不正确,该方法只是 returns false.