如何在按 Enter 键时 dataGridView 光标转到下一行

2024-02-22

我已经编写了以下代码“当用户按 Enter 时转到下一个单元格”,但代码不起作用,我无法找到错误。

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == Keys.Enter)
        {
            int col = dataGridView1.CurrentCell.ColumnIndex;
            int row = dataGridView1.CurrentCell.RowIndex;

            if (col < dataGridView1.ColumnCount - 1)
            {
                col++;
            }
            else
            {
                col = 1;
                row++;
            }

            if (row == dataGridView1.RowCount)
            {
                dataGridView1.Rows.Add();
                dataGridView1.CurrentCell = dataGridView1[col, row];

                e.Handled = true;
            }
        }
    }

过去我发现实现这种行为的最佳方法是创建一个继承自DataGridView并覆盖ProcessCmdKey功能。

public class MyDataGridViewControl : DataGridView
{
    protected override Boolean ProcessCmdKey(ref Message msg, Keys keyData)
    {
        Boolean handled = false;

        if ((keyData == Keys.Enter || keyData == Keys.Return))
        {
            handled = NavigateToNextCell();
        }

        if (!handled)
        {
            handled = base.ProcessCmdKey(ref msg, keyData);
        }

        return handled;
    }

    private Boolean NavigateToNextCell()
    {
        Boolean retVal = false;

        if (CurrentCell != null)
        {
            Int32 columnIndex = CurrentCell.ColumnIndex;
            Int32 rowIndex = CurrentCell.RowIndex;

            DataGridViewCell targetCell = null;

            do
            {
                if (columnIndex >= Columns.Count - 1)
                {
                    // Move to the start of the next row
                    columnIndex = 0;
                    rowIndex = rowIndex + 1;
                }
                else
                {
                    // Move to the next cell on the right
                    columnIndex = columnIndex + 1;
                }

                if (rowIndex >= RowCount)
                {
                    break;
                }
                else
                {
                    targetCell = this[columnIndex, rowIndex];
                }
            } while (targetCell.Visible == false);


            if (targetCell != null)
            {
                CurrentCell = targetCell;
            }

            retVal = true;
        }

        return retVal;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在按 Enter 键时 dataGridView 光标转到下一行 的相关文章

  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 从 C 结构生成 C# 结构

    我有几十个 C 结构 我需要在 C 中使用它们 典型的 C 结构如下所示 typedef struct UM EVENT ULONG32 Id ULONG32 Orgin ULONG32 OperationType ULONG32 Size
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • Visual Studio 2017 完全支持 C99 吗?

    Visual Studio 的最新版本改进了对 C99 的支持 最新版本VS2017现在支持所有C99吗 如果没有 C99 还缺少哪些功能 No https learn microsoft com en us cpp visual cpp
  • 在 C++17 中使用 成员的链接错误

    我在 Ubuntu 16 04 上使用 gcc 7 2 并且需要使用 C 17 中的新文件系统库 尽管确实有一个名为experimental filesystem的库 但我无法使用它的任何成员 例如 当我尝试编译此文件时 include
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • 在 Safari 中,我认为 IE7 和 8 Math.random() 也不是随机的?

    http koreanwordgame com http koreanwordgame com 此页面首先通过 Ajax 将 4 个单词加载到选项 DIV 中 然后使用以下函数随机化正确答案 传递包含要随机化的元素的 DIV 作为参数 va
  • 如何在 AngularJS 的指令单元测试中注入服务

    我需要测试一个对某些注入服务进行调用的指令 以下代码是一个示例指令 它侦听事件 并在指定元素内按下 Enter 键时重定向浏览器 Edit 我感觉我可能正在涉足端到端测试领域 angular module fooApp directive
  • 模板类的可变成员函数

    我面临一个问题 我试图使用特定类型的参数包创建可变成员函数 template
  • Chrome 设备模式

    Chrome 现在有一个非常有用的 设备模式 可用于预览网页 因为它可能会出现在许多设备上 很有用 我想知道 有没有办法通过从页面本身运行的 JS 进入 退出设备模式 对于我所做的一些事情 让人们在不同设备上预览屏幕会很方便 而无需解释他们
  • 错误:断言失败:!_debugDuringDeviceUpdate 不是 true flutter

    当我在 flutter web 项目中添加一些小部件 如 ListView 时遇到此错误 我以前在使用 android 时从未遇到过这个问题 Exception has occurred Error Assertion failed fil
  • 与 lambda 不同()?

    是的 所以我有一个可枚举的值 并希望从中获得不同的值 Using System Linq 当然 有一个扩展方法叫做Distinct 在简单的情况下 它可以不带参数使用 例如 var distinctValues myStringList D
  • 在git中删除远程分支:一劳永逸地理解它

    我今天在这里发帖的原因是因为我在命令行上看到的行为与我实际在网上阅读的行为不同 所以这让我很困惑 这里有问题的两个命令是 git branch r d origin topic1 and git push origin topic1 到目前
  • 引导程序。如何只为手机屏幕添加下边距?

    我有这个 HTML 代码 div class row div class col xs 12 div class titulo h2 class title section font switch Algunos tecnologias q
  • 如何在Java中读取多行输入

    我们的教授正在让我们用 Java 进行一些基本编程 他提供了一个网站以及用于注册和提交我们的问题的所有内容 因为今天我需要做这个示例 我觉得我走在正确的轨道上 但我就是做不到弄清楚剩下的事情 这是实际的问题 Sample Input 10
  • Angular 2 ADAL 令牌刷新,用于隐式流程(使用“adal-angular4”)

    似乎没有实用的方法来刷新隐式流中的令牌 有人能够实现这一目标吗 MS 文档建议在 Iframe 中进行刷新 寻找有关在 adal ng2 或 adal js 中调用哪些方法的建议 编辑 我正在使用这个库https github com be
  • 如何从 Amplify 获取与 API 网关和 cognito 配合使用的访问令牌?

    我正在尝试从 Amplify 使用 Vue 获取正确的令牌 以使用 Cognito 登录 API 网关 到目前为止我尝试过这些 Auth currentSession then data gt console log idToken s d
  • Meteor 帐户自动登录模式?

    我正在考虑使用手机号码注册系统 人们可以使用手机号码注册并收到短信来验证他们是否存在 此时我想让他们自动登录而无需密码 短信基本上就是密码 这是以 Lyft 应用程序注册为模式的 不需要用户名 密码等 但对于我的一生 我不知道如何做到这一点
  • 从核心音频框架开始

    对于我打算很快开始的项目 我需要播放压缩和未压缩的音频文件 为此 我打算使用 Core Audio 框架 然而 我之前没有音频编程经验 我真的不知道从哪里开始 是否有任何初学者级别的资源或示例项目可以演示如何使用 Core Audio 构建
  • Java 不允许泛型类使用内部类数组

    我知道您无法创建泛型类型的数组 而是必须诉诸黑客 鉴于 Java 支持泛型数组 只是不支持它们的创建 我不清楚为什么 hack 比支持创建泛型数组的 Java 更好 而不是写这个 Map Entry
  • 为什么 typeof(int).ToString() 不是常量?

    我正在尝试这样做 const string intType typeof int ToString switch typeof MyT ToString case intType return int break 但编译器说 错误CS013
  • 基于规则的节点重组

    假设我有以下 XML 文件 其中包含我想根据规则重新排列的节点
  • JSF2 无法从 ViewScoped 作为 ManagedProperty 访问 SessionScoped bean

    我有一个奇怪的问题 Afaik 我可以将 SessionScoped bean 注入到 viewscoped 中 因为它比另一个更广泛 这是我的代码 ManagedBean ViewScoped public class ProjectBe
  • 如何在 React-query 中使用惰性查询?

    我正在使用 React query 进行 API 调用 我想知道是否有一种方法可以以惰性方式调用查询 意味着仅当查询参数更改时才调用查询 这就是我目前所拥有的 我正在使用黑客useEffect哪里如果recipeName更改 然后运行ref
  • Django 与远程 Oracle 服务器的性能非常慢

    我正在 Django 中向远程 Oracle 服务器运行原始 SQL 查询 查询很长并且花了一分半钟才完成 但如果我使用 Oracle SQL Server 程序执行相同的查询 则查询运行时间不到一秒 为何性能差异如此之大 如何加快 Dja
  • 如何在按 Enter 键时 dataGridView 光标转到下一行

    我已经编写了以下代码 当用户按 Enter 时转到下一个单元格 但代码不起作用 我无法找到错误 private void dataGridView1 KeyDown object sender KeyEventArgs e if e Key