找回密码
 立即注册

QQ登录

只需一步,快速开始

。。。

注册会员

4

主题

21

帖子

83

积分

注册会员

积分
83
。。。
注册会员   /  发表于:2021-4-16 11:21  /   查看:3066  /  回复:8
10金币
我想做个shift+tab组合键 实现焦点从表格里能跳到其他的控件上,但是现在keydown事件不能被tab触发,shift可以

最佳答案

查看完整内容

那应该是你的ProcessCmdKey里面的代码问题,可以参考下面的

8 个回复

正序浏览
。。。
注册会员   /  发表于:2021-4-16 17:15:01
9#
Richard.Ma 发表于 2021-4-16 11:21
那应该是你的ProcessCmdKey里面的代码问题,可以参考下面的

谢谢,因为if里面没写return的原因
回复 使用道具 举报
。。。
注册会员   /  发表于:2021-4-16 16:53:48
7#
Richard.Ma 发表于 2021-4-16 16:15
你好,spread本身有一套快捷键,shift+tab对应其中的一个action动作,因此需要先清除掉这个快捷键,代码如 ...

还是只在单元格内跳动
回复 使用道具 举报
。。。
注册会员   /  发表于:2021-4-16 16:40:26
6#
Richard.Ma 发表于 2021-4-16 16:15
你好,spread本身有一套快捷键,shift+tab对应其中的一个action动作,因此需要先清除掉这个快捷键,代码如 ...

您好,这个没有效果
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 16:15:55
5#
你好,spread本身有一套快捷键,shift+tab对应其中的一个action动作,因此需要先清除掉这个快捷键,代码如下,然后你再用你上面的代码就行了

  1.             FarPoint.Win.Spread.InputMap inputmap1;
  2.             // Assign the InputMap object to the existing map.
  3.             inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  4.             inputmap1.Remove(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift));
复制代码
回复 使用道具 举报
。。。
注册会员   /  发表于:2021-4-16 12:48:34
4#
  1. Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
  2.         If msg.Msg = &H100 And keyData = (Keys.Shift Or Keys.Tab) Then
  3.             If grdLog.ContainsFocus Then
  4.                 cmdClear.Select()
  5.             End If

  6.         End If
  7.         Return MyBase.ProcessCmdKey(msg, keyData)

  8.     End Function
复制代码
回复 使用道具 举报
。。。
注册会员   /  发表于:2021-4-16 12:46:57
3#
Richard.Ma 发表于 2021-4-16 12:33
问题已经收到,我验证后给你回访

你好,我重写了ProcessCmdKey方法,可以触发了,但是现在有个问题,按下shift+tab后,光标不会到上一个控件,而是单元格之间跳动,跳到没有下一个单元格了光标才会出来
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 12:33:23
2#
本帖最后由 Richard.Ma 于 2021-4-16 17:10 编辑

问题已经收到,我验证后给你回复

回复 使用道具 举报
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 11:21:08
来自 8#
那应该是你的ProcessCmdKey里面的代码问题,可以参考下面的


  1.         protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
  2.         {
  3.             if (keyData == (Keys.Tab | Keys.Shift))
  4.             {
  5.                 formulaTextBox1.Focus();
  6.                 return true;
  7.             }
  8.             else
  9.             {
  10.                 return base.ProcessCmdKey(ref msg, keyData);
  11.             }
  12.             
  13.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部