设置DataGridViewComboBoxColumn ItemHeight

时间:2019-03-12 11:38:22

标签: vb.net datagridview datagridcomboboxcolumn

我有一个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

显示下拉菜单时,它将调整为项目的高度(在这种情况下,约为行高的一半)。

但是,有两个问题:

  • 显示的组合框为空白,尽管其中肯定装有项目
  • 选择组合框时,会出现DataError:System.ArgumentException: DataGridViewComboBoxCell value is not valid

我在这里做什么错了?

或者,有没有更简单的方法来设置由.ItemHeight创建的ComboBox的DataGridViewComboBoxColumn

0 个答案:

没有答案