【问题标题】:input string is not in a correct format c#输入字符串的格式不正确c#
【发布时间】:2016-06-22 06:11:12
【问题描述】:

我想将文本值和组合框值相乘并将其显示在 orderprice 文本框中 我在 sql 中使用的数据类型对于所有这些都是 'float'

private void cb_oqty_SelectedIndexChanged(object sender, EventArgs e)
{
    int orderprice;
    int proprice=Convert.ToInt16(txt_oprice.Text);
    int quantity = Convert.ToInt16(cb_oqty.SelectedItem);

    orderprice = proprice * quantity;
    txt_orderprice.Text = Convert.ToString(orderprice);
    txt_orderprice.Update();                                
}

【问题讨论】:

  • 您需要放置断点并调试单个行。只有这样你才能找出哪个语句引发了异常。
  • 我认为当组合填充所有项目时,特定时间会引发异常。它是在选择组合值之前还是在选择之后?
  • 我在这一行遇到错误 int proprice=Convert.ToInt16(txt_oprice.Text);
  • @AlyGoreja 它是在选择组合值之后还是之前出现的?你在哪里给组合框提供数据?即在表单加载中?
  • 当我从它后面的组合框中选择值并且它不显示该值时会出现异常

标签: c# sql types textbox int


【解决方案1】:

先用int.TryParse看看能不能转换文本。该错误似乎表明文本无法转换为 int。

int orderprice = 0;
int proprice = 0;
int quantity = 0;

if (int.TryParse(txt_oprice.Text, out proprice) && int.TryParse(cb_oqty.SelectedValue.ToString(), out quantity))
{
    // It was assigned.
    orderprice = proprice * quantity;
}
else
{
    //Error
}

cb_oqty.SelectedItem 也不会转换为 int,因为它是一个对象。您需要使用 SelectedValue。

【讨论】:

  • 它在 int.tryparse(cb_oqty.selectedvalue, out quantity) 处给出错误
  • int.TryParse(cb_oqty.SelectedValue.ToString(), out 数量)。它需要是 SelectedValue.ToString()
  • 错误对象引用未设置为 tryparse 行中的对象实例
  • 在我从组合框中选择值之后
  • 在 if 语句上放一个断点。在调试器中查看组合框的值有什么。
【解决方案2】:

如果您的 SQL 数据类型是浮点数,那么您的 C# 数据类型也应该是浮点数:

    private void cb_oqty_SelectedIndexChanged(object sender, EventArgs e)
    {
        var proprice = Convert.ToSingle(txt_oprice.Text);
        var quantity = Convert.ToSingle(cb_oqty.SelectedItem);

        var orderprice = proprice * quantity;
        txt_orderprice.Text = orderprice.ToString();

        // this does not do what you think it does. You can remove this line.
        txt_orderprice.Update();
    }

最好使用TryParse 方法。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多