找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangyi

初级会员

31

主题

90

帖子

269

积分

初级会员

积分
269

活字格认证

zhangyi
初级会员   /  发表于:2013-12-3 02:07  /   查看:9622  /  回复:11
在开发中,客户反映在C1FlexGrid中按下回车键后,想把焦点移到右边的列,而不是现在默认的下一行,请问该如何处理,使用C# windowsform开发

11 个回复

正序浏览
iceman
社区贡献组   /  发表于:2013-12-9 10:40:00
12#
回复 11楼zhangyi的帖子

感谢完善问题解决方法。谢谢
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-8 19:06:00
11#
回复 6楼iceman的帖子

     首先感谢版主提供的思路
按版主提供的思路亲自试了一下,比较完美实现了,现将几个要注意的细节贴了来,省得大家走弯路,呵呵
我在测试的过程中发现 获取回车键给flag字段赋值的事件必须是KeyDownEdit事件和KeyDown事件,如果在KeyDown事件中赋值,在不修改单元格时直接回车是可以的,但如编辑单元格后再回车,则不行(估计是没有取到回车符),后来反复测试了多个事件,最终在这两事件中对flag赋值就可以了
  1.         private void grid1_RowColChange(object sender, EventArgs e)
  2.         {
  3.             NewMethod();
  4.             flag = false;
  5.         }

  6.         private void NewMethod()
  7.         {
  8.             if (flag == true)
  9.             {
  10.                 int i = grid1.Col;
  11.                 if (grid1.Cols[i].Visible == false || grid1.Cols[i].AllowEditing == false)//如此列不可见或是不可编辑则跳到下一列
  12.                 {
  13.                     if (i < grid1.Cols.Count)
  14.                     {
  15.                         grid1.Col = ++i;
  16.                         NewMethod();//递归
  17.                     }
  18.                 }
  19.             }
  20.         }

  21.         private void grid1_KeyDownEdit(object sender, C1.Win.C1FlexGrid.KeyEditEventArgs e)
  22.         {
  23.             if (e.KeyCode == Keys.Enter)
  24.             {
  25.                 this.flag = true;
  26.             }
  27.         private void grid1_KeyDown(object sender, KeyEventArgs e)
  28.         {
  29.             if (e.KeyCode == Keys.Enter)
  30.             {
  31.                 this.flag = true;
  32.             }
  33.         }
  34.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-4 11:31:00
10#
回复 9楼dqjia的帖子

不客气,有问题欢迎开新帖提问。
回复 使用道具 举报
dqjia
注册会员   /  发表于:2013-12-3 22:03:00
9#
非常感谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-3 18:29:00
8#
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2013-12-3 17:24:00
7#
回复 6楼iceman的帖子

学习了,这个操作也是经常要用到的
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-3 16:59:00
6#
回复 5楼dqjia的帖子

这个需要通过代码自定义:

  1. public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.             this.c1FlexGrid1.KeyDown += new KeyEventHandler(c1FlexGrid1_KeyDown);
  7.             this.c1FlexGrid1.KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.MoveAcross;
  8.             
  9.         }

  10.         bool flag = false;
  11.         void c1FlexGrid1_KeyDown(object sender, KeyEventArgs e)
  12.         {
  13.             if (e.KeyCode == Keys.Enter)
  14.             {

  15.                 flag = true;
  16.             }
  17.         }

  18.         private void c1FlexGrid1_RowColChange(object sender, EventArgs e)
  19.         {

  20.             if (flag==true)
  21.             {
  22.                 if (this.c1FlexGrid1.Col == 2)
  23.                 {
  24.                     flag = false;
  25.                     this.c1FlexGrid1.Col = 3;
  26.                 }
  27.             }
  28.         }
  29.     }
复制代码
回复 使用道具 举报
dqjia
注册会员   /  发表于:2013-12-3 12:55:00
5#
追问一下.如果按下回车键希望跳过中间非可编辑列,直接跳到一下个可编辑的列上,如何实现?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-3 11:22:00
地板
回复 3楼zhangyi的帖子

不客气,有问题欢迎开新帖提问。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部