Я пытаюсь перезаписать значок ошибки определенного столбца в файле DataGridView
. Я нашел некоторую информацию об этом в Интернете, но метод 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);