簡體   English   中英

Vb.net / DataGridView / ComboBox 列

[英]Vb.net / DataGridView / ComboBox Column

我正在使用 vb.net 和 winforms。

我有一個帶有綁定 DataGridView 的表單。 在 DGV 上,我有 5 列帶有 ComboBox。 我正在使用 EditingControlShowing Even 來捕捉 ComboBox 選擇。 (見下面的代碼)。 這是問題所在:

在我單擊帶有 ComboBox 的單元格並進行選擇,然后更新基礎單元格(單元格 = 選定值),然后單擊 DGV 的另一行后,它會失控。 如果在我更新 Cell 之后,我會在 DataSource 的相應行上執行和 EndEdit,它似乎可以找到。

如何確定對應的數據源行,以便我可以自動執行此操作?

Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) _
                Handles DataGridView1.EditingControlShowing
        Try
            Debug.Print("entered the EditingControlShowing")
            Dim ColName As String = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).Name
            If ColName = "Col1" Then 'Or ColName = "Col2" Or ColName = "Col3" Or ColName = "Col4" Or ColName = "Col5" Then

'the column you want to cast
        Dim cmb As ComboBox = TryCast(e.Control, ComboBox)
            RemoveHandler cmb.SelectedIndexChanged, AddressOf cmb_SelectedIndexChanged
            AddHandler cmb.SelectedIndexChanged, AddressOf cmb_SelectedIndexChanged
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Sub cmb_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    Try
        Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(Me.DataGridView1.CurrentCell.ColumnIndex).Value = CType(sender, ComboBox).SelectedItem
        '
        ' HERE IF I PUT MyDataSet.Tables(0).Rows(?).EndEding it works - but how to konw what row?
        '
        UpdateAvgColumn(Me.DataGridView1.CurrentRow.Index)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

被觸發的事件正在重新進入。 如果您當前正在處理一個事件,則必須小心不要處理其他事件。 如果正在處理不同的事件,您必須在事件處理周圍放置 IF 語句以跳過執行代碼。

sub dgv_selecteditemchanged()
  If not processing_event
    processing_event = true
    ...
    processing_event = false
  end if
end sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM