gpt4 book ai didi

.net - 验证 DataGridView 单元格

转载 作者:行者123 更新时间:2023-12-02 22:33:07 25 4
gpt4 key购买 nike

我有一个 DataGridView,它的其中一列是 DataGridViewCheckBoxColumn。当我检查此列的一个单元格时,我会验证同一行(但在不同列中)中的其他两个单元格是否为 0。如果两者都是 0,那么我想取消为复选框列输入的新值(消耗事件并忽略其上的更改)。也就是说:如果您选中它并且其他两列都是 0(在同一行中),那么我想继续取消选中复选框单元格。

我通过处理 CellValidating 事件来做到这一点。在其中,我检查这两个单元格(在同一行中)是否都是 0,如果是,并且用户已选中复选框单元格(也在同一行中),那么我执行 e.Cancel = true,为了保持未选中复选框单元格并忽略用户完成的检查。

但它不起作用,我看到 CellValidating 事件中的 e.RowIndex 不对应于我刚刚单击的行索引,但是 e.ColumnIndex 是正确的...

总而言之,我想要的是,当用户选中一行的复选框列时,如果同一行的其他两列值都设置为 0,我想保留该复选框列未更改(它保留其旧值,例如,如果它未选中并且用户选中它,它将保持未选中状态)。否则,如果这两列未都设置为 0,复选框列将考虑到它,例如,如果它未选中而用户选中它,它将更改为已选中。

有什么想法吗?

最佳答案

我会使用与 CellValidating 不同的事件。我会使用 CellBeginEdit

dataGridView1.CellBeginEdit += CellBeginEdit;

private void CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv[0, e.RowIndex].Value == "2") # or whatever conditions you want to check
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}

我相信 CellValidating 会在您之前所在的任何单元格上被调用,这就是行索引没有意义的原因。

关于.net - 验证 DataGridView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11880807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com