у меня есть 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
Нечетное поведение при изменении размера:
Когда отображается раскрывающийся список, он изменяется до высоты элемента (в данном случае около половины высоты строки).
Однако есть две проблемы:
- Показанный ComboBox пуст, несмотря на то, что он определенно заполнен элементами
- При выборе ComboBox выдается DataError:
System.ArgumentException: DataGridViewComboBoxCell value is not valid
Что я здесь не так делаю?
Кроме того, есть ли более простой способ установить .ItemHeight
ComboBox, созданного DataGridViewComboBoxColumn
?