2009-05-02 108 views
6

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

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

帮助大大赞赏。

下面是代码:

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

你已经忘了提及您所看到的问题... – 2009-05-02 16:32:22

回答

16

好了,你现在正在检查电池的大小是否为零。在网格中,列中的每个单元具有相同的宽度,并且行中的每个单元具有相同的高度(通常,无论如何)。

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

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

调整本作是你感兴趣的“空”值的任何其他表示如果有很多,你可能要为此编写的具体方法,并调用它在检查:

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

我们不是C#程序员一般留远离continue/goto st atements?我明白他们在某些语言中有自己的位置,可以用来摆脱一些令人讨厌的事情......但是我个人从来没有必要对上面的例子使用continue语句。 – 2009-05-02 17:14:00

4

你并不需要使用在这里继续关键字,你可能只是这样做:

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 
    } 
} 

此外,你检查是否单元格的大小为为空。这真的是你想要做的吗?

你会得到什么错误?

2

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

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

我想只读细胞[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()); 
    } 
}