Excel vb.net:编辑组合框元素后,如何检索其索引?

Excel vb.net:编辑组合框元素后,如何检索其索引?,excel,vb.net,combobox,Excel,Vb.net,Combobox,您好,我正在使用visual basic编写一个程序,该程序将编辑数据库的内容。用户可以键入他们想要更改的内容,然后程序将在数据库中覆盖该内容。除了编辑组合框的内容外,这一切都可以正常工作。当我尝试检索组合框中已编辑内容的索引时,我得到-1 如果这没有意义,那么我的代码如下: Sub DatabaseWriteSpecific(array, filePath, row) Dim objExcel As New Excel.Application Dim objWo

您好,我正在使用visual basic编写一个程序,该程序将编辑数据库的内容。用户可以键入他们想要更改的内容,然后程序将在数据库中覆盖该内容。除了编辑组合框的内容外,这一切都可以正常工作。当我尝试检索组合框中已编辑内容的索引时,我得到-1

如果这没有意义,那么我的代码如下:

Sub DatabaseWriteSpecific(array, filePath, row)
        Dim objExcel As New Excel.Application
        Dim objWorkbook As Excel.Workbook
        Dim objSheet As Excel.Worksheet
        objWorkbook = objExcel.Workbooks.Open(filePath) 'opens specified database
        objSheet = objWorkbook.Worksheets(1)
        For i As Integer = 1 To array.length
            objSheet.Cells(row, i).value = array(i - 1) 'adds each user input to database
        Next
        objWorkbook.Save() 'saves these changes
        objWorkbook.Close()
        objExcel.Quit()
    End Sub
    Private Sub editButton_Click(sender As Object, e As EventArgs) Handles editButton.Click
        Dim userMsg = MsgBox("Are you sure you want to edit this quote?", MsgBoxStyle.YesNo, "Confirm")
        If userMsg = 6 Then 'if answer is yes then quote will be edited, else nothing happens
            Dim quote = quoteCombo.Text
            Dim inputBoxes = {quote, userAct.Text, userScene.Text, userTheme.Text, userSaidBy.Text, userSaidTo.Text}
            Dim row = quoteCombo.SelectedIndex() + 2
            testBox.Text = row
            DatabaseWriteSpecific(inputBoxes, "C:\Users\lauel\Documents\database\bankOfQuotes.xlsx", row)
            comboBoxDisplay()
            MessageBox.Show("Your quote has been edited.")
        End If
    End Sub

问题行为Dim row=quoteCombo.SelectedIndex+2如果编辑组合框选择,则返回-1+2。如果编辑了任何其他框,它都可以正常工作。有没有办法解决这个问题,或者您会建议以不同的方式写入数据库?谢谢,如果我解释得太透彻了,也很抱歉。

从概述的角度来看,我觉得您试图将组合框用于两个目的,而我认为它应该用于一个目的,即显示一个或多个值。我认为,组合框的行为有助于编辑,只是为了让用户输入并匹配其中一个可用值


不过,你的目标是合理的。您希望提供一个工具来编辑组合框中可用的值。我认为正确的做法是分离功能。将所选值放在可编辑的文本框中,提供一种保存编辑值的方法,如“保存”按钮,然后用新的、更新的值列表更新组合框。

您不能只使用SelectedIndexChanged事件吗?@Jaxi抱歉,我不太熟悉它的功能。好的,谢谢您的建议,我将在下面添加一个额外的文本框!