MESCLAR CABE?ALHO DO DATAGRIDVIEW
Como datagridview não permite mesclar colunas ou linhas, alguém poderia me informar se há alguma forma de simular a mescla do cabeçalho do datagridview?
segue um exemplo, para ajuda-lo.
Private Sub DataGridView1_CellPainting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If e.ColumnIndex = DataGridView1.Columns.IndexOf(DataGridView1.Columns([Ô]Nome_da_coluna_a_mesclar[Ô])) AndAlso e.RowIndex <> -1 Then
Using gridBrush As Brush = New SolidBrush(Me.DataGridView1.GridColor), backColorBrush As Brush = New SolidBrush(e.CellStyle.BackColor)
Using gridLinePen As Pen = New Pen(gridBrush)
[ô] Limpa Celulas
e.Graphics.FillRectangle(backColorBrush, e.CellBounds)
[ô] Desenha Linha (Borda abaixo e borda direita da celula atual)
[ô]Se a próxima linha for diferente, desenha borda da linha abaixo da celula atual
If e.RowIndex < DataGridView1.Rows.Count - 2 AndAlso DataGridView1.Rows(e.RowIndex + 1).Cells(e.ColumnIndex).Value.ToString() <> e.Value.ToString() Then
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1)
End If
[ô] Desenha linha da borda direita da celula atual
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom)
[ô] Desenha e Mescla celula atual
If Not e.Value Is Nothing Then
If e.RowIndex > 0 AndAlso DataGridView1.Rows(e.RowIndex - 1).Cells(e.ColumnIndex).Value.ToString() = e.Value.ToString() Then
Else
e.Graphics.DrawString(CType(e.Value, String), e.CellStyle.Font, Brushes.Black, e.CellBounds.X + 2, e.CellBounds.Y + 5, StringFormat.GenericDefault)
End If
End If
e.Handled = True
End Using
End Using
End If
End Sub
Private Sub DataGridView1_CellPainting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If e.ColumnIndex = DataGridView1.Columns.IndexOf(DataGridView1.Columns([Ô]Nome_da_coluna_a_mesclar[Ô])) AndAlso e.RowIndex <> -1 Then
Using gridBrush As Brush = New SolidBrush(Me.DataGridView1.GridColor), backColorBrush As Brush = New SolidBrush(e.CellStyle.BackColor)
Using gridLinePen As Pen = New Pen(gridBrush)
[ô] Limpa Celulas
e.Graphics.FillRectangle(backColorBrush, e.CellBounds)
[ô] Desenha Linha (Borda abaixo e borda direita da celula atual)
[ô]Se a próxima linha for diferente, desenha borda da linha abaixo da celula atual
If e.RowIndex < DataGridView1.Rows.Count - 2 AndAlso DataGridView1.Rows(e.RowIndex + 1).Cells(e.ColumnIndex).Value.ToString() <> e.Value.ToString() Then
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1)
End If
[ô] Desenha linha da borda direita da celula atual
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom)
[ô] Desenha e Mescla celula atual
If Not e.Value Is Nothing Then
If e.RowIndex > 0 AndAlso DataGridView1.Rows(e.RowIndex - 1).Cells(e.ColumnIndex).Value.ToString() = e.Value.ToString() Then
Else
e.Graphics.DrawString(CType(e.Value, String), e.CellStyle.Font, Brushes.Black, e.CellBounds.X + 2, e.CellBounds.Y + 5, StringFormat.GenericDefault)
End If
End If
e.Handled = True
End Using
End Using
End If
End Sub
Ok,
Vou estudar o código e retorno sobre o resultado.
Vou estudar o código e retorno sobre o resultado.
Ok,
Obrigado. Funcionou.
Obrigado. Funcionou.
Tópico encerrado , respostas não são mais permitidas