这个需求需要通过OwnerDraw来实现,首先,需要做两个小图片,一个用来表示值为True时的样子,一个用来表示值为False的时候的样子。
然后处理GcMultiRow的CellPainting事件,重定义CheckBox的画法。如以下代码。- Private checkImage As Image
- Private uncheckImage As Image
- Private Sub gcMultiRow_CellPainting(sender As Object, e As CellPaintingEventArgs)
- If e.CellName = "CheckBox" Then
- e.PaintBorder(e.ClipBounds)
- e.PaintBackground(e.ClipBounds)
- Dim imageBounds As New Rectangle((e.CellBounds.Left + e.CellBounds.Right - checkImage.Width) / 2, (e.CellBounds.Top + e.CellBounds.Bottom - checkImage.Height) / 2, checkImage.Width, checkImage.Height)
- If Object.Equals(Me.gcMultiRow(e.RowIndex, e.CellIndex).EditedFormattedValue, True) Then
- e.Graphics.DrawImage(checkImage, imageBounds)
- Else
- e.Graphics.DrawImage(uncheckImage, imageBounds)
- End If
- e.Handled = True
- End If
- End Sub
复制代码 |