
Introduction
The DataGridViewFlagColumn inherits the existing System.Windows.Forms.DataGridViewImageColumn. It paints the backcolor and chooses the image depending on the value you give the cell. In this code, I use a Flag enumeration of four possible values:
Public Enum Flag As Integer
Blank = 0
Red = 1
Blue = 2
Yellow = 3
End Enum
If you create more flag icons, you can extend this enumeration. There also is an ErrorIcon supplied: this icon will be drawn if the value of the cell does not match one of the enumeration values.
The code has two classes: DataGridViewFlagColumn with just one member:
Public NotInheritable Class DataGridViewFlagColumn
Inherits DataGridViewImageColumn
Public Sub New()
Me.CellTemplate = New DataGridViewFlagCell
...
End Sub
End Class
In the constructor, I assign the CellTemplate to the second class: DataGridViewFlagCell, which inherits from System.Windows.Forms.DataGridViewImageCell. This class has some basic methods and functions: it retrieves the right icon and the right backcolor, and the Paint method will use them to paint the cells.
This class also provides a different backcolor when the mouse enters/leaves the cell. Have fun!