2009-05-02 104 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()); 
    } 
}