现在的位置: 首页 > 综合 > 正文

如何能够在Datagridview中ComboBox类型的单元格中输入数据?

2012年08月09日 ⁄ 综合 ⁄ 共 1088字 ⁄ 字号 评论关闭

看了很多文章,大部分都是重写ComboBoxCell,下面是一个不错的方法,在园子里看到的贴子,有兴趣的朋友可以找一下原帖.

默认情况下,DataGridViewComboBoxCell不接受用户的输入值。但有时确实有向ComboxBox输入数据的需要。实现这个功能,你需要做两件事。一是将ComboBox编辑控件的DropDownStyle属性设置为DropDown,使用户可以进行输入(否则只能进行选择);二是确保用户输入的值能够添加到ComboBoxItems集合。这是因为ComboBoxCell的值必须在Items集合中,否则会触发DataError事件,而适合添加新值到Items集合的地方是CellValidating事件处理函数:

 

 

代码

Private Sub dataGridView1_CellValidating(ByVal sender As Object, ByVal e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating

If e.ColumnIndex = Column1.DisplayIndex Then
'Column1是Combobox列的列名

If Not Me.Column1.Items.Contains(e.FormattedValue) Then



Me.Column1.Items.Add(e.FormattedValue)

End If

DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
= e.FormattedValue
 '这行是我后来加的,因为好像进行上面的操作后单格的值就会丢失.期待更好的办法.
End If
End Sub



Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing


If Me.DataGridView1.CurrentCellAddress.X = Column1.DisplayIndex Then


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

If cb IsNot Nothing Then



cb.DropDownStyle
= ComboBoxStyle.DropDown

End If

End If
End Sub

 

抱歉!评论已关闭.