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

如何检测Telerik RadGridView复选框切换状态并正确响应事件?

问题根因

原代码的判断逻辑存在本质错误:if (C_0_GridData.ActiveEditor is RadCheckBoxEditor) 仅判断当前激活的编辑器是否为复选框类型,完全没有读取复选框的实际选中状态。只要单元格处于编辑状态、编辑器是复选框,无论值为true还是false都会进入第一个分支设置红色,值切换为false时永远不会进入else分支,自然无法触发颜色变化。

修复代码

核心逻辑是拿到复选框编辑器的实际值,根据布尔结果设置字体颜色,不要用编辑器类型作为颜色判断依据:

private void C_0_GridData_ValueChanged(object sender, EventArgs e)
{
    if (C_0_GridData.ActiveEditor is RadCheckBoxEditor checkEditor)
    {
        bool isChecked = Convert.ToBoolean(checkEditor.Value);
        label1.ForeColor = isChecked ? Color.Red : Color.Black;
    }
}

优化项

如果需要点击复选框后立刻触发颜色变更,不需要等单元格退出编辑状态才生效,可以在窗体初始化代码中添加如下配置,开启复选框列的值即时提交:

// 替换为你项目中实际的复选框列索引或列名
GridViewCheckBoxColumn targetCheckColumn = (GridViewCheckBoxColumn)C_0_GridData.Columns["你的复选框列名"];
targetCheckColumn.EditMode = EditMode.OnValueChange;

内容的提问来源于stack exchange,提问作者Philipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:27:21