找回密码
 立即注册

QQ登录

只需一步,快速开始

libin4wo

注册会员

11

主题

40

帖子

129

积分

注册会员

积分
129
libin4wo
注册会员   /  发表于:2016-4-28 10:44  /   查看:7599  /  回复:11
Spread7.0中当单元格处于编辑状态的时候,KeyPress事件为什么无法触发?
有没有其他和KeyPress事件相同的事件去代替?

11 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-28 12:17:34
沙发
您好,在编辑状态认为您在输入内容所以不触发事件,可以使用InputMap监视用户输入。


  1.       FarPoint.Win.Spread.Keystroke k = new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.None, false);
  2.             FarPoint.Win.Spread.InputMap im;
  3.             im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  4.             im.Put(k, FarPoint.Win.Spread.SpreadActions.CancelEditing);
复制代码
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-28 13:23:37
板凳
或者
  1.             fpSpread1.EditModeOn += FpSpread1_EditModeOn;
  2.             fpSpread1.EditModeOff += FpSpread1_EditModeOff;

  3.         }

  4.         private void FpSpread1_EditModeOff(object sender, EventArgs e)
  5.         {
  6.             fpSpread1.EditingControl.KeyPress -= EditingControl_KeyPress;
  7.         }

  8.         private void FpSpread1_EditModeOn(object sender, EventArgs e)
  9.         {
  10.             fpSpread1.EditingControl.KeyPress += EditingControl_KeyPress;
  11.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
libin4wo
注册会员   /  发表于:2016-4-28 15:41:30
地板
恩 好的 我用第二种方法实现了 谢谢~
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-28 15:47:05
5#
不客气。
回复 使用道具 举报
szpzr
高级会员   /  发表于:2021-3-8 14:52:00
6#
版主:您好!
       第二种方式下能提供demo 吗?谢谢!
回复 使用道具 举报
szpzr
高级会员   /  发表于:2021-3-8 15:26:47
7#
private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(fpSpread1.Sheets[0].ActiveColumn.Index==0)
            {
                if(e.KeyChar==32)
                {
                    MessageBox.Show("按了空格!");
                }
            }
        }
如果:e.KeyChar==13,即按回车就没有激发事件。为什么?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-8 23:00:10
8#
问题已经收到,我明天早上给你验证看看
回复 使用道具 举报
szpzr
高级会员   /  发表于:2021-3-9 08:14:10
9#
谢谢!
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-9 09:40:53
10#
KeyPress 可以用于检测一般的字符输入,比如数字,字母,
但是对于回车键,方向键等功能键没办法检测,可以再配合PreviewKeyDown 来完成。参考下面的代码

  1.         private void FpSpread1_EditModeOff(object sender, EventArgs e)
  2.         {
  3.             fpSpread1.EditingControl.KeyPress -= EditingControl_KeyPress;
  4.             fpSpread1.EditingControl.PreviewKeyDown -= EditingControl_PreviewKeyDown;

  5.         }
  6.         private void FpSpread1_EditModeOn1(object sender, EventArgs e)
  7.         {
  8.             fpSpread1.EditingControl.KeyPress += EditingControl_KeyPress;
  9.             fpSpread1.EditingControl.PreviewKeyDown += EditingControl_PreviewKeyDown;
  10.         }

  11.         private void EditingControl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  12.         {
  13.             if(e.KeyCode== Keys.Return)
  14.             {
  15.                 MessageBox.Show("编辑状态按下了return键(回车键)");
  16.             }
  17.         }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部