我有以下代码:
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;
程序挂起并显示图像并呈现无限
答案 0 :(得分:1)
您选择了错误的事件来更改图像。图像更改时会触发事件dataGridView1_CellFormatting
,因此如果您使用此事件更改图像,则会进入无限循环。
由于您的代码正在查询单元格Value
,您可能希望切换到另一个事件,当行/单元格数据更改或绑定时会触发该事件,例如DataGridView.DataBindingComplete
或dataGridView1.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;
}
}