找回密码
 立即注册

QQ登录

只需一步,快速开始

x_g
银牌会员   /  发表于:2015-9-15 18:59  /   查看:6566  /  回复:6
mutirow按TAB键在cell之间移动,请问如何控制当移动到最后一个cell后,就不在移动了,
我在shortcutkeymanager中设置它movetonextcell,但是当他移动到最后一个cell,继续按tab键,就会
移到第一个cell上去

6 个回复

倒序浏览
Carl
版主   /  发表于:2015-9-16 11:25:00
沙发
Tab 和 Shift+Tab 分别绑定的是SelectionActions.MoveToNextCell 和SelectionActions.MoveToPreviousCell。这两个Action都是Wrap方式,就是到最后一个会自动跳到第一个的。
你可以尝试把 Tab 和 Shift+Tab 分别绑定到 MoveToNextCellThenControl 和 MoveToPreviousCellThenControl,这两个Action是移动到最后一个Cell,再按一下就把Focus跳到下一个Control。

如果你需要Tab 和 Shift+Tab 既不要Wrap的效果,也不要跳到下一个Control,那么只能通过自定义Action来实现。
愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
x_g
银牌会员   /  发表于:2015-9-16 11:28:00
板凳
回复 2楼Carl的帖子

我想让tab键跳到最后一个cell后,就停在那里,不要跳到第一个,也不要跳到下一个控件上。
自定义Action要怎么控制呢
回复 使用道具 举报
x_g
银牌会员   /  发表于:2015-9-16 13:37:00
地板
请问如何控制呢
回复 使用道具 举报
Carl
版主   /  发表于:2015-9-16 13:46:00
5#
代码如下:

  1.     public class MyTabAction : GrapeCity.Win.MultiRow.Action
  2.     {
  3.         public override bool CanExecute(GcMultiRow target)
  4.         {
  5.             return SelectionActions.MoveToLastCell.CanExecute(target)
  6.                 && SelectionActions.MoveToNextCell.CanExecute(target);
  7.         }

  8.         protected override void OnExecute(GcMultiRow target)
  9.         {
  10.             SelectionActions.MoveToNextCell.Execute(target);
  11.         }
  12.     }
  13.     public class MyShiftTabAction : GrapeCity.Win.MultiRow.Action
  14.     {
  15.         public override bool CanExecute(GcMultiRow target)
  16.         {
  17.             return SelectionActions.MoveToFirstCell.CanExecute(target)
  18.                 && SelectionActions.MoveToPreviousCell.CanExecute(target);
  19.         }

  20.         protected override void OnExecute(GcMultiRow target)
  21.         {
  22.             SelectionActions.MoveToPreviousCell.Execute(target);
  23.         }
  24.     }

  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.             this.gcMultiRow1.ShortcutKeyManager.Unregister(SelectionActions.MoveToPreviousCell);
  28.             this.gcMultiRow1.ShortcutKeyManager.Unregister(SelectionActions.MoveToNextCell);
  29.             this.gcMultiRow1.ShortcutKeyManager.Register(new MyTabAction(), Keys.Tab);
  30.             this.gcMultiRow1.ShortcutKeyManager.Register(new MyShiftTabAction(), Keys.Tab | Keys.Shift);
  31.         }

复制代码


这段代码利用了SelectionActions.MoveToLastCell 在已经移动到最后一个Cell时 CanExecute 会返回false。

评分

参与人数 1金币 +999 收起 理由
Alice + 999 金币奖励

查看全部评分

愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
x_g
银牌会员   /  发表于:2015-9-16 15:18:00
6#
回复 5楼Carl的帖子

谢谢您,我试一试
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-9-16 17:07:00
7#
回复 6楼x_g的帖子

谢谢反馈。
如果依然有问题欢迎提出来讨论。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢        
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部