DataGridView将单元格更改为ComboBox,编辑,然后将单元格返回到具有所选值的TextBox

时间:2014-07-16 00:28:15

标签: vb.net

我在这个网站上找到了另一个主题,类似于我的问题,“在焦点上将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?我需要这个事件来触发我的里程表值转换代码。

0 个答案:

没有答案