当我尝试替换图像时程序挂起?

时间:2017-08-14 17:59:37

标签: c#

我有以下代码:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridView dgv = sender as DataGridView;

    if (dgv.Columns[e.ColumnIndex].Name.Equals("edit"))
    {
         string status = dataGridView1.Rows[e.RowIndex].Cells["status"].Value.ToString();

         if (status == "1") 
         {        
              dgv.Rows[e.RowIndex].Cells["edit"].Value = Properties.Resources.edit_disable;
         }
    }
}

当我尝试在此处替换图片时:

 dgv.Rows[e.RowIndex].Cells["edit"].Value = Properties.Resources.edit_disable;

程序挂起并显示图像并呈现无限

1 个答案:

答案 0 :(得分:1)

您选择了错误的事件来更改图像。图像更改时会触发事件dataGridView1_CellFormatting,因此如果您使用此事件更改图像,则会进入无限循环。

由于您的代码正在查询单元格Value,您可能希望切换到另一个事件,当行/单元格数据更改或绑定时会触发该事件,例如DataGridView.DataBindingCompletedataGridView1.RowsAdded

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
     string status = dataGridView1.Rows[e.RowIndex].Cells["status"].Value.ToString();

     if (status == "1") 
     {        
         dgv.Rows[e.RowIndex].Cells["edit"].Value = Properties.Resources.edit_disable;
     }
}