for (int r = 3; r < dataGrid.Rows.Count; r++)
{
    for (int c = 2; c <= 4; c++)
    {
         var ssq = new List<int>(3) {Convert.ToInt32(listGrid[r - 2,c])};
         var sq = new List<int>(3) {Convert.ToInt32(listGrid[r - 1, c])};
         var bq = new List<int>(3) {Convert.ToInt32(listGrid[r, c])};
    }
}
错误提示:输入字符串的格式不正确。正确的写法是什么呢?

解决方案 »

  1.   

    检查listGrid[r - 2,c]之类的值,一定是内容不能被转为int
      

  2.   


    我有使用 convert.toint32 的嘛
      

  3.   

    是listGrid[r - 2,c].Text吧
      

  4.   


    这个表达方法是正确的,我用的c1FlexGrid表格控件,没用dgv
      

  5.   

    那就看看listGrid[r - 2,c]是不是正确的数字格式了
      

  6.   

    如何使用循环[row,1],[row,2],[row,3]
    [row-1,1][row-1,2][row-1,3]
    [row-2,1][row-2,2][row-2,3]判断是否数值的 contain 方法是不是该用 int[] 数组啊
      

  7.   

    var c1 = listGrid[r - 2, c];
    var c2 = listGrid[r - 1, c];
    var c3 = listGrid[r, c];
    Console.WriteLine(c1);
    Console.WriteLine(c2);
    Console.WriteLine(c3);
    var ssq = new List<int>(3) { Convert.ToInt32(listGrid[r - 2, c]) };
    var sq = new List<int>(3) { Convert.ToInt32(listGrid[r - 1, c]) };
    var bq = new List<int>(3) { Convert.ToInt32(listGrid[r, c]) };加上这几行打印结果看看是不是整数形式
      

  8.   

    int[] 和 List<int> 都可以的
      

  9.   

    listGrid[]的某个Item不是数字,调用Convert.ToInt32会产生FormatException异常。FormatException:
    value does not consist of an optional sign followed by a sequence of digits (0 through 9).来自msdn:
    http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx
      

  10.   

    如果不确定 listGrid[]的Item都为数字的话用TryParse()
      

  11.   


                    for (int r = 4; r < dataGrid.Rows.Count; r++)
                    {
                        List<int> ssq = new List<int>(3);
                        ssq.Add(Convert.ToInt32(listGrid[r - 2, 2]));
                        ssq.Insert(1,Convert.ToInt32(listGrid[r - 2, 3]));
                        ssq.Insert(2,Convert.ToInt32(listGrid[r - 2, 4]));                    foreach (int val in ssq)
                        {
                            listGrid[r, 16] = val;
                        }
                    }
    我这样写,怎么调试只显示了最后一个数值呢?
      

  12.   

    foreach (int val in ssq)
    {
        listGrid[r, 16] = val;
    }
    你把3个值赋给同一个单元格,当然只剩下最后一个会显示了
      

  13.   

    393   //r-2行
    591   //r-1行
    871   //r行                for (int r = 4; r < dataGrid.Rows.Count; r++)
                    {
                        List<int> ssq = new List<int>(3);
                        ssq.Add(Convert.ToInt32(listGrid[r - 2, 2]));
                        ssq.Add(Convert.ToInt32(listGrid[r - 2, 3]));
                        ssq.Add(Convert.ToInt32(listGrid[r - 2, 4]));                    if (ssq.Contains(1))
                        {
                            listGrid[r, 16] = "ok";
                        }
                        listGrid[r, 16] = "no";
                    }显示 no, 明明有啊
      

  14.   

    [r, 16] 这个单元格最后的赋值是 no,之后就换别的单元格了,你是想要什么效果啊
      

  15.   

    我分解成如果建立的数组里包含3那么就显示ok; 否则就显示no
      

  16.   

    我是想在[i-2,1][i-2,2][i-3,3]
    [i-1,1][i-2,2][i-3,3]
    [i,1][i,2][i,3]这9个单元格里判断是否有 三连号,然后把判断结果“三连”填在[i,10]返回在这9个单元格里是否有 2-1-0
    [i,11]返回在这9个单元格里是否有 3-2-1   
    [i,12]返回在这9个单元格里是否有 4-3-2 或 0-1-2
    ......
    [i,17]返回在这9个单元格里是否有 9-8-7 或 5-6-7
    [i,18]返回在这9个单元格里是否有 6-7-8
    [i,19]返回在这9个单元格里是否有 7-8-9
      

  17.   

    listGrid[r, 16] = ssq.Contains(1) ? "ok" : "no";
      

  18.   

    已知
    [2,2] = 3
    [2,3] = 9
    [2,4] = 3
    List<int> ssq = new List<int>();
    ssq.Add(Convert.ToInt32(listGrid[2, 2]));
    ssq.Add(Convert.ToInt32(listGrid[2, 3]));
    ssq.Add(Convert.ToInt32(listGrid[2, 4]));
    if (ssq.Contains(3))
    {
    listGrid[2, 16] = "yes";
    }
    listGrid[2, 16] = "no";正确显示yes                for (int c = 2; c <= 4; c++)
                    {
                        List<int> ssq = new List<int>();
                        ssq.Add(Convert.ToInt32(listGrid[2, c]));
                        if (ssq.Contains(3))
                        {
                            listGrid[2, 16] = "yes";
                        }
                        listGrid[2, 16] = "no";
                    }但如果用到循环,则显示no,明显错了
    是哪里错了呢?
      

  19.   

    for (int c = 2; c <= 4; c++)
    {
      List<int> ssq = new List<int>();
      ssq.Add(Convert.ToInt32(listGrid[2, c]));
      if (ssq.Contains(3))
      {
        listGrid[2, 16] = "yes"; // 坐标写死,循环就看最后个值了
      }
      else
      {
        listGrid[2, 16] = "no";
      }
    }