Сомнение, которое у меня есть,, - как я могу сочетать ячейки в DataGridView?
В моем проекте VB.NET у меня есть DataGridView, который показывает информацию о таблице моей базы данных в MySQL следующего способа:
И то, что я хочу, состоит в том, чтобы сочетаться ты производишь контроль их первой колонны для того, чтобы он остался немного, как я схватил:
Как я это делаю?
Подмостки изображений реализованы в одиноком Excel, чтобы помещать пример, нужно доводить до сведения, что я только показываю 2 услуги, но в действительности это 30 услуг.
Эта та soluciГіn совершенная в мою проблему, я имею ее для того, чтобы у всех была она.
В событии Похвалите из Form размещается следующая instrucciГіn:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.AutoGenerateColumns = False
End Sub
В событии CellPainting из DataGridView мы размещаем следующее:
Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None
If (e.RowIndex < 1 Or e.ColumnIndex < 0) Then
Return
End If
If (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) Then
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None
Else
e.AdvancedBorderStyle.Top = DataGridView1.AdvancedCellBorderStyle.Top
End If
End Sub
В событии CellFormatting из DataGridView мы размещаем следующее:
Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
If (e.RowIndex = 0) Then
Return
End If
If (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) Then
e.Value = ""
e.FormattingApplied = True
End If
End Sub
И добавочный мы нуждаемся в том, чтобы создать одну funciГіn:
Private Function IsTheSameCellValue(ByVal column As Integer, ByVal row As Integer) As Boolean
Dim cell1 As DataGridViewCell = DataGridView1(column, row)
Dim cell2 As DataGridViewCell = DataGridView1(column, row - 1)
If (IsDBNull(cell1.Value) Or IsDBNull(cell2.Value)) Then
Return False
End If
If (cell1.Value = cell2.Value) Then
Return True
Else
Return False
End If
End Function
DataGridView не предоставляет эту функциональность.
В CodeProject, если ты можешь находить осуществление типа колонны для DataGridView, которая позволяет делать это:
DataGridVewTextBoxCell with Спан Беавиоур
Главным образом создай тип колонны DataGridViewTextBoxColumnEx, ячейки которого - типа DataGridViewTextBoxCellEx. Эти ячейки позволяют сочетать ячейки через Ваши свойства RowSpan и ColSpan.
Пример использования:
DataGridView1.Rows.Add("Bath/Shower", "Turn 1")
DataGridView1.Rows.Add("Bath/Shower", "Turn 2")
DataGridView1.Rows.Add("Bath/Shower", "Turn 3")
DataGridView1.Rows.Add("Hair Care", "Turn 1")
DataGridView1.Rows.Add("Hair Care", "Turn 2")
DataGridView1.Rows.Add("Hair Care", "Turn 3")
Dim cell As DataGridViewTextBoxCellEx = CType(DataGridView1(0, 0), DataGridViewTextBoxCellEx)
cell.RowSpan = 3
cell = CType(DataGridView1(0, 3), DataGridViewTextBoxCellEx)
cell.RowSpan = 3
Результат:
Чтобы это использовать:
Ты мог бы выбирать выбор, как то, чтобы быть
How to Мерхе Датагридвьев Cell in Winforms
в событии CellPainting
из DataGridView
там санкционирует, если стоимость columan равна стоимости предыдущей ячейки, если он это удаляет линию ячеек используя
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
Также есть другая самая сложная форма, которую использует GDI