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