我有一个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
调整大小的行为异常:
显示下拉菜单时,它将调整为项目的高度(在这种情况下,约为行高的一半)。
但是,有两个问题:
System.ArgumentException: DataGridViewComboBoxCell value is not valid
我在这里做什么错了?
或者,有没有更简单的方法来设置由.ItemHeight
创建的ComboBox的DataGridViewComboBoxColumn
?