看了很多文章,大部分都是重写ComboBoxCell,下面是一个不错的方法,在园子里看到的贴子,有兴趣的朋友可以找一下原帖.
默认情况下,DataGridViewComboBoxCell不接受用户的输入值。但有时确实有向ComboxBox输入数据的需要。实现这个功能,你需要做两件事。一是将ComboBox编辑控件的DropDownStyle属性设置为DropDown,使用户可以进行输入(否则只能进行选择);二是确保用户输入的值能够添加到ComboBox的Items集合。这是因为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