You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中DataGridView的CellValueChanged事件无响应问题

C#中DataGridView的CellValueChanged事件无响应问题

嗨Nimish,遇到这种情况别着急,咱们一步步排查可能的原因:

  • 检查DataGridView的编辑模式设置
    首先确认你的dgvTank的EditMode属性是不是设置成了允许用户编辑的模式。如果是EditProgrammatically,那用户手动修改单元格内容是不会触发任何编辑相关事件的。你可以在设计器里把它改成EditOnEnter或者EditOnKeystrokeOrF2,或者在代码里添加:

    dgvTank.EditMode = DataGridViewEditMode.EditOnEnter;
    
  • 确保单元格修改后完成编辑提交
    CellValueChanged事件是在单元格的修改内容被提交后才会触发的——也就是说,用户修改完单元格内容后,需要点击其他单元格、按回车,或者让单元格失去焦点,事件才会触发。如果你希望修改后立刻触发,可以在CellEndEdit事件里手动调用dgvTank.EndEdit()来强制提交修改:

    private void dgvTank_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        dgvTank.EndEdit();
        UpdateData();
    }
    
  • 验证事件是否正确绑定
    有时候可能在设计器里不小心取消了事件绑定,或者代码里没有注册事件。你可以检查一下Form的构造函数或者Form_Load方法里有没有这段代码:

    dgvTank.CellValueChanged += dgvTank_CellValueChanged;
    

    或者打开设计器,选中dgvTank,在属性面板的事件列表里确认CellValueChanged已经绑定到了你的dgvTank_CellValueChanged方法上。

另外,给你的UpdateData方法提个小建议:用using语句来管理数据库连接,这样能确保连接被正确释放,避免因异常导致连接未关闭的问题:

private void UpdateData()
{
    using (OleDbConnection conn = new OleDbConnection(conTank.ConnectionString))
    {
        conn.Open();
        cbTank = new OleDbCommandBuilder(daTank);
        daTank.Update(dsTank, "TankMainTable");
    } // using块结束后自动关闭连接
}

你可以先从上面这几个点排查,应该能找到问题所在~

备注:内容来源于stack exchange,提问作者Nimish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:28:07