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

标签 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

最佳答案

使用 LINQ 和 Any方法:

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

另外最好使用string.IsNullOrWhiteSpace :

if (dataGridView1.Rows.Cast<DataGridViewRow>()
     .Any(c => string.IsNullOrWhiteSpace(c.Cells[0].Value?.ToString())))

关于c# - 如何检查 DataGridView 中的所有行是否不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46205327/

相关文章:

c# - 当ThreadPool构造新线程而不是重用它们时?

c# - 导致WCF代理出错的情况有哪些?

c# - 保存背景色

winforms - 如何以编程方式向表单添加控件?

c# - 为什么 WebApi Controller 运行后没有人处理 DbContext?

c# - 添加程序集引用以使用开发控制台进行编译

c# - 在工具条左侧添加一个按钮

java - 字母打印直到整个单词最终以三角形的形式显示,Java

java - 如何以更 "elegant"的方式重写这行代码?

c - 循环输出我的 C 程序的菜单两次