Ширина столбца datagridview изменена

У меня есть 2 таблицы данных. Я хочу изменить ширину столбца таблицы данных, в то время как я изменяю ширину столбца другого блока данных с помощью мыши. Я попробовал этот код, но он не работает.

Private Sub DataGridView1_ColumnMinimumWidthChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnMinimumWidthChanged
    HeaderGrid.Columns(e.Column.Index).Width = e.Column.Width
End Sub

Я отредактировал свой код, добавив событие mouseleave, и оно работает, но не правильно.

 Private Sub DataGridView1_MouseLeave(sender As Object, e As System.EventArgs) Handles DataGridView1.MouseLeave
    Dim c As DataGridViewColumn = DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex)
    Dim h As DataGridViewColumn = HeaderGrid.Columns(DataGridView1.CurrentCell.ColumnIndex)
    h.Width = c.Width
End Sub

2 ответа

Решение

Я решил проблему с помощью другого события:

   Private Sub DataGridView1_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseLeave
    If e.ColumnIndex <> -1 And HeaderGrid.ColumnCount <> 0 Then
        Dim c As DataGridViewColumn = DataGridView1.Columns(e.ColumnIndex)
        Dim h As DataGridViewColumn = HeaderGrid.Columns(e.ColumnIndex)
        h.Width = c.Width
    End If
End Sub

Использование DataGridView1.ColumnWidthChanged событие вместо ColumnMinimumWidthChanged для ловли Width изменения

Private Sub DataGridView1_ColumnWidthChanged(sender As Object,
                                             e As DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
    HeaderGrid.Columns(e.Column.Index).Width = e.Column.Width
End Sub
Другие вопросы по тегам