gpt4 book ai didi

c# - DataGridViewCheckBoxCell 未得到检查

转载 作者:行者123 更新时间:2023-12-02 14:24:26 28 4
gpt4 key购买 nike

DataGridViewCheckBoxCell 未被检查。我已经像这样插入了第一列

DataGridView1.Columns.Insert(0, new DataGridViewCheckBoxColumn { Name = "Print" });

这不起作用

DataGridView1.Rows[0].Cells[0].Value = true;

这都不起作用

DataGridView1.Rows[0].Cells[0].Value = cell.TrueValue;

没有得到检查的原因可能是什么?

最佳答案

我自己也遇到了这个问题。我使用了下面的代码,但我不明白为什么它不能一直正常工作。

(请注意,我的代码是用 VB 编写的,但我认为相同的概念也适用于其他 .NET 语言)

Dim check As DataGridViewCheckBoxCell = DataGridView1.Rows(i).Cells("columnNameHere")
If check.Value = check.TrueValue Then
'do stuff
End If

然后我意识到这是因为单元格的基本值在失去焦点之前不会改变。我认为 DGV 总是这样,但很容易忘记。

我的解决方案是简单地向单击事件处理程序上的数据 GridView 添加一点代码。当用户单击该复选框时,它所做的只是将焦点转移到其他地方。我将焦点转移到标签上,这样就不会产生任何意想不到的后果。 (例如:如果您将其转移到按钮,当用户按下 Enter 键并激活随机按钮时,他们可能会感到惊讶。)根据 DGV 中的其他内容,您可能需要检查事件的列索引,以便您可以仅对复选框列执行此操作。无论如何,我的 DGV 中的所有其他列都是只读的,所以对我来说这并不重要。

Private Sub DataGridView1_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Label1.Focus()
End Sub

如果有问题的代码包含在按钮中,则焦点已经从 DGV 转移到按钮,因此这不会成为问题。就我而言,代码是由计时器激活的 - 这意味着相关 DGV 单元在计时器触发之前不一定会失去焦点。

关于c# - DataGridViewCheckBoxCell 未得到检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681092/

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