Question

I have a problem with a continue statement in my C# Foreach loop.

I want it to check if there is a blank cell in the datagridview, and if so, then skip printing the value out and carry on to check the next cell.

Help appreciated greatly.

Here is the code:

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

Solution

Well, you're currently checking whether the cell's size is zero. In a grid, every cell in a column has the same width and every cell in a row has the same height (typically, anyway).

You want to be checking based on the value of the cell. For example:

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

Tweak this for any other representations of "empty" values that you're interested in. If there are lots, you might want to write a specific method for this, and call it in the check:

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

OTHER TIPS

You don't need to use the continue keyword here, you could just do this:

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

Also, you're checking whether the size of the cell is empty. Is this really what you want to do?

What errors are you getting?

Shouldn't you be checking if the cell's value is empty not the size?

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

i want to read only cell[1] data...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());
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top