在使用datagridview控件时,默认按回车是跳转到下一行的当前列的,要想让按回车跳转到同一行的下一列该怎么做呢?

百度搜索了一下,大都是使用该控件的key_down事件和CellEndEdit进行处理,我都试验了一下,全都不行,不能达到预期的效果,而且使原来的方向键的功能也搞乱了。

找了半天,最后终于找到一个有效的方法(注:不是我发明的),重载窗体的ProcessCmdKey事件,代码如下:

代码

bool enterkey;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
enterkey = false;
if (keyData == Keys.Enter) //监听回车事件
{
if (this.gvGzb.IsCurrentCellInEditMode) //如果当前单元格处于编辑模式
{
enterkey = true; //把是否点击按钮设置为真
if (btnSetEnter.Text != "竖")
if (gvGzb.CurrentCell.RowIndex == gvGzb.Rows.Count - 1)
{
//SendKeys.Send("{Up}");
SendKeys.Send("{Tab}");
}
else
{
SendKeys.Send("{Up}");
SendKeys.Send("{Tab}");
}
}
}
//继续原来base.ProcessCmdKey中的处理
return base.ProcessCmdKey(ref msg, keyData);
}

以上代码只处理编辑状态下的回车事件,在普通状态下的回车事件就要用key_down事件处理了:

代码

private void gvGzb_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Return) && (btnSetEnter.Text != "竖"))
{
SendKeys.Send("{Tab}");
e.Handled = true;
if ((gvGzb.FirstDisplayedScrollingColumnHiddenWidth > 0) && !gvGzb.Columns[gvGzb.SelectedCells[0].ColumnIndex].Frozen)
{
gvGzb.FirstDisplayedScrollingColumnIndex = gvGzb.SelectedCells[0].ColumnIndex;
}
}
}

上面的FirstDisplayedScrollingColumnIndex属性设置,是为了在datagirdview的列很多的情况下,按回车换列将滚动条后面的列自动显示出来,如下图,我用net做的简易工资管理系统,有很多项,如果不设置的话,最后一列只能看到一半。

提供这个方法的那位仁兄,不知为什么还要处理Cell_Parsing事件,我这里不需要已经发觉很完美了。

dataGridView使用指南系列一、回车换行或换列完美解决方案相关推荐

  1. netty权威指南笔记-以回车换行结尾的消息如何处理半包问题

    概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...

  2. 陈勇写的换行、换列排放

    var num:int=34;//图片数量 var colsNum:int=5;//预定列数,即每行放多少张图片 var cols:int;//列索引号 var rows:int;//行索引号 for ...

  3. 【sql server】回车换行符的替代

    一.问题说明 若excel里面的字段内容自动换行,这时sql server导入excel表格数据后,写完相关的查询语句再导出excel后出现字段内容占两行的情况.这时我们该如何将回车换行符拿掉,将两行 ...

  4. 去掉SqlServer中字段包含的回车、换行、回车换行符

    -- 制表符 CHAR(9) -- 换行符 CHAR(10) -- 回车 CHAR(13) 注意:特殊字符在Sql Server Management Studio查询中显示为空格,但实际不是空格.在 ...

  5. 回车符、换行符和回车换行符

    我的CSDN主页 My Python 学习个人备忘录 我的HOT博 自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多.            ...

  6. php 替换回车tab,PHP替换回车换行符的三种方法

    小小的回车换行,在不同的平台有着不同的实现. 为什么要这样,世界是多样的! 推荐学习:PHP视频教程 本来,在Unix / Linux世界换行用\n, Windows为了体现不同,就用\r\n, 更有 ...

  7. textarea去掉回车换行

    1,把textarea内输入的内容中有回车换行的转成<br />传给后台, var content = $("#text").val().replace(/\n/g,& ...

  8. php 将换行符替换,PHP替换回车换行符的三种方法

    小小的回车换行,在不同的平台有着不同的实现. 为什么要这样,世界是多样的! 推荐学习:PHP视频教程 本来,在Unix / Linux世界换行用\n, Windows为了体现不同,就用\r\n, 更有 ...

  9. JS替换空格回车换行符

    JS替换空格回车换行符 str=str.replace(/\r/g," ") str=str.replace(/\n/g,"<br />")  或 ...

最新文章

  1. Comet OJ - Contest #2题解
  2. linux中cp:overwrite提示的问题
  3. 2012-06-04 老男孩老师 “我毕业了”(转)
  4. hdu4282 x^z+y^z+x*y*z=k 解的个数
  5. Spring MVC:使用SimpleUrlHandlerMapping的一个简单例子
  6. SilverLight非托管代码的初始化进度条方法
  7. mysql获取查询策略语句_MySQL数据库查询性能优化策略
  8. 链家大数据多维分析引擎实践
  9. gpt linux双系统安装win7系统分区格式化,如何在GPT分区格式上安装win7 64位系统
  10. java token身份认证_java – 基于Spring Security Token的身份验证
  11. Java常用设计模式(面试常考)
  12. 机器学习:蒙特卡罗方法
  13. 基于html的旅游网站的设计与实现
  14. 铺地毯(NOIP真题)
  15. ctab提取dna流程图_ctab 提取dna配方
  16. 多线程私有数据pthread_key_create
  17. 盘点世界顶级五大黑客:个个都是神
  18. excel--转化IP地址为十进制
  19. JS点击复制按钮复制相关内容
  20. 武汉安全员ABC证报名条件有什么要求?甘建二

热门文章

  1. QDoc状态status
  2. C语言Stock span 库存跨度问题(附完整源码)
  3. C++树的层次遍历(附完整源码)
  4. C++继承中构造和析构顺序
  5. C++变量、函数在内存中的情况
  6. android ndk 编译c++11,Android NDK的C++11标准支持
  7. 22个激活函数,ReLU、RReLU、LeakyReLU、PReLU、Sofplus、ELU、CELU、SELU、GELU、ReLU6、Sigmoid、Tanh、Softsign、Hardtanh等
  8. rocketmq集群安装部署过程(4.0.0版本)、安装中的常见问题举例
  9. Elasticsearch的功能,Elasticsearch的适用场景,Elasticsearch的特点(来自学习资料)
  10. linux发送http请求xml报文,使用curl命令行发送/发布xml文件