如何检测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
相关产品推荐
相关产品推荐

