您的位置:首页 > 其它

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

2010-05-15 09:32 288 查看
看了很多文章,大部分都是重写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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐