找回密码
 立即注册

QQ登录

只需一步,快速开始

jarodma
论坛元老   /  发表于:2013-3-8 16:08  /   查看:7742  /  回复:9
在spread初期时,设置【Enter】键的功能:
        inputMap = .GetInputMap(InputMapMode.WhenAncestorOfFocused)
        inputMap.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap)
        inputMap = .GetInputMap(InputMapMode.WhenFocused)
        inputMap.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap)
之后,程序运行时,当cell是编辑状态时,【Enter】键按下时,【KeyDown】事件无效,为什么?


有解决办法吗?


请指教!

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-8 16:50:00
沙发
请问这个单元格设置的什么CellType呢,进入编辑状态之后Spread接受不到KeyDown事件,而是单元格内的编辑控件接受KeyDown事件。
回复 使用道具 举报
jarodma
论坛元老   /  发表于:2013-3-8 17:00:00
板凳
回复 2楼dof的帖子

自己封装textcellType,但是,textcelltype中好像没有KeyDown事件,只有【EditingStop】,【EditingCanceled】,【EditorValueChanged】这三个事件。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-8 17:59:00
地板
你可以在Spread的EditModeOn事件中取到EditingControl,然后可以使用EditingControl控件的KeyDown事件。
回复 使用道具 举报
jarodma
论坛元老   /  发表于:2013-3-12 16:48:00
5#
呵呵,就是这么做的。可是还是不好用。
代码如下:
    Protected Overrides Sub OnEditModeOn(ByVal e As System.EventArgs)
        Try
            MyBase.OnEditModeOn(e)
            Trace.WriteLine("EditModeOn")

            Dim keyDownHandler As KeyEventHandler = AddressOf ToToMoSpread_KeyDown
            AddHandler Me.EditingControl.KeyDown, keyDownHandler
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-12 19:49:00
6#
jarodma 你好
你是否继承Spread实现了以自定义类型,能否发个能够重现你问题的例子给我调试以下,看问题出在哪里。
回复 使用道具 举报
jarodma
论坛元老   /  发表于:2013-3-13 09:29:00
7#
回复 6楼dof的帖子

dof高人 您好
您说的很对,我就是自己封装了一下spread。
因为有保密协议,所以源代码不能给您发。不过原因我大概知道,就是在spread初期化时,定义了【Enter】键的操作(如一楼),之后,当cell进入编辑状态时,在按【Enter】时。事件【KeyDown】就不好用了。但是别的键是好用的,如果除掉一楼的操作,问题就迎刃而解。不过不是我的业务要求。

我的业务要求是:按【Enter】键,spread的光标调到下一列的cell,但当是特殊cell时,要进行Check,而这个Check我在KeyDown中操作的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-13 14:35:00
8#
回复 7楼jarodma的帖子

能否按照 5# 中的思路抽一个简单的 Demo 出来,发到论坛,我可以协助调试。
回复 使用道具 举报
jarodma
论坛元老   /  发表于:2013-3-13 17:54:00
9#
我做了一个小的Demo,大家一起看看吧。

※spread的版本可能有问题,我的是5。

Demo.zip

67.19 KB, 下载次数: 976

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-13 17:59:00
10#
回复 9楼jarodma的帖子

好的,Demo 已经查收,正在调查中,明天回复。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部