0

为什么我会收到错误消息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;
}
4

3 回答 3

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;
     }
}
于 2012-12-01T22:01:51.790 回答
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
}
于 2012-12-01T21:55:11.770 回答
0

您的字符串很可能包含除int字母甚至点之外的字符

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

listView1.Items[4].SubItems[4].ToString()
于 2012-12-01T21:56:02.000 回答