找回密码
 立即注册

QQ登录

只需一步,快速开始

beitesting

中级会员

28

主题

92

帖子

794

积分

中级会员

积分
794

活字格认证

beitesting
中级会员   /  发表于:2014-1-26 10:26  /   查看:10010  /  回复:11
ActiveX Spread Ver:7.0
NET Spread Ver:7.0
ActiveX的Spread的KeyDown事件,在NET的Spread的对应的事件是什么?
ActiveX的Spread的KeyDown事件,在单元格内每按下一个按键都会触发
在NET的KeyDown事件中,在单元格内按下按键不会触发KeyDown事件。

11 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-1-26 10:52:00
沙发
回复 1楼beitesting的帖子


1 .net下keydown事件,默认情况是可直接触发的:当在Spread内key按下的时候。

2 在Edit模式下,需要特殊设置才可触发KeyDown事件,参考代码如下:

  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             fpSpread1.EditModePermanent = true;
  4.             fpSpread1.EditModeReplace = true;
  5.             fpSpread1.EditMode = true;

  6.             fpSpread1.EditModeOn +=fpSpread1_EditModeOn;
  7.             fpSpread1.EditModeOff +=fpSpread1_EditModeOff;
  8.         }

  9.       private void fpSpread1_KeyDown(object sender, KeyEventArgs e)
  10.         {
  11.         }

  12.         private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
  13.         {
  14.             KeyEventHandler keyDown = new KeyEventHandler(fpSpread1_KeyDown);
  15.             fpSpread1.EditingControl.KeyDown += keyDown;
  16.         }

  17.         private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
  18.         {
  19.             KeyEventHandler keyDown = new KeyEventHandler(fpSpread1_KeyDown);
  20.             fpSpread1.EditingControl.KeyDown -= keyDown;
  21.         }
复制代码


ActiveX和.net下对应的事件、属性参考列表文档路径:Spread COM File Member Equivalents
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-1-26 11:19:00
板凳
回复 2楼roger.wang的帖子

谢谢
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-26 11:23:00
地板
回复 3楼beitesting的帖子


  客气了, 欢迎有问题开新帖沟通。
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-1-27 11:00:00
5#
回复 2楼roger.wang的帖子

这个对应方法还是达不到和VB6同样的效果?
VB6的KeyDown事件是在单元格内每按一次按键就会触发一次,提供的解决案,只能够实现在编辑开始和编辑结束触发两次KeyDown事件。
VB6如果在单元格内输入【123456】那么KeyDown事件就会执行6次
在NET下,如何实现这种效果?
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-27 12:34:00
6#
回复 5楼beitesting的帖子

您好,请把您实现的demo给上传一个,我帮您分析一下看看那里设置的问题。

按照上面的代码,输入【123456】,KeyDown事件就会执行6次的。
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-1-27 13:30:00
7#
回复 6楼roger.wang的帖子

一个新的Spread,属性值都是默认的。
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-1-27 13:39:00
8#
回复 6楼roger.wang的帖子

上传Demo时,提示内部服务器错误。
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-1-27 13:52:00
9#
回复 6楼roger.wang的帖子

  1. public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.         private void Form1_Load(object sender, EventArgs e)
  8.         {
  9.             fpSpread1.EditModePermanent = true;
  10.             fpSpread1.EditModeReplace = true;
  11.             fpSpread1.EditMode = true;

  12.             fpSpread1.EditModeOn += fpSpread1_EditModeOn;
  13.             fpSpread1.EditModeOff += fpSpread1_EditModeOff;
  14.         }

  15.         private void fpSpread1_KeyDown(object sender, KeyEventArgs e)
  16.         {
  17.             Console.WriteLine(e.KeyCode);
  18.         }

  19.         private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
  20.         {
  21.             KeyEventHandler keyDown = new KeyEventHandler(fpSpread1_KeyDown);
  22.             fpSpread1.EditingControl.KeyDown += keyDown;
  23.         }

  24.         private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
  25.         {
  26.             KeyEventHandler keyDown = new KeyEventHandler(fpSpread1_KeyDown);
  27.             fpSpread1.EditingControl.KeyDown -= keyDown;
  28.         }
  29.     }
复制代码
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-27 16:48:00
10#
回复 9楼beitesting的帖子

拷贝了9楼的代码,测试结果不变:输入【123456】,打印出:
D1
D2
D3
D4
D5
D6

我用的Spread Winform 版本:7.35.20132.1

能给个完整的demo吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部