【问题标题】:C# Foreach Loop - Continue IssueC# Foreach 循环 - 继续问题
【发布时间】:2009-05-02 16:28:46
【问题描述】:

我的 C# Foreach 循环中的 continue 语句有问题。

我希望它检查datagridview中是否有空白单元格,如果有,则跳过打印值并继续检查下一个单元格。

非常感谢您的帮助。

代码如下:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}

【问题讨论】:

  • 您忽略了提及您所看到的问题...

标签: c# datagridview foreach continue


【解决方案1】:

嗯,您当前正在检查单元格的 size 是否为零。在网格中,列中的每个单元格都具有相同的宽度,而行中的每个单元格都具有相同的高度(通常,无论如何)。

您希望根据单元格的 进行检查。例如:

if (cell.Value == null || cell.Value.Equals(""))
{
    continue;
}

针对您感兴趣的“空”值的任何其他表示调整此方法。如果有很多,您可能希望为此编写一个特定方法,并在检查中调用它:

if (IsEmptyValue(cell.Value))
{
    continue;
}

【讨论】:

  • 难道我们 C# 程序员一般不会远离 continue/goto 语句吗?我知道它们在某些语言中有自己的位置,可以用来逃避一些讨厌的事情……但就我个人而言,我从来不需要像上面的例子那样使用 continue 语句。
  • 不,我发现 continue 和 break 都很好 - 尽管我从未使用过 goto。特别是,我不想只是反转条件并将所有内容放在另一个块中 - 与“如果满足此条件,我不想在此迭代中做任何其他事情”的简单性相比,嵌套变得疯狂。
【解决方案2】:

你不需要在这里使用 continue 关键字,你可以这样做:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (!cell.Size.IsEmpty) MessageBox.Show(cell.Value.ToString()); // note the ! operator
    }
}

此外,您正在检查单元格的 size 是否为空。这真的是你想做的吗?

你遇到了什么错误?

【讨论】:

    【解决方案3】:

    您不应该检查单元格的值是否为空而不是大小吗?

    if(String.IsNullOrEmpty(cell.Value.ToString()))
        continue;
    

    【讨论】:

      【解决方案4】:

      我只想读取单元格[1] 数据...olny

      foreach (DataGridViewRow row in this.dataGridView1.Rows)
      {                            
          foreach (DataGridViewCell cell in row.Cells[1])
          {
             if (cell[1].Value == null || cell.Value.Equals(""))
      {
          continue;
      }
      
              MessageBox.Show(cell[1].Value.ToString());
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-09
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多