找回密码
 立即注册

QQ登录

只需一步,快速开始

turboming

注册会员

16

主题

57

帖子

179

积分

注册会员

积分
179
turboming
注册会员   /  发表于:2019-12-4 14:24  /   查看:3350  /  回复:7
请问spread中编辑状态下的单元格按下键盘中的END键spread的什么事件可以捕获这个END键

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-4 16:05:20
沙发
您好,请参考
https://www.grapecity.com/spread ... ps-custominput.html
spread有专门的inputMap + Action 的机制处理用户键盘事件
回复 使用道具 举报
turboming
注册会员   /  发表于:2019-12-4 16:29:03
板凳
dexteryao 发表于 2019-12-4 16:05
您好,请参考
https://www.grapecity.com/spreadnet/docs/v13/online-win/spwin-maps-custominput.html
s ...

明白,用这种办法spread处于非编辑状态下keydown事件就可以截获到END键了,但是spread处于编辑状态下(就是双击进入某一个单元格)就无法截获到END键了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-4 17:43:59
地板
您好
设置 WhenAncestorOfFocused ,如果不希望 非编辑状态执行,可以在action里判断下 是否是编辑状态。
https://www.grapecity.com/spread ... pread~EditMode.html
https://www.grapecity.com/spread ... d.InputMapMode.html
回复 使用道具 举报
turboming
注册会员   /  发表于:2019-12-5 09:33:56
5#
dexteryao 发表于 2019-12-4 17:43
您好
设置 WhenAncestorOfFocused ,如果不希望 非编辑状态执行,可以在action里判断下 是否是编辑状态。
...

麻烦帮我看一下这么写代码有什么问题
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim im As FarPoint.Win.Spread.InputMap
        im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.End, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
    End Sub

    Private Sub FpSpread1_KeyDown(sender As Object, e As KeyEventArgs) Handles FpSpread1.KeyDown
        If e.KeyCode = System.Windows.Forms.Keys.End Then

        End If
    End Sub
End Class


image.png37674559.png
这种非编辑状态下 按END键
断点进来了 如图
image.png600894164.png

编辑状态下
image.png164596861.png
按下END键
断点进不去
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-5 09:48:32
6#
您没有用Active去处理响应,那么进入编辑状态后是新的输入控件,需要重新绑定事件,请参考

  1.             fpSpread1.EditModeOn += FpSpread1_EditModeOn;
  2.             fpSpread1.EditModeOff += FpSpread1_EditModeOff;
  3.         }

  4.         private void FpSpread1_EditModeOn(object sender, EventArgs e)
  5.         {
  6.             fpSpread1.EditingControl.KeyDown += EditingControl_KeyDown;
  7.         }

  8.         private void FpSpread1_EditModeOff(object sender, EventArgs e)
  9.         {
  10.             fpSpread1.EditingControl.KeyDown -= EditingControl_KeyDown;
  11.         }
复制代码

评分

参与人数 1满意度 +5 收起 理由
turboming + 5 很给力!

查看全部评分

回复 使用道具 举报
turboming
注册会员   /  发表于:2019-12-5 10:25:33
7#
dexteryao 发表于 2019-12-5 09:48
您没有用Active去处理响应,那么进入编辑状态后是新的输入控件,需要重新绑定事件,请参考

非常感谢 已解决
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-5 17:41:55
8#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部