找回密码
 立即注册

QQ登录

只需一步,快速开始

sinicom

中级会员

13

主题

34

帖子

748

积分

中级会员

积分
748

活字格认证

sinicom
中级会员   /  发表于:2011-8-3 17:34  /   查看:7476  /  回复:9
现在希望实现
有两个spread控件,在左边的spread最后一行,按下tab键,光标移到第二个spread上,如何处理

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 18:10:00
沙发

  1.         private void fpSpread1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  2.         {
  3.             if (e.KeyCode == Keys.Tab)
  4.             {
  5.                 if (fpSpread1.ActiveSheet.ActiveRowIndex == fpSpread1.ActiveSheet.Rows.Count-1 && fpSpread1.ActiveSheet.ActiveColumnIndex == fpSpread1.ActiveSheet.Columns.Count-1)
  6.                 {
  7.                     fpSpread2.Focus();
  8.                 }
  9.             }
  10.         }
复制代码
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-10 11:31:00
板凳
谢谢回答。
但是我试了一下,在vb.net里面,要长按住Tab键一段时间才会触发这个事件。
并不是像普通操作那样,按一下Tab就能触发事件。
这个事件原本就是需要长按住Tab键才行吗?
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-10 14:02:00
地板
还有一个问题,也是焦点迁移,比如光标在第二个spread的第一行,这时按下shift+Enter,如何让光标迁回到第一个spread呢?请指教
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-10 14:49:00
5#

回复 4# sinicom 的帖子

实现方法类似,请参考以下代码:
  1.     'FpSpread1和FpSpread2都是 5行 3列
  2.     Private Sub FpSpread1_PreviewKeyDown(sender As System.Object, e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles FpSpread1.PreviewKeyDown
  3.         If e.KeyCode = Keys.Tab AndAlso
  4.             FpSpread1.ActiveSheet.ActiveRowIndex = 4 AndAlso
  5.             FpSpread1.ActiveSheet.ActiveColumnIndex = 2 Then

  6.             FpSpread2.Focus()
  7.             FpSpread2.ActiveSheet.ActiveColumnIndex = 0
  8.             FpSpread2.ActiveSheet.ActiveRowIndex = 0

  9.         End If
  10.     End Sub

  11.     Private Sub FpSpread2_PreviewKeyDown(sender As System.Object, e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles FpSpread2.PreviewKeyDown
  12.         If e.Shift AndAlso e.KeyCode = Keys.Enter AndAlso
  13.             FpSpread1.ActiveSheet.ActiveRowIndex = 4 AndAlso
  14.             FpSpread1.ActiveSheet.ActiveColumnIndex = 2 Then

  15.             FpSpread1.Focus()
  16.             FpSpread1.ActiveSheet.ActiveColumnIndex = 2
  17.             FpSpread1.ActiveSheet.ActiveRowIndex = 4

  18.         End If
  19.     End Sub
复制代码
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-10 16:29:00
6#
谢谢回答。
我按照提示写了代码,但是在第一个spread的最后一个cell按下Tab时,
没有触发PreviewKeyDown事件。
必须一直按住Tab一段时间才会触发。
这样是不是有点不正常
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-10 16:35:00
7#
我调试的结果是,只要一按下Tab键就会触发PreviewKeyDown事件,只不过此时刚好从第一个spread的最后一个单元格跳到第二个spread的第一个单元格,而此时第二个spread选中的就是第一个单元格,所以必须再按一次Tab键才能看到第二个Spread选中的单元格在发生变化
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-10 17:36:00
8#
哦?奇怪,我这里在每次按下Tab键都没有触发事件,
难道有什么属性的设置会控制这个事件的触发?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-10 17:52:00
9#
附件是我的代码,在我的环境中可以正常触发,在你的环境中看是否能正常运行
Spread_Win_Demo_VB.zip (23.84 KB, 下载次数: 434)
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-10 17:57:00
10#
好的,那我去试试。谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部