Tim*_*ter 8 c# datagridview image winforms
如果您AllowUserToAddRows在winforms中指定,DataGridView则用户可以在网格中手动添加新行.现在我想在一列中添加一个图像按钮,它也应该在新行中显示.但我不能让它显示图像,只有红十字图像显示就像没有找到.
这是带有令人讨厌的图像的网格的屏幕截图:

我要展示的图片是Properties.Resources.Assign_OneToMany.
我到处搜索并尝试了几种方式(在构造函数中):
var assignChargeColumn = (DataGridViewImageColumn)this.GrdChargeArrivalPart.Columns["AssignCharge"];
assignChargeColumn.DefaultCellStyle.NullValue = null;
assignChargeColumn.DefaultCellStyle.NullValue = Properties.Resources.Assign_OneToMany;
Run Code Online (Sandbox Code Playgroud)
要么
private void GrdChargeArrivalPart_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
var grid = (DataGridView)sender;
DataGridViewRow row = grid.Rows[e.RowIndex];
if (row.IsNewRow)
{
var imageCell = (DataGridViewImageCell) row.Cells["AssignCharge"];
imageCell.Value = new Bitmap(1, 1); // or ...:
imageCell.Value = Properties.Resources.Assign_OneToMany; // or ...:
imageCell.Value = null;
}
}
Run Code Online (Sandbox Code Playgroud)
当然我也在DataGridView设计师的列集中分配了这个图像:

那么DataGridViewImageColumn即使没有数据但只有新行,为什么指定默认图像的正确方法是什么?如果这很重要,这是jpg图像:
你可以在CellFormatting活动中采取行动:
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// ToDo: insert your own column index magic number
if (this.dgv.Rows[e.RowIndex].IsNewRow && e.ColumnIndex == 2)
{
e.Value = Properties.Resources.Assign_OneToMany;
}
}
Run Code Online (Sandbox Code Playgroud)

我相信它忽略了列编辑器中的Image属性赋值,因为该行的开头是Nothing/Null.