【问题标题】:Quantity button when null crashes windows store app当 null 崩溃 Windows 商店应用程序时的数量按钮
【发布时间】:2014-05-01 15:15:00
【问题描述】:

我创建了一个 Windows 商店应用程序,它有两个按钮,允许我的用户选择图片数量。该控件在他们需要选择金额时起作用,但是当他们单击文本框内的“X”时,如果他们想将其清除,然后按下按钮,应用就会崩溃。

当我调试时,我的代码块上出现此错误:

{"Input string was not in a correct format."}

private void PicturesSubtract_Click(object sender, RoutedEventArgs e)
{
    int? value = Convert.ToInt32(this.Pic.Text);

    if (value > 1)
    {
        value--;
    }


    this.Pic.Text = value.ToString();
}

我在尝试添加或减去图片数量时遇到同样的错误。

对这个错误的任何帮助都会很棒。

【问题讨论】:

    标签: c# xaml button windows-8 windows-store-apps


    【解决方案1】:

    这行会抛出你的错误

    int? value = Convert.ToInt32(this.Pic.Text);
    

    这样做的原因是Convert.ToInt32 假定您有一个有效的整数,并在所有其他情况下抛出异常,包括 null。

    http://msdn.microsoft.com/en-us/library/system.convert%28v=vs.110%29.aspx

    我推荐两个选项

    首先,在执行任何其他操作之前检查您的文本值是否为空:

    private void PicturesSubtract_Click(object sender, RoutedEventArgs e)
    {
        if(String.IsNullOrEmpty(this.Pic.Text))
            return;
    ....
    

    第二种,使用Int.TryParse方法:

    private void PicturesSubtract_Click(object sender, RoutedEventArgs e)
    {
        int value;
        if(int.TryParse(this.Pic.Text, out value))
        {
            //...Do Stuff, Value is stored at this point
    

    【讨论】:

    • 可能还有其他选择,但这是我最熟悉的两个。
    • 好吧,好吧......也许不是所有其他情况......我认为如果它是带小数点的有效数字,则会截断该值,我自己尽量不要那样使用它。
    • 在我检查空值然后使用 tryParse 后仍然收到错误。
    • “输入字符串的格式不正确”意味着字面意思。如果您的输入字符串不为空,也不是整数,则 Convert 仍会抛出该错误。据我所知, TryParse 不会抛出该错误。如果您仍然收到此消息,并且正在使用 int.TryParse,请仔细检查错误的来源,因为它不会出现在该代码中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多