我有一个带有组合框的数据网格。现在我想要实现,如果在第0列第0行中选择值x,那么第1行0中的组合框值y将自动设置为与x相同的值。
我试过
Private Sub dataGridView1_CellValidating(ByVal sender As Object, ByVal e As DataGridViewCellValidatingEventArgs) Handles Sched_Grid.CellValidating
If Sched_Grid.CurrentCell.ColumnIndex = 0 Then
Sched_Grid(1, Sched_Grid.CurrentCell.RowIndex).Value = Sched_Grid(0, Sched_Grid.CurrentCell.RowIndex).Value
End If
End Sub
然而,它不会立即起作用。我必须首先选择一个值x(0,0),然后单击一个不同的单元格(5,5或其他),然后单击返回x(0,0)单元格,以便y(1,0)设置为X(0,0)。
如何解决这个问题?
答案 0 :(得分:2)
您需要使用EditingControlShowing
事件来获取基础控件,然后添加另一个处理程序。但它有点乱。
Private Sub Sched_Grid_EditingControlShowing(ByVal sender as Object, Byval e as DataGridViewEditingControlShowingEventArgs) Handles Sched_Grid.EditingControlShowing
If Sched_Grid.CurrentCell.ColumnIndex = 0 Then
Dim selectedComboBox As Combobox = DirectCast(e.Control, ComboBox)
RemoveHandler selectedCombobox.SelectionChangeCommitted, AddressOf selectedComboBox_SelectionChangeCommitted
AddHandler selectedCombobox.SelectionChangeCommitted, AddressOf selectedComboBox_SelectionChangeCommitted
End If
End Sub
Private Sub selectedComboBox_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs)
Dim selectedCombobox As ComboBox = DirectCast(sender, ComboBox)
If selectedCombobox.SelectedItem IsNot Nothing Then
Sched_Grid(1, Sched_Grid.CurrentCell.RowIndex).Value = selectedCombobox.SelectedItem
End If
End Sub
答案 1 :(得分:0)
您可以将CurrencyManager类绑定到同一个集合。在ComboBox
上,您可以使用DisplayMember属性仅显示所需的列。