找回密码
 立即注册

QQ登录

只需一步,快速开始

malimalihong

论坛元老

6

主题

27

帖子

4884

积分

论坛元老

积分
4884

活字格认证

最新发帖
malimalihong
论坛元老   /  发表于:2011-8-2 18:26  /   查看:8119  /  回复:5
在这个http://gcdn.grapecity.com/showtopic-1905.html帖子中,Spread获得光标后,就进入了编辑模式。
启动时我加入了如下的代码:
        Dim im As FarPoint.Win.Spread.InputMap
        im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousRowWrap)

可如果不是第一个单元格,按下Shift+Tab光标会进入Spread的上一个可输入的单元格。

有什么方法能跳出Spread,将光标放在画面的上一个控件呢?

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 09:32:00
沙发
你加的那三行代码就是你看到的结果,你是想通过 Shift + Tab 跳出Spread吗,通过默认的InputMap只能控制Spread内部的行为,不能控制其调整到Spread外部。
回复 使用道具 举报
malimalihong
论坛元老   /  发表于:2011-8-3 09:54:00
板凳

回复 2# Zera 的帖子

我现在的应用时这样的:
在Spread中,
1.按下Tab时,光标放到画面的下一个控件。
2.按下Shift+Tab,光标放到画面的上一个控件。
3.只有按下Enter时,光标才在Spread中移动,移动到下一个单元格。

通过EditEnterAction属性设置,第三个已经实现了。第1个,没有特殊设置,也实现了。唯独这第二个,还没解决方法。

请问不用InputMap,有别的办法能实现第二个需求吗,就是Shift+Tab跳出Spread。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 09:58:00
地板
抱歉,刚才我的理解有点偏差,你看以下代码是否是你想要实现的功能:

  1.             FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
  2.             im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  3.             im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
  4.             im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  5.             im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.None);
复制代码
回复 使用道具 举报
malimalihong
论坛元老   /  发表于:2011-8-3 13:45:00
5#

回复 4# Zera 的帖子

试了下,没好用。
            im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
            im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.None);
的效果,还是在单元格里,连上一个单元格都没进。

我换成了
            im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
            im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumn);
后,效果是移动到同一列的前一个单元格,当已经到达第一个单元格的时候,就会跳出Spread。

这和我想到的效果还是有点偏差,不过这个Spread只有两列是可输入的,希望能过关。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 15:13:00
6#
我做了个例子,你可以看一下:
13809817341005.zip (18.75 KB, 下载次数: 561)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部