Установить DataGridViewComboBoxColumn ItemHeight - PullRequest
0 голосов
/ 12 марта 2019

у меня есть DataGridView с DataGridViewComboBoxColumn;поскольку строки переносятся в другой столбец (.DefaultCellStyle.WrapMode = DataGridViewTriState.True), высота строк не совпадает с автоматической .ItemHeight при DrawMode = DrawMode.Normal.

Для предотвращения нечетного изменения размера при отображении ComboBoxЯ пытаюсь вручную нарисовать ComboBox во время события EditingControlShowing:

Private Sub dgv_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles dgv.EditingControlShowing

        Dim cb As ComboBox = TryCast(e.Control, ComboBox)

        If cb IsNot Nothing Then

            For Each code In CheckCodes
                cb.Items.Add(code.Key)
            Next

            cb.ItemHeight = dgv.CurrentRow.Height
            cb.DrawMode = DrawMode.OwnerDrawFixed

        End If

    End Sub

Нечетное поведение при изменении размера:

enter image description here enter image description here

Когда отображается раскрывающийся список, он изменяется до высоты элемента (в данном случае около половины высоты строки).

Однако есть две проблемы:

  • Показанный ComboBox пуст, несмотря на то, что он определенно заполнен элементами
  • При выборе ComboBox выдается DataError: System.ArgumentException: DataGridViewComboBoxCell value is not valid

Что я здесь не так делаю?

Кроме того, есть ли более простой способ установить .ItemHeight ComboBox, созданного DataGridViewComboBoxColumn?

...