vb.net 教程 3-10 窗体编程 datagridview控件 15 下拉框单元格改变其他单元格的值

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

问题:如何实现从下拉框单元格的值改变后,更改其它一列的值。
很简单的实现,使用DataGridView.CellValueChanged 事件即可,该事件会在单元格的值更改时发生。
具体代码如下:

    Private Sub dgv_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
        If dgv.Columns(e.ColumnIndex).Name = "ComboBox" Then
            dgv(0, e.RowIndex).Value = dgv(e.ColumnIndex, e.RowIndex).Value
        End If
    End Sub

以上代码将在新增的“ComboBox”列的值发生改变后,将第1列对应行的单元格的值修改为和它相同。运行时如下:

然而,我们很快会发现有这样一个问题:当下拉框更改了值,但是第一行数据不会改变,直到下拉框所在单元格失去焦点,第一行的值才和下拉框单元格的值一致。在Msdn中有详细说明:DataGridView.CellValueChanged 事件发生时的用户指定的值是已提交,这通常发生在焦点离开该单元格时。

那么如果要实现在从下拉框选择后就立即更改另一列的值,那就得用上DataGridView.CurrentCellDirtyStateChanged 事件,当单元格被标记为已修改但尚未保存更改时发生。
修改后的代码如下:

    Private Sub dgv_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgv.CurrentCellDirtyStateChanged
        dgv(0, dgv.CurrentCell.RowIndex).Value = dgv.CurrentCell.EditedFormattedValue
    End Sub

请删除之前的DataGridView.CellValueChanged 事件代码。

 

由于.net平台下C#和vb.Net很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值