【发布时间】:2014-09-23 13:49:25
【问题描述】:
我正在尝试覆盖DataGridView 中某个列的errorIcon。我在网上找到了一些关于此的信息,但我的自定义类中的 PaintErrorIcon 方法永远不会被调用。为了测试,我为普通Paint 添加了一个覆盖,并使用下面的测试代码在我的输出中得到了“PAINT”,但是当我为单元格设置 errorText 时,我看不到“ERROR PAINT”(单元格当设置错误文本时,一定会得到一个错误图标并调用 Paint)。
public class DataGridViewWarningCell: DataGridViewTextBoxCell
{
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
Console.WriteLine("PAINT");
}
protected override void PaintErrorIcon(Graphics graphics, Rectangle clipBounds, Rectangle cellValueBounds, string errorText)
{
base.PaintErrorIcon(graphics, clipBounds, cellValueBounds, errorText);
Console.WriteLine("ERROR PAINT");
}
}
我已将列添加到我的 DataGridView 中,如下所示:
public class DataGridViewWarningColumn : DataGridViewColumn
{
public DataGridViewWarningColumn()
{
this.CellTemplate = new DataGridViewWarningCell();
}
}
然后在我的表单代码中:
var warningColumn = new DataGridViewWarningColumn();
fileGrid.Columns.Add(warningColumn);
【问题讨论】:
标签: c# winforms datagridview datagridviewcolumn