如何检查DataGridView中的所有行是否都不为空?

时间:2017-09-13 19:19:40

标签: c# winforms for-loop datagridview

我有这个问题很长一段时间。

我打算做的是,如果所有cell[0]都有值,它将触发一个事件。如果有null,则会更改TextBox的值。

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        if (dataGridView1.Rows[i].Cells[0].Value.ToString() == null)
        {
            textbox.Text = "null";
            break;
        }
        else 
        {
            MessageBox.Show("No null");
        }
    }

但是这里发生的事情是例如我在DataGridView中有3行,如果第一行不为空,它将在MessageBox午餐。我希望在所有行的单元格都不为空时触发MessageBox

4 个答案:

答案 0 :(得分:5)

使用LINQ和Any方法:

<textarea ng-model="res.Value"
          ng-change="vm.changed(vm.resourceGridResources.Resources[$parent.$index].Resources[0].Value)"
          style="min-width: 300px">
</textarea>

最好使用string.IsNullOrWhiteSpace

if (dataGridView1.Rows.Cast<DataGridViewRow>().Any(c => c.Cells[0].Value?.ToString() == null))
{
    textbox.Text = "null";
}
else 
{
    MessageBox.Show("No null"); 
}

答案 1 :(得分:2)

试试这个:

bool anyNull = false;
for (int i = 0; i<dataGridView1.Rows.Count; i++)
{
    if (dataGridView1.Rows[i].Cells[0].Value.ToString() == null)
    {
        textbox.Text = "null";
        anyNull = true;
        break;
    }
}

if (!anyNull)
    MessageBox.Show("");

答案 2 :(得分:0)

试试这个:

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
       if (dataGridView1.Rows[i].Cells[0].Value.ToString() == null)
       {
            textbox.Text = "null";
            break;
       } 
 }
if(textbox.Text != "null")
{ 
     MessageBox.Show("No null"); 
}

答案 3 :(得分:-1)

您可以尝试以下代码,但不建议使用goto

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {

        if (dataGridView1.Rows[i].Cells[0].Value.ToString() == null)
        {
            textbox.Text = "null";
            goto a;
        }

    }

    a:  MessageBox.Show("Null");