不要在DataGridViewCellFormatting设置列的值啊,因为每当DataGridView发生重绘时便执行一次,这样肯定会闪烁了以下是从数据源绑定的DataTable dt = new DataTable();
dt.Columns.Add("pic",typeof(Image));
for (int i = 0; i < 5; i++)
{
     DataRow row = dt.NewRow();
     row["pic"] =  GetImage(strPath);
     dt.Rows.Add(row);
}DataGridViewImageColumn img = new DataGridViewImageColumn();
img.HeaderText = "产品图片";
img.ImageLayout = DataGridViewImageCellLayout.Zoom;
img.Width = 130;
img.DataPropertyName = "pic";
dgvProduct.Columns.Add(img);
dgvProduct.AutoGenerateColumns = false;
dgvProduct.DataSource = dt;