我在这个网站上找到了另一个主题,类似于我的问题,“在焦点上将Cell更改为Combobox,失去焦点后将TextBox更改为TextBox”,但迄今为止尚未给出答案。
我有一个带有“Start Odometer”列的DataGridView,一个“End Odometer”列和一个“Units”列。它们通过数据表中的Bindings填充。
我希望能够更改所选记录的单位并将里程表列值转换为选定的“单位”。 (无论是英里到公里,反之亦然)。
我已经想出如何更改“单位”单元并将其加载到ComboBox单元格。这是代码。
Dim gridComboBox As New DataGridViewComboBoxCell
With DataGridView1
If .Rows.Count = 0 Then Exit Sub
Dim i = DataGridView1.CurrentRow.Index
Dim celval = DataGridView1.CurrentCell.Value
gridComboBox.Items.Add(celval) 'Populate the Combobox
gridComboBox.Items.Add("km") 'Populate the Combobox
gridComboBox.Items.Add("mi") 'Populate the Combobox
.Item(GridEnum.State, i) = gridComboBox
End With
这是我遇到问题的地方。
我需要将此单元格更改回TextBox。我基本上使用了与上面相同的代码替换DataGridViewTextBoxCell。
Dim gridTextBox As New DataGridViewTextBoxCell
With DataGridView1
If .Rows.Count = 0 Then Exit Sub
Dim i = DataGridView1.CurrentRow.Index
Dim celval = DataGridView1.CurrentCell.Value
gridTextBox.value = celVal
.Item(GridEnum.State, i) = gridTextBox
End With
如果我将它作为一个单独的过程调用它,那么最后一段代码就可以工作,但如果我从ComboBox_SelectedIndexChanged过程中运行它,则它不起作用。 (已启用EditingControlShowing)。
这很有意义,因为ComboBox仍处于活动状态。
问题...一旦ComboBox项目索引发生变化,我怎样才能将单元格ComboBox还原回单元格TextBox?我需要这个事件来触发我的里程表值转换代码。