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

看了很多文章,大部分都是重写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

 

你可能感兴趣的:(datagridview)