C# 输入字符串的格式不正确

C# 输入字符串的格式不正确,c#,listview,C#,Listview,为什么我得到的错误是输入字符串的格式不正确。在这行代码中? 下面是我正在使用的完整代码: foreach(listView1.Items中的ListViewItem iiii) { 如果(Convert.ToInt32(listView1.Items[4].SubItems[4].ToString())向该方法传递一个不是数字的sting时,该方法将引发此异常 如果该值不包含后跟数字序列(0到9)的可选符号,则将引发此异常。因此,请确保字符串值listView1.Items[4]。子项[4]

为什么我得到的错误是输入字符串的格式不正确。在这行代码中?

下面是我正在使用的完整代码:

foreach(listView1.Items中的ListViewItem iiii)
{
如果(Convert.ToInt32(listView1.Items[4].SubItems[4].ToString())向该方法传递一个不是数字的sting时,该方法将引发此异常

如果该值不包含后跟数字序列(0到9)的可选符号,则将引发此异常。因此,请确保字符串值
listView1.Items[4]。子项[4]。ToString()
是有效数字,并且仅包含0-9之间的数字和开头的可选符号

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

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
}

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

在执行转换之前,请调试您的应用程序,并确保这实际上是唯一的数字

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

我认为您不需要将整数转换为字符串并重新解析:

Convert.ToInt32(tenthousand.ToString())
此外,您正在枚举所有项,但仅使用forth一个
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;
     }
}
foreach(listView1.Items中的ListViewItem iiii)
{
int值;
string text=iiii.SubItems[4].ToString();
如果(!Int32.TryParse(文本,输出值))
{
Show(String.Format(“无法解析文本”{0}',text));
continue;//列表视图中没有数字,继续或中断
}
如果(值)
Convert.ToInt32(tenthousand.ToString())
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;
     }
}