输入字符串的格式不正确

时间:2012-12-01 21:53:27

标签: c# listview

为什么我收到错误Input string was not in a correct format。在这行代码中?

Convert.ToInt32(listView1.Items[4].SubItems[4].ToString())

以下是我使用的完整代码:

foreach (ListViewItem iiii in listView1.Items)
{
    if (Convert.ToInt32(listView1.Items[4].SubItems[4].ToString()) <= Convert.ToInt32(tenthousand.ToString()))
    {
        message2 = "GREAT";
        msgColor2 = System.Drawing.Color.Green;
        break;   // no need to check any more items - we have a match!
    }

    labelVideoViews2.Text = message2;
    labelVideoViews2.ForeColor = msgColor2;
}

3 个答案:

答案 0 :(得分:0)

当你向它传递一个不是数字的刺痛时,Convert.ToInt32方法会抛出此异常。

如果值不包含可选符号后跟一系列数字(0到9),则抛出此异常。因此,请确保字符串值listView1.Items[4].SubItems[4].ToString()是有效数字,并且仅包含0-9的数字和开头的可选符号。

或者,您可以使用不会引发异常的int.TryParse方法:

int result;
if (int.tryParse(listView1.Items[4].SubItems[4].ToString(), out result))
{
    // the value was successfully parsed to an integer => use the result variable here
}
else
{
   // the supplied value was not a valid number
}

答案 1 :(得分:0)

您的字符串很可能包含int之外的字符,如字母或偶数点

在转换调试你的应用程序之前,确保它实际上只是数字

listView1.Items[4].SubItems[4].ToString()

答案 2 :(得分:0)

我认为您不需要将整数转换为字符串并将其解析回来:

Convert.ToInt32(tenthousand.ToString())

此外,您要枚举所有项目,但仅使用前一个listView1.Items[4]。我认为这是错误的。并使用Int32.TryParse来避免解析异常:

foreach (ListViewItem iiii in listView1.Items)
{
     int value;
     string text = iiii.SubItems[4].ToString();
     if (!Int32.TryParse(text, out value))
     {
         MessageBox.Show(String.Format("Cannot parse text '{0}'", text));
         continue; // not number was in listview, continue or break
     }

     if (value <= tenthousand)
     {
          labelVideoViews2.Text = "GREAT";
          labelVideoViews2.ForeColor = Color.Green;
          break;
     }
}