x_g 发表于 2015-9-15 18:59:00

mutirow按TAB键如何移动到最后一个cell后就不移动了

mutirow按TAB键在cell之间移动,请问如何控制当移动到最后一个cell后,就不在移动了,
我在shortcutkeymanager中设置它movetonextcell,但是当他移动到最后一个cell,继续按tab键,就会
移到第一个cell上去

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来实现。

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

代码如下:

    public class MyTabAction : GrapeCity.Win.MultiRow.Action
    {
      public override bool CanExecute(GcMultiRow target)
      {
            return SelectionActions.MoveToLastCell.CanExecute(target)
                && SelectionActions.MoveToNextCell.CanExecute(target);
      }

      protected override void OnExecute(GcMultiRow target)
      {
            SelectionActions.MoveToNextCell.Execute(target);
      }
    }
    public class MyShiftTabAction : GrapeCity.Win.MultiRow.Action
    {
      public override bool CanExecute(GcMultiRow target)
      {
            return SelectionActions.MoveToFirstCell.CanExecute(target)
                && SelectionActions.MoveToPreviousCell.CanExecute(target);
      }

      protected override void OnExecute(GcMultiRow target)
      {
            SelectionActions.MoveToPreviousCell.Execute(target);
      }
    }

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



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

x_g 发表于 2015-9-16 15:18:00

回复 5楼Carl的帖子

谢谢您,我试一试

Alice 发表于 2015-9-16 17:07:00

回复 6楼x_g的帖子

谢谢反馈。
如果依然有问题欢迎提出来讨论。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢      http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: mutirow按TAB键如何移动到最后一个cell后就不移动了