转换为int32时,mscorlib.dll中发生System.FormatException

时间:2016-05-09 08:56:20

标签: c# wpf

我知道,我知道有很多很多问题在这里询问这个错误,每个问题都有自己的反应,但更容易解决关于你自己的代码而不是其他人的反应

我已经为这个课程做了一段时间的大学工作,一旦我开始上课来计算它现在崩溃的东西总数,

我不知道在哪里看,所以我会发布我的主要代码

enter code here
namespace Till


public partial class MainWindow : Window
{ 
     Calculator calc = new Calculator();


    public MainWindow()
    {

        InitializeComponent();


    }

  public  bool User;
    public bool tillopen = false;


    private void button_Click(object sender, RoutedEventArgs e)
    {
        //button clone thingy

        Button btn = (Button)sender;
        label.Content = label.Content + btn.Content.ToString();
        Console.Beep(); // makes the buttons beep 

    }

    private void clear_Click(object sender, RoutedEventArgs e)
    {
        // Clear

        label.Content = "";

    }

    private void Button_Submit_Click(object sender, RoutedEventArgs e)
    {
        // submit
        listView.Items.Add(label.Content);
        label.Content = "";
        calc.setSoldItems(Convert.ToInt32(label.Content)); /// it breaks on this line///
    }

    private void button13_Click(object sender, RoutedEventArgs e)
    {
        //void sale
        label.Content = "";
        listView.Items.Clear();
    }

    private void button15_Click(object sender, RoutedEventArgs e)
    {
        //pound
        label.Content = "1.00";
    }

    private void button12_Click(object sender, RoutedEventArgs e)
    {
        //till open close

        tillopen = true;
    }

    private void button16_Click(object sender, RoutedEventArgs e)
    {
        Login m = new Login();
                    m.Show();
        this.Close();

    }

    private void button14_Click(object sender, RoutedEventArgs e)
    {
        label.Content = "2.00"; // 2 pound
    }

    private void button17_Click(object sender, RoutedEventArgs e)
    {
        label.Content = calc.finish();
    }
}

我试图在另一个WPF(转换为int32)中重新创建错误并且它工作正常,我知道这是我的代码本身的问题,我已经尝试使用其他机器并使用不同版本的视觉工作室本身,所以我们假设它的代码本身而不是破坏的dll文件

所以,在我和我的老师坐下来之前,我会花一整天的时间来寻找帮助,以便节省我们的时间。这项任务将于3周内完成,并决定打破在我身上。

thankies

要复制此错误,我按下我的Windows窗体上的数字按钮,它们点击我创建的提交按钮(开始转换)如果我的类的副本处理所有这些需要我很高兴发布它< / p>

2 个答案:

答案 0 :(得分:0)

在方法 button_click 中,您已将值指定为

public MainPage()
{
    this.InitializeComponent();
    this.Loaded += MainPage_Loaded;
}

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    WebServiceTransfer.TransferSoapClient tsc = new WebServiceTransfer.TransferSoapClient();
    var response = await tsc.HelloWorldAsync();
    textBlock.Text = response.Body.HelloWorldResult;
}

是标签的字符串值,值是连接而不是添加。

当您阅读它时,您将在Int32中进行转换。这将给出异常,因为它不包含任何整数值。

您可以添加如下值:

label.Content = label.Content + btn.Content.ToString();

并在转换之前进行检查,如果标签中有空白值,如果它没有转换它们,并且仅在它有某些值时转换该值,则不会给出任何错误。也不要指定除数字之外的任何值。

答案 1 :(得分:0)

您正在计算:

Convert.ToInt32(label.Content)

但是在你设置之前的那一行:

label.Content = "";

所以这意味着你在计算

Convert.ToInt32("")

,它会为您提供FormatException

也许你应该在覆盖它之前使用label.Content 的值