使用DataGridViewComboBoxColumn,目标是让ComboBoxes接受用户的新项目以及选择已经存在的项目的可能性。
我知道在运行时使用DataGridView的EditingControlShowing事件来更改DataGridViewComboBoxEditingControl的DropDownStyle以允许这样做,但我想知道这是否可以在较低级别完成。
我现在正在做的是扩展DataGridViewComboBoxColumn、DataGridViewComboBoxCell和DataGridViewComboBoxEditingControl,希望在我实例化它的那一刻改变EditingControl 的 DropDownStyle。到目前为止,没有运气。
调试器显示正在执行正确的分配,但尽管如此,DropDownStyle在EditingControlShowing处弹出(使用该事件进行调试)作为DropBoxList,而不是DropBox,这是意图。
以下是课程:
Public Class DataGridViewComboBoxColumnALT
Inherits System.Windows.Forms.DataGridViewComboBoxColumn
Public Sub New()
Me.CellTemplate = New DataGridViewComboBoxCellALT
End Sub
End Class
Public Class DataGridViewComboBoxCellALT
Inherits System.Windows.Forms.DataGridViewComboBoxCell
Public Overrides ReadOnly Property EditType() As Type
Get
Return GetType(DataGridViewComboBoxEditingControlALT)
End Get
End Property
End Class
Public Class DataGridViewComboBoxEditingControlALT
Inherits System.Windows.Forms.DataGridViewComboBoxEditingControl
Implements System.Windows.Forms.IDataGridViewEditingControl
Public Sub New()
MyBase.New()
Me.DropDownStyle = ComboBoxStyle.DropBox
End Sub
End Class