gpt4 book ai didi

c# - 如何捕获在 C# 中的 DataGridView 上触发 "CellEndEdit"的击键?

转载 作者:太空狗 更新时间:2023-10-29 23:42:43 38 4
gpt4 key购买 nike

我有一个设置为 EditOnF2 的 DataGridView。我在设置单元格值的 CellEndEdit 事件处理程序中对数据进行了一些特殊处理。我仍然希望 EditOnKeystrokeOrF2 的功能在按下 Esc 键时恢复为原始值。不幸的是,在 CellEndEdit 事件处理程序中,我看不到一种方法来判断是什么导致了 CellEndEdit 事件被触发。如果没有按下 Esc 键,我只想更改单元格的值。我怎么知道是不是?

编辑:值得注意的是,在编辑单元格时不会触发 KeyDown 事件,最终结束击键时也不会触发。

Edit2:我已经尝试了 KeyPreview 的建议,但是表单仍然没有捕捉到按下的 Escape 键。

Edit3:我一直在尝试让它工作。我最初将以下一些内容作为单独的帖子发布,但觉得将其包含在此处可能更相关。

我在 DataGridView 中有一个单元格,现在设置为 EditProgrammatically。为了捕获开始编辑的击键,我将 cell.Value 设置为等于击键。但是,这会破坏单元格的“转义”功能 - 当您按下转义键时,它不会恢复为原始值,而是恢复为我以编程方式插入到单元格中的击键。

我相信如果我可以在一个单元格上设置“EditedFormattedValue”,这就是我想要放置击键值的地方,但是这似乎是只读的。我怎样才能完成我正在尝试的事情?

举例说明:如果单元格中的值为“54.3”,并且我按下“9”键,它会开始编辑单元格并在其中放置一个“9”。如果我点击 Escape,它不会恢复到“54.3”,而是恢复到“9”。我想要的是让它恢复到原来的值“54.3”。

所以,我试图从头到尾解决这个问题。我认为真正的问题是我正在覆盖原始值并且无法确定是否应该还原它。

Edit4:看起来 CellValidating 可能值得使用,但我在试验时看到了奇怪的行为。在一个新项目中,我创建了 DataGridView 并注册了各种事件,并看到 CellValidating 在 CellEndEdit 之前被触发。但是,在我试图让它工作的项目中,CellEndEdit 在 CellValidating 之前触发。有什么不同之处吗?

最佳答案

设置KeyPrevew property在你的表格上为真;这将防止控件首先吞噬它。 :)

关于c# - 如何捕获在 C# 中的 DataGridView 上触发 "CellEndEdit"的击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/774608/

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