Используя DataGridViewComboBoxColumn , цель состоит в том, чтобы заставить комбинированные списки принимать новые элементы пользователя, а также возможность выбора элементов, которые уже присутствуют.
I 'мне известно об использовании EditingControlShowing события DataGridView для изменения DropDownStyle DataGridViewComboBoxEditingControl во время выполнения, чтобы разрешить это, но я 'Мне интересно, можно ли это сделать на более низком уровне.
Сейчас я занимаюсь расширением DataGridViewComboBoxColumn , DataGridViewComboBoxCell и DataGridViewComboBoxEditingControl ,в надежде изменить DropDownStyle EditingControl в тот момент, когда я его создаю.Пока что не повезло.
Отладчик показывает, что выполняется правильное назначение, но, тем не менее, 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