C#异常抛出:'System.FormatException'在mscorlib.dll中。

5

异常抛出:System.FormatException,位置在mscorlib.dll

{"输入字符串格式不正确。"}

我已经做了一整天了,请帮忙!上面的是错误信息。我对C#还有点陌生,所以需要更详细的答案(我不太懂行话)。

public partial class Form1 : Form
{
    double a, b, d, f, g, t;
    string z;
    int c;


    public Form1()
    {
        InitializeComponent();
    }


    private void Form1_Load(object sender, System.EventArgs e)
    {

    }



    private void button7_Click(object sender, EventArgs e)
    {
        a = Convert.ToDouble(textBox18.Text);
        z = Convert.ToString(comboBox1);
        d = Convert.ToDouble(checkBox1);
        f = Convert.ToDouble(textBox13.Text);
        g = Convert.ToDouble(textBox14.Text);
        t = Convert.ToDouble(textBox19.Text);


        if (z == "a")
        {
            textBox15.Text = Convert.ToString(a * g * d * t);
        }
        else if (z == "b")
        {
            textBox15.Text = Convert.ToString(c);
        }
    }

1
你的textbox#.Text可能为空或为null。 - eakgul
可能是重复的问题:在将字符串转换为十进制数时出现[System.FormatException: 输入字符串格式不正确]。(https://dev59.com/n37aa4cB1Zd3GeqPvNAK) - Satpal
如果需要获取下拉框的值,请使用comboBox1.SelectedValue.ToString(),同样适用于复选框。它们都有属性,可以使用它们来获取值。 - FakeisMe
3个回答

2

可能出现的问题有:

输入的内容可能不符合转换成双精度格式的要求。

a = Convert.ToDouble(textBox18.Text);
    z = Convert.ToString(comboBox1.SelectedValue);
    d = Convert.ToDouble(checkBox1.Checked);
    f = Convert.ToDouble(textBox13.Text);
    g = Convert.ToDouble(textBox14.Text);
    t = Convert.ToDouble(textBox19.Text);

或者也许应该是类似于这样的东西

    z = Convert.ToString(comboBox1.SelectedValue);
   d = Convert.ToDouble(checkBox1.Checked);

所有textBoxes的给定输入都是数字,而combobox的给定输入是字母。 - Jason Kats

0
你需要从控件中获取值,而不是解析控件本身,
例如 --> 对于组合框应该使用 comboBox.SelectedValue

0

问题出在这行代码:

  textBox15.Text = Convert.ToString(a * g * d * t); 

因为您正在将d与其他值相乘,而d包含不同类型的值,例如checkbox1没有返回正确的值

因此,首先您应该以正确的格式获取复选框的值,例如:

d= Convert.ToDouble(comboBox.SelectedValue)

您可以在此链接中找到有关错误的更多详细信息:https://dev59.com/qWct5IYBdhLWcg3wNqsg - Anurag_Soni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接