2012-07-24 59 views
1

我有一个组合框的数据网格。现在我想实现如果选择列0行0中的值x然后然后组合框值y在列1行0自动设置为相同的值,如x。VB.NET datagrid - 检测组合框的选择,并在不同的列中选择相同的值

我试图

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)。

这怎么解决?

回答

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 
+0

感谢您的代码!事件触发正常,但selectedCombobox值仍为空。我不够专业,无法在代码中找到错误。也许别人看到这个错误.... – user670186 2012-07-24 18:25:27

+0

@ user670186,selectedCombobox是否有数据源?如果是这样,你有没有指定'ValueMember'?如果不是,请使用'selectedCombobox.SelectedItem'来获取您的值。 (您可能需要将其转换为正确的数据类型。) – 2012-07-24 18:29:49

+0

SelectedItem可以做到这一点!非常感谢!!! – user670186 2012-07-24 18:40:12

相关问题