Combobox Q был задан несколько раз, например, здесь;https://stackoverflow.com/a/21321724/7968807
Но вот некоторый код (предполагается, что два столбца DGV Id & Status).Вы не сказали, было ли Status значением, сохраненным в вашей базе данных, или вы просто использовали столбец в качестве индикатора (если индикатор, приведенный ниже код должен был бы сбросить значение обратно на «выполнено» после редактирования формы и т. Д.),
Это не имеет значения, когда вы заменяете источник данных своим собственным, вы можете отсортировать поведение столбца.
Public Class Form1
Public Class Sample
Public Property Id As Integer
Public Property Status As String
Public Sub New(id As Integer, status As String)
Me.Id = id
Me.Status = status
End Sub
End Class
Dim Source As New List(Of Sample)({New Sample(0, "Done"), New Sample(1, "Done"), New Sample(2, "Done"), New Sample(3, "Done")})
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.DataSource = Source
End Sub
Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
DataGridView1.BeginEdit(True)
End If
End Sub
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If e.ColumnIndex < 0 OrElse e.RowIndex < 0 Then Exit Sub
Dim ComboCell As DataGridViewComboBoxCell = DirectCast(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
If ComboCell?.Value?.ToString = "Edit" Then
'Get ID (Hard-coded to 0 as an example)
Dim IdCell As DataGridViewTextBoxCell = DirectCast(DataGridView1.Rows(e.RowIndex).Cells(0), DataGridViewTextBoxCell)
If IdCell?.Value = 0 Then
'Open your form here
Using Openfd As New OpenFileDialog
If Openfd.ShowDialog() = DialogResult.OK Then
'Do stuff
End If
End Using
End If
End If
'// redraw
DataGridView1.Invalidate()
End Sub
End Class