找回密码
 立即注册

QQ登录

只需一步,快速开始

。。。

注册会员

4

主题

21

帖子

83

积分

注册会员

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

最佳答案

查看完整内容

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

8 个回复

倒序浏览
最佳答案
最佳答案
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.         }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 12:33:23
2#
本帖最后由 Richard.Ma 于 2021-4-16 17:10 编辑

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

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

你好,我重写了ProcessCmdKey方法,可以触发了,但是现在有个问题,按下shift+tab后,光标不会到上一个控件,而是单元格之间跳动,跳到没有下一个单元格了光标才会出来
回复 使用道具 举报
。。。
注册会员   /  发表于: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
复制代码
回复 使用道具 举报
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 16:40:26
6#
Richard.Ma 发表于 2021-4-16 16:15
你好,spread本身有一套快捷键,shift+tab对应其中的一个action动作,因此需要先清除掉这个快捷键,代码如 ...

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

还是只在单元格内跳动
回复 使用道具 举报
。。。
注册会员   /  发表于:2021-4-16 17:15:01
9#
Richard.Ma 发表于 2021-4-16 11:21
那应该是你的ProcessCmdKey里面的代码问题,可以参考下面的

谢谢,因为if里面没写return的原因
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部