Сочетать ячейки в DataGridView VB.NET

Сомнение, которое у меня есть,, - как я могу сочетать ячейки в DataGridView?

В моем проекте VB.NET у меня есть DataGridView, который показывает информацию о таблице моей базы данных в MySQL следующего способа:

introducir la descripción de la imagen aquí

И то, что я хочу, состоит в том, чтобы сочетаться ты производишь контроль их первой колонны для того, чтобы он остался немного, как я схватил:

introducir la descripción de la imagen aquí

Как я это делаю?

Подмостки изображений реализованы в одиноком Excel, чтобы помещать пример, нужно доводить до сведения, что я только показываю 2 услуги, но в действительности это 30 услуг.

5
задан 12.05.2016, 17:55
3 ответа

Эта та 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
1
ответ дан 24.11.2019, 14:25

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

Результат:

introducir la descripción de la imagen aquí

Чтобы это использовать:

  1. Загрузись код проекта Веба CodeProject
  2. Код - решение с 3 проектами. Тот, который интересует тебя, SpannedDataGridViewNet2. Добавь этот проект к твоему решению
  3. К твоему Windows проекту Forms добавь ссылку на этот проект и составь
  4. Добавив колонны к твоим DataGridView у тебя будет выбор выбрать новый тип колонны: DataGridViewTextBoxColumnEx
  5. Ячейки этих колонн - типа DataGridViewTextBoxCellEx, который позволяет тебе показывать стоимость для Ваших свойств RowSpan и ColumnSpan, как я помещаю тебя в пример
2
ответ дан 24.11.2019, 14:25
  • 1
    Он оказывается гениальным, вот то, в чем я нуждаюсь, но я не понимаю очень хорошо soluci и # 243; n! – Jose Dario Correa 12.05.2016, 22:27
  • 2
    Я издаю ответ, чтобы помещать тебе шаги c и # 243; mo использовать это – Asier Villanueva 12.05.2016, 22:37

Ты мог бы выбирать выбор, как то, чтобы быть

How to Мерхе Датагридвьев Cell in Winforms

в событии CellPainting из DataGridView

там санкционирует, если стоимость columan равна стоимости предыдущей ячейки, если он это удаляет линию ячеек используя

 e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;

Также есть другая самая сложная форма, которую использует GDI

MERGING CELLS IN DATAGRIDVIEW

1
ответ дан 24.11.2019, 14:25
  • 1
    Спасибо, я sirvi и # 243; многого первый opci и # 243; n, хотя c и # 243; я говорю, что он был в C #, я смог переводить это в VB.NET – Jose Dario Correa 13.05.2016, 18:54