DataGridViewComboBoxColumnを使用する目的は、ComboBoxにユーザーの新しいアイテムを受け入れさせ、すでに存在するアイテムを選択できるようにすることです。
DataGridViewのEditingControlShowingイベントを使用して、実行時にDataGridViewComboBoxEditingControlのDropDownStyleを変更してこれを許可することを知っていますが、これをより低いレベルで実行できるかどうか疑問に思っています。
私が今していることは、DataGridViewComboBoxColumn、DataGridViewComboBoxCell、およびDataGridViewComboBoxEditingControlを拡張して、インスタンス化した瞬間にEditingControlのDropDownStyleを変更することを望んでいます。これまでのところ、運はありません。
デバッガーは正しい割り当てが実行されていることを示しますが、それでも、DropDownStyleはEditingControlShowingで(デバッグ目的でイベントを使用して)DropBoxではなくDropBoxListとしてポップします。これはインテントです。
ここでクラスに従います:
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