检查datagridview的单元格中的空值或空值

时间:2017-04-20 11:27:33

标签: c# datagridview cells

我想检查datagridview的空单元格的空白。因为我使用下面的代码,但即使单元格被填充,它也是闪烁的消息。

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 5 || e.ColumnIndex == 6)
    {

        if (dataGridView1.CurrentCell.Value == null ||
            dataGridView1.CurrentCell.Value == DBNull.Value ||
            String.IsNullOrWhiteSpace(dataGridView1.CurrentCell.Value.ToString()))           
        {
            MessageBox.Show("Please enter  value");
        }
    }

}

哪里是错误..

提前感谢...

3 个答案:

答案 0 :(得分:1)

每次从单元格导航时都会触发'CellLeave'事件,如果您还没有进入单元格,那么您将不会在该单元格上获得“离开”事件。

如果要检查已编辑的单元格是否为空,则可能需要使用“CellEndEdit”事件。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];

            if (cell.Value == null || string.IsNullOrWhiteSpace(cell.Value.ToString()))
            {
                MessageBox.Show("Please enter some velue in cell");
            }
        }

答案 1 :(得分:0)

首先,您要检查两件不同的事情:

e.ColumnIndexCurrentCell

最好只使用其中的一个,因此CurrentCell可以替换为:

dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]

所以完整的代码变为:

if ((e.ColumnIndex == 5 || e.ColumnIndex == 6) && e.RowIndex != -1)
{
    var cellValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

    if (cellValue == null || cellValue == DBNull.Value 
     || String.IsNullOrWhiteSpace(cellValue.ToString()))
    {
        MessageBox.Show("Please enter  value");
    }
}

注意:当你(你猜对了)离开一个单元格(选择另一个,取消选择,等等)时,CellLeave事件会触发。因此,e.ColumnIndex/RowIndex与您刚刚离开的CurrentCell不同。如果要检查单击,只需使用单击事件处理程序。

答案 2 :(得分:0)

来自MSDN

  

当单元格失去输入焦点但不再是当前单元格时发生。

这意味着dataGridView1.CurrentCell不再是您想要的单元格。

要获得正确的细胞使用:

dataGridView1[e.ColumnIndex, e.RowIndex]