为什么我收到错误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;
}
答案 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;
}
}