如何在DataGridView 的组合框控件中实现如ComboBox功能?

pjagz 2008-04-09 08:20:54
Private Sub CrTab_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles CrTab.EditingControlShowing

If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then
Dim EditContr As DataGridViewComboBoxEditingControl = CType(e.Control, DataGridViewComboBoxEditingControl)

TabTou.FlatStyle = FlatStyle.System
TabTou.Bounds = EditContr.Bounds
TabTou.Parent = EditContr
' TabTou.SetBounds(0, 0, 100, 20)
TabTou.BringToFront()
End If
End Sub
'==================================================
我以上的方法实现不理想...
有更好的吗?
...全文
573 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyouvivi 2008-04-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/tyouvivi/archive/2007/06/13/1650648.aspx
46. DataGridView中显示下拉框ComboBox
47. DataGridView单击打开下拉框
pjagz 2008-04-13
  • 打赏
  • 举报
回复
6楼的朋友是弹出ComboBox功能,但不是我要的。

我的是直接在单元格中实现。这样的功能我实现了。只是不了解其中过程的执行,

'这个属性如何引发执行? 请高手解释吓。
Public Property EditingControlFormattedValue() As Object Implements IDataGridViewEditingControl.EditingControlFormattedValue
'-----------
参考(CSMD的解释不详细)实例:
http://msdn2.microsoft.com/zh-cn/library/system.windows.forms.idatagridvieweditingcontrol(VS.80).aspx
pjagz 2008-04-12
  • 打赏
  • 举报
回复
如何在DataGridView 的组合框控件中实现如ComboBox功能?
现在已找到解决方案。应用接口IDataGridViewEditingControl 用ComboBox控件,自定义的列类型,
应用到DataGridView的列中取代DataGridViewComboBoxCell组合框控件而实现可编辑字符串的组合框。

以下接口属性不太明白,请高手解释吓?(CSMD的解释不详细)
'这个属性如何引发执行?
Public Property EditingControlFormattedValue() As Object Implements IDataGridViewEditingControl.EditingControlFormattedValue
'

pjagz 2008-04-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pjagz 的回复:]
如何在DataGridView 的组合框控件中实现如ComboBox功能。

以下接口属性不太明白,请高手解释吓?(CSMD的解释不详细)
'这个属性如何引发执行?
Public Property EditingControlFormattedValue() As Object Implements IDataG…
[/Quote]

已基本实现如ComboBox的功能,上述属性如何引发执行?请高手解释吓?(CSMD的解释不详细)
billow_chentao 2008-04-12
  • 打赏
  • 举报
回复
我也遇到同样问题,希望表格中的ComboBox可以手动输入内容,不知楼主是否解决?
yudi010 2008-04-10
  • 打赏
  • 举报
回复
[VB.NET]
Private dataGridViewComboBox As DataGridViewComboBoxEditingControl = Nothing

'EditingControlShowingイベントハンドラ
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
'表示されているコントロールがDataGridViewComboBoxEditingControlか調べる
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then
Dim dgv As DataGridView = CType(sender, DataGridView)

'該当する列か調べる
If dgv.CurrentCell.OwningColumn.Name = "ComboBox" Then
'編集のために表示されているコントロールを取得
Me.dataGridViewComboBox = _
CType(e.Control, DataGridViewComboBoxEditingControl)
'SelectedIndexChangedイベントハンドラを追加
AddHandler Me.dataGridViewComboBox.SelectedIndexChanged, _
AddressOf dataGridViewComboBox_SelectedIndexChanged
End If
End If
End Sub

'CellEndEditイベントハンドラ
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellEndEdit
'SelectedIndexChangedイベントハンドラを削除
If Not (Me.dataGridViewComboBox Is Nothing) Then
RemoveHandler Me.dataGridViewComboBox.SelectedIndexChanged, _
AddressOf dataGridViewComboBox_SelectedIndexChanged
Me.dataGridViewComboBox = Nothing
End If
End Sub

'DataGridViewに表示されているコンボボックスの
'SelectedIndexChangedイベントハンドラ
Private Sub dataGridViewComboBox_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
'選択されたアイテムを表示
Dim cb As DataGridViewComboBoxEditingControl = _
CType(sender, DataGridViewComboBoxEditingControl)
Console.WriteLine(cb.SelectedItem)
End Sub
懒牛科技 2008-04-10
  • 打赏
  • 举报
回复
直接在DataGridView 添加ComboBox 不久可以了吗?

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧