C# 比较DataGridView值

C# 比较DataGridView值,c#,winforms,datagridview,C#,Winforms,Datagridview,我在C#中有一个WinForms应用程序,它在DataGridView中注册支持票证,每个票证都有一个状态,可能是挂起的或完成的。我想实现一种方法来验证票据是否已完成,然后无法修改此记录。我尝试的是将DataGridView的Status列的每一行中的单元格值与字符串进行比较,如果它们相等,则禁用更新注册表值的按钮。我知道肯定有其他方法,但我是新手 foreach (DataGridViewRow rows in DataGridView1.Rows) {

我在C#中有一个WinForms应用程序,它在DataGridView中注册支持票证,每个票证都有一个状态,可能是挂起的或完成的。我想实现一种方法来验证票据是否已完成,然后无法修改此记录。我尝试的是将DataGridView的Status列的每一行中的单元格值与字符串进行比较,如果它们相等,则禁用更新注册表值的按钮。我知道肯定有其他方法,但我是新手

foreach (DataGridViewRow rows in DataGridView1.Rows)
        {
            if (rows.Cells[10].Value.ToString().Equals("Completed"))
            {
                btnUpdate.Enabled = false;
            }
            else
            {
                btnUpdate.Enabled = true;
            }
        }

这是我尝试过的,但什么也没做。你能帮我做这个吗?或者给我一些关于如何完成所需任务的建议。

使用RowEnter事件:

private void DataGridView1_RowEnter(object sender,DataGridViewCellEventArgs e)
{
  btnUpdate.Enabled=!DataGridView1.Rows[e.RowIndex].Cells[10].Value.ToString().Equals("Completed") ;  
}
也许,在填充gridview之后,需要执行以下操作 (我不记得在初始化时是否引发了RowEnter事件)


你能解释一下这个按钮吗?我想你有多行,只有一个按钮?也许你的意思是只看“当前”行中的单元格10,而不是每一行?
btnUpdate.Enabled=DataGridView1.CurrentRow!=null &&
  !DataGridView1.CurrentRow.Cells[10].Value.ToString().Equals("Completed")