프로그래밍

[vb.net] datagridview cell merge

프로세스 천국 2013. 4. 30. 23:35

셀병합은 아니고 병합같은 효과를 주는 방법..

셀합치는 것중에 그나마 이게 제일 간단한 방법이긴 한데 합친 셀을 클릭시 텍스트가 보이지 않는 버그가 있다.

합친 셀을 선택하지 않으면 문제될 건 없고 이것저것 수정하면 원하는 결과를 얻을 수는 있을거 같다.

 

 

Private Sub dg_ESC_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles dgv.CellPainting
Dim fnt As New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point)
Dim rct1 As New Rectangle((dgv.GetColumnDisplayRectangle(0, True).X), (dgv.GetColumnDisplayRectangle(0, True).Y + dgv.Columns(0).HeaderCell.ContentBounds.Height + 8), dgv.GetColumnDisplayRectangle(0, True).Width - 1, (dgv.GetRowDisplayRectangle((dgv.Rows.Count - 1), True).Top - dgv.GetRowDisplayRectangle((dgv.Rows.Count - 1), True).Height))
e.Graphics.FillRectangle(Brushes.White, rct1)
e.Graphics.DrawString("VERTICAL" & vbCrLf & "TEXT", fnt, Brushes.Black, rct1)
Dim rct As Rectangle = dgv.GetRowDisplayRectangle(3, True)
rct.Height -= 1
Dim s As SizeF = e.Graphics.MeasureString("HORINZONTAL TEXT", dgv.Font)
Dim lefts As Integer = (rct.Width / 2) - (s.Width / 2)
Dim tops As Integer = rct.Top + ((rct.Height / 2) - (s.Height / 2))
e.Graphics.FillRectangle(Brushes.White, rct)
e.Graphics.DrawString("HORINZONTAL TEXT", fnt, Brushes.Black, 2, tops)
End Sub

 

 

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/fea3dcff-5447-450a-8f7c-bb1c4f63371d/