Winform中 DataGridView控件中的 CheckBox 的值读出来 始终 为 False ,已解决
2024-10-21 12:40:30
private void DGV_DetailsViewer_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex.Equals())
{
DataGridViewCheckBoxCell cbx = (DataGridViewCheckBoxCell)this.DGV_DetailsViewer.Rows[e.RowIndex].Cells[e.ColumnIndex]; MessageBox.Show(cbx.FormattedValue.ToString());
}
}
用的 以上这段代码 读出来 的checkBoxCell的值始终 为 False, 原因 不明。
原因是 :CellContentClick 事件 并不能修改 CheckBoxCell的值,靠 这个事件 不行。
正确的做法 应该是 利用 CurrentCellDirtyStateChanged 事件 和 CellValueChanged 事件 的 组合 来完成 这个功能。代码如下:
//这个事件先执行,即使得 修改后的 checkboxcell的内容立刻生效,否则只有离开这个单元格时 才会生效。
private void DGV_DetailsViewer_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (DGV_DetailsViewer.IsCurrentCellDirty)
{
DGV_DetailsViewer.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
} //值修改后,就执行这个事件,想要实现的功能 在这个事件里实现
private void DGV_DetailsViewer_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= && e.RowIndex != - && !this.DGV_DetailsViewer.Rows[e.RowIndex].IsNewRow)
{ if (e.ColumnIndex.Equals())
{
DataGridViewCheckBoxCell cbx = (DataGridViewCheckBoxCell)this.DGV_DetailsViewer.Rows[e.RowIndex].Cells[e.ColumnIndex]; MessageBox.Show(cbx.FormattedValue.ToString());
}
}
}
最新文章
- 51Nod-1279 扔盘子
- c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行
- 【POJ 3176】Cow Bowling
- hdu 5492 Find a path(dp+少量数学)2015 ACM/ICPC Asia Regional Hefei Online
- HDU 5809 Ants(KD树+并查集)
- [置顶] js操作iframe兼容各种浏览器
- [C#] 使用 StackExchange.Redis 封装属于自己的 Helper
- Mybatis源码之Statement处理器PreparedStatementHandler(五)
- linux之间免密操作
- CImage的坑
- nginx之location的匹配规则
- FFT是个啥?
- POJ 2578
- Node.js实战(九)之事件循环
- 快速切题 poj1573
- FT项目开发技术点(四)
- xmppframework 简介
- Boost学习之语法解析器--Spirit
- PHP上传文件类 代码练习
- (wifi)wifi移植之命令行调试driver和supplicant