找回密码
 立即注册

QQ登录

只需一步,快速开始

merciful

论坛元老

18

主题

46

帖子

4982

积分

论坛元老

积分
4982

活字格认证

merciful
论坛元老   /  发表于:2011-4-25 13:26  /   查看:6714  /  回复:5
Cell在编辑状态下,按左右方向键,光标不退出编辑状态,只能在Cell内移动,应该如何设置?
ViewMode=Row

Multirow 6.0

5 个回复

倒序浏览
neil
论坛元老   /  发表于:2011-4-25 14:41:00
沙发
对于普通的Cell,移动焦点是受ShortcutkeyManager控制的。
如果你不想移动,那么只需要删除对应的快捷键即可。操作如下。
在GcMultiRow 属性窗口中点开 ShortcutkeyManager属性的编辑器。然后如下图所示:


1. 因为您的要求是要在viewMode 为Row时的操作,所以先确保您要修改的是Row Mode时的快捷键。 取保图中1 号红框中选择Row
2. 在左边的树中找到 左右方向键,Left和Right。  分别选中它们的动作,MoveToPreviorsRow 和MoveToNextRow(图中的2和3),   点击上面的移除按钮(Remove按钮, 图中的4),分别删除它们两个。
3. 然后点击下面的确定按钮(Ok),关闭编辑器。

然后再运行您的项目,此时左右键就只能在Cell内移动了。

如果此时您还需要在Cell之间移动的话, 还可以按键盘上的Tab键(向右)或者Shift+Tab(向左)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
merciful
论坛元老   /  发表于:2011-4-25 18:15:00
板凳
删除方式我知道了,问题是,我只想在编辑状态下Cell内部左右键无法移出,不是编辑状态的时候,左右键的动作还是快捷键设置的动作。能实现吗?
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-4-26 09:32:00
地板

回复 3# merciful 的帖子

先按照上面的步骤把两个Action删除,然后处理GcMultiRow的KeyUp事件,事件代码如下:
  1. void gcMultiRow1_KeyUp(object sender, KeyEventArgs e)
  2.         {
  3.             if (!this.gcMultiRow1.IsCurrentCellInEditMode)
  4.             {
  5.                 if (e.KeyCode == Keys.Left)
  6.                 {
  7.                     e.Handled = true;
  8.                     SelectionActions.MoveToPreviousRow.Execute(this.gcMultiRow1);
  9.                     return;
  10.                 }
  11.                 if (e.KeyCode == Keys.Right)
  12.                 {
  13.                     e.Handled = true;
  14.                     SelectionActions.MoveToNextRow.Execute(this.gcMultiRow1);
  15.                     return;
  16.                 }
  17.             }
  18.             
  19.         }
复制代码
回复 使用道具 举报
merciful
论坛元老   /  发表于:2011-4-26 15:11:00
5#
谢谢!
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-4-26 15:44:00
6#

回复 5# merciful 的帖子

不客气,能为用户解决问题,我们很高兴。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部