Follow-on from question here : How to assign typical NumericUpDown properties to custom NumericUpDown based control?
I'm trying to do something similar to this scenario but I don't want / need an entire column of NumericUpDown
controls; I just need a custom NumericUpDownCell
-type class that I can switch in to a specific TextBox cell in a DataGridView
, use it for data-entry and then flatten it back to a plain DataGridViewTextBoxCell
again.
So I'm using pretty much the exact same code as the example in the linked question (in terms of the classes NumericUpDownCell
and NumericUpDownEditingControl
) but instead of creating an entire column, I just want to take a single DataGridViewTextBoxCell
, dispose it and replace it with a NumericUpDownCell
, á la :
Private Sub ConfigureField(activeRow As DataGridViewRow)
Try
Dim lowerLimit As Integer = 0
Dim upperLimit As Integer = 50
Dim cfgValueCell = dgv(myColumn.Index, activeRow.Index)
cfgValueCell.Dispose()
cfgValueCell = New DataGridViewCustomNumericUpDownCell With {
.Minimum = lowerLimit,
.Maximum = upperLimit}
dgv(myColumn.Index, activeRow.Index) = cfgValueCell
Catch ex As Exception
End Try
End Sub
But that throws an exception in the Public Overrides Sub InitializeEditingControl
for the class NumericUpDownCell
:
Public Overrides Sub InitializeEditingControl(rowIndex As Integer, initialFormattedValue As Object, dataGridViewCellStyle As DataGridViewCellStyle)
MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)
Dim ctl As NumericUpDownEditingControl = CType(DataGridView.EditingControl, NumericUpDownEditingControl)
ctl.Value = CType(Me.Value, Decimal)
ctl.Minimum = Me.Minimum
ctl.Maximum = Me.Maximum
End Sub
Specifically :
Unable to cast object of type 'System.Windows.Forms.DataGridViewTextBoxEditingControl' to type 'PrototypeUI.NumericUpDownEditingControl'.
Am I missing a step somewhere?