`
isiqi
  • 浏览: 16092021 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ProcessCmdKey方法

 
阅读更多
使用DataGridView的时候经常需要修改其默认的操作方式,如按Enter回车键转到下一列的格,或直接把Enter当成是Tab键。这样的需求,对于DataGridView来说是很简单的。你需要做的就是重写其ProcessCmdKey方法。另一种需求是当编辑的列是某种特定的DataGridViewColumn时,执行特殊的操作。这个过程中我们需要配合DataGridView的系统消息与DataGridViewColumn的系统消息来实现一定的功能。 1、将Enter键变成Tab键 这是一个比较符合普通用户的操作习惯,对于操作DataGridView,使用ProcessCmdKey方法就足够了。下面是实现。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { base.ProcessCmdKey(ref msg, keyData); int WM_KEYDOWN = 256; int WM_SYSKEYDOWN = 260; bool _disable = false; if (msg.Msg == WM_KEYDOWN || msg.Msg == WM_SYSKEYDOWN) { switch (keyData) { case Keys.Enter: SendKeys.Send("{Tab}"); _disable = true; break; } } return _disable; } SendKeys.Send就是发送键消息,与用户直接敲击键盘的键是一样的效果。 上面的方法意思是当传送的系统消息是WM_KEYDOWN, WM_SYSKEYDOWN,敲击的是Enter键,就取消这个消息,并发送Tab消息键。 2、DataGridViewComboBoxColumn的快速下拉 如果你刚刚开始使用DataGirdView,一定觉得ComboBox列好麻烦,如果当前是选定的,点击一下是开始编辑,再点击一下下列小箭头才是下列动作,再选择项。 假设一下,如果可以这样:用户一按键盘就马上下拉,然后是自动筛选,那可能是很好的功能(视不同人的操作习惯而定)。 这个需求是可以达到,在重写ProcessCmdKey方法时,捕捉A-Z按键,并判断当前的是不是ComboBoxColumn,不过DataGridViewComboBoxColumn需要重新定义,将它分柝为Column,Cell和EditingControl三个文件。 在ProcessCmdKey重写时,一捕捉到A-Z按键,就Disabled它并发送F2键,F2键是插入操作符,并需要重定义EditingControl控件,增加OnKeyUp的重写,再判断A-Z的操作,并发送F4键,F4是下拉指令键。其实,也可以直接在ProcessCmdKey发送F2和F4,不过,过期使用ProcessCmdKey可能是比较麻烦的。
分享到:
评论

相关推荐

    解读在C#中winform程序响应键盘事件的详解

    在winform程序中给form添加了keyup事件,但是程序却不响应键盘事件,解决办法是重写Form基类的ProcessCmdKey(ref Message msg, Keys keyData)方法。 代码如下:protected override bool ProcessCmdKey(ref Message ...

    解决C#中取消方向键对控件焦点控制的实现方法

    在C# winform 应用程序中,对于键盘响应事件,经常使用到”KeyPress”、“KeyUp”、...下面的方法可以取消方向键对控件焦点的控制: 代码如下:protected override bool ProcessCmdKey(ref Message msg, Keys keyData)//

    什么是mysql安装配置教程以及学习mysql安装配置教程的意义

    mysql安装配置教程

    【光伏预测】基于BP神经网络实现光伏发电功率预测附Matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    onlyoffice搭建及与alist使用的view.html

    onlyoffice搭建及与alist使用的view.html

    android-support-v7-recyclerview 添加错误

    1.Project Structure中添加依赖时,容易添加不进去,所以使用本地添加,将android-support-v7-recyclerview放在对应项目的lib文件中,并add as library。如果在build.gradle中出现implementation files('libs\\android-support-v7-recyclerview.jar')就算是添加成功。 2.在布局文件中使用 androidx 的布局控件,在逻辑代码文件中导入androidx相关包。(取代android.support.v7) 3.在gradle.properties文件中,注释android.enableJetifier=true。(# android.enableJetifier=true) 最新way2:

    3款正射影像DOM导入CASS插件(测试通过).rar

    3款正射影像DOM导入CASS插件(测试通过),带坐标导入,超实用!

    什么是c语言以及学习了解c语言的意义是什么

    c语言

    基于java+MapReduce实现基于物品协同过滤算法,即电影推荐系统+源码+开发文档+算法解析(毕业设计&课程设计&项目开发

    基于java+MapReduce实现基于物品协同过滤算法,即电影推荐系统+源码+开发文档+算法解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 互联网某电影点评网站,主要产品包括 电影介绍 电影排行 网友对电影打分 网友影评 影讯&购票 用户在看|想看|看过的电影 猜你喜欢(推荐) 利用用户对电影的打分表来给用户推荐电影,用户打分表包括以下字段 userID--用户ID号 itemID--电影ID号 score--评分 ###基于物品的协同过滤算法 建立物品的同现矩阵 建立用户对物品的评分矩阵 矩阵计算推荐结果 ###MapReduce实现 程序流程图 .........

    node-v6.9.3-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    poi-3.9.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    netty-transport-native-epoll-4.1.68.Final-linux-x86_64.jar

    javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。

    grpcio-1.17.0-cp36-cp36m-linux_armv7l.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Python 程序语言设计模式思路-创建型模式:单例模式,确保一个类的唯一实例(装饰器)面向对象编程、继承

    单例模式(Singleton Pattern)作为创建型模式中的一种,旨在确保一个类在系统中只有一个实例,并提供全局访问点。

    基于matlab实现 powell算法 用matlab实现,使用方法内附详细说明.rar

    基于matlab实现 powell算法 用matlab实现,使用方法内附详细说明.rar

    xpp3_min-1.1.4c.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    node-v10.6.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Linux系统中常用权限管理命令

    附件是Linux系统中常用权限管理命令,文件格式是markdown,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的! 这些命令是Linux系统中管理文件和目录权限的基础工具。使用这些命令时,需要对权限的表示方法和命令的参数有一定的了解。在执行权限更改操作时,务必谨慎,以避免不必要的安全问题或权限问题。

    netty-resolver-4.1.48.Final.jar

    javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。

    telnet出口路由器的实验拓扑

    telnet出口路由器

Global site tag (gtag.js) - Google Analytics