.net - 在进入编辑模式时捕获第一个字符 - DataGridView 中的自定义编辑控件

标签 .net winforms datagridview

我在 DataGridView 中托管自定义编辑控件,记录为 TextBoxButton一起在 UserControl .我继承自 DataGridViewColumn对于新列和 DataGridViewTextBoxCell对于新单元格。

用正常 DataGridViewTextBoxCell , 如果您在单元格获得焦点时按下某个键,它将开始编辑模式并且您键入的字符将出现在 TextBoxEditingControl 中。 .但是,在我继承的单元格中,按键没有传递任何值。 (实际上,您必须手动在 InitializeEditingControl 中传递当前单元格值,否则根本不会显示任何内容。)因此,您键入的第一个字符(开始编辑模式的字符)将丢失。

我试过 OnKeyPress , OnKeyDown , 和 OnKeyUpDataGridViewCell但他们永远不会被召唤。 KeyEntersEditMode但是,似乎确实会被调用,并且仅在它检查按下的键时才被调用,因此这可能是一个不错的起点。那么问题就变成了如何将 KeyEventArgs 转换为 char .这对于字母和数字来说是微不足道的,但由于并非所有键盘都是一样的,因此处理其他键充其量是困惑和复杂的。如果有一个转换器类可以自动执行此操作,请赐教。

有没有其他人遇到过这个问题或找到了一个好的解决方法?

注意:此问题适用于 EditMode设置为 EditOnKeystroke 的任何变体.设置为 EditOnEnter是我项目的有效解决方法,但我想模拟 TextBoxEditingControl 的默认行为以及。

最佳答案

尝试将用户控件的 KeyPreview 设置为 true。然后检查启动编辑过程的键是否会触发 keydown,即使对于用户控件也是如此。如果是,您可以在文本控件进入编辑模式后简单地存储和分配字符。

关于.net - 在进入编辑模式时捕获第一个字符 - DataGridView 中的自定义编辑控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/373856/

相关文章:

c# - 为什么 c# 上的 paypal 开发人员说明在 github 上不同?

c# - 在不锁定文件的情况下在 Winforms 中显示动画 gif

c# - 如何在 GeckoFX 中为不同的控件存储不同的 cookie

c# - 为什么我收到错误 "Input string was not in a correct format"

.net - 绑定(bind)到 EntityCollection 时如何让 Windows 窗体 DataGridView 显示新记录

c# - 听一个复选框

c# - .NET中的LinkedList是循环链表吗?

c# - 错误 : A project with an out put type of class library

.net - Google GData .Net OAuthUtil.GetAccessToken 400 错误请求

c# - Crystal Reports 根据心情加载