De esta manera.
------------------------------------------------------
| Enero | Febrero | Marzo |
| Ganó | Perdió | Ganó | Perdió | Ganó | Perdió |
------------------------------------------------------
| | | | | | |
| | | | | | |
------------------------------------------------------
Solución: Se debe personalizar el evento Paint.
Para mayor entendimiento, pongo un ejemplo.
Tengo un formulario llamado Form1, el cual contiene un grid llamado DataGridView1.
En el evento load del formulario lleno el grid.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Lleno los datos del grid
With DataGridView1
.Columns.Add("", "Ganó")
.Columns.Add("", "Perdió")
.Columns.Add("", "Ganó")
.Columns.Add("", "Perdió")
.Columns.Add("", "Ganó")
.Columns.Add("", "Perdió")
.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
.ColumnHeadersHeight = .ColumnHeadersHeight * 2
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter
End With
End Sub
Luego, se personaliza el evento Paint del DataGridView.
Private Sub dataGridView1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
Dim monthes As String() = {"Enero", "Febrero", "Marzo"}
Dim j As Integer = 0
While j < 6
Dim r1 As Rectangle = Me.DataGridView1.GetCellDisplayRectangle(j, -1, True)
r1.X += 1
r1.Y += 1
r1.Width = r1.Width * 2 - 2
r1.Height = r1.Height / 2 - 2
e.Graphics.FillRectangle(New SolidBrush(Me.DataGridView1.ColumnHeadersDefaultCellStyle.BackColor), r1)
Dim format As New StringFormat()
format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(monthes(j \ 2), Me.DataGridView1.ColumnHeadersDefaultCellStyle.Font, _
New SolidBrush(Me.DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor), r1, format)
j += 2
End While
End Sub
Nota: Ejemplos e información proporcionada desde está página web: Windows Forms Data Controls and Databinding FAQ