找回密码
 立即注册

QQ登录

只需一步,快速开始

NickYau

初级会员

12

主题

47

帖子

454

积分

初级会员

积分
454

微信认证勋章

[已处理] 撤销问题

NickYau
初级会员   /  发表于:2020-8-3 11:02  /   查看:4379  /  回复:13
如何让按钮点击事件继承表格控件的快捷键Ctrl+z的事件?

13 个回复

倒序浏览
NickYau
初级会员   /  发表于:2020-8-3 11:25:13
沙发
以及重做功能
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-8-3 13:46:32
板凳
你好,这个没有办法直接做到,

不过C1提供了自定义输入快捷键的设置方式,比如可以设置下面的代码,然后模拟按键

  1. var inputmap=fpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused);
  2. inputmap.Put(new Keystroke(Keys.NumPad1, Keys.Control), FarPoint.Win.Spread.SpreadActions.Undo);
复制代码

  1.        private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             fpSpread1.Focus();
  4.             SendKeys.Send("{A}");
  5.         }
复制代码
回复 使用道具 举报
NickYau
初级会员   /  发表于:2020-8-3 14:08:53
地板
Richard.Ma 发表于 2020-8-3 13:46
你好,这个没有办法直接做到,

不过C1提供了自定义输入快捷键的设置方式,比如可以设置下面的代码,然后 ...

那有什么方法能存储操作,然后能进行回退和重做?
回复 使用道具 举报
NickYau
初级会员   /  发表于:2020-8-3 14:10:27
5#
Richard.Ma 发表于 2020-8-3 13:46
你好,这个没有办法直接做到,

不过C1提供了自定义输入快捷键的设置方式,比如可以设置下面的代码,然后 ...

https://gcdn.grapecity.com.cn/showtopic-68012-1-2.html
这张帖子的回退只能回退到前一步,再之前的都不能回退了
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-8-3 17:34:21
6#
不需要存储操作,Spread本身就已经有撤销和重做的功能了,我这边测试的结果,在几个单元格中填入数据后,是可以一个一个撤销的,或者重做的
回复 使用道具 举报
NickYau
初级会员   /  发表于:2020-8-3 17:43:16
7#
Richard.Ma 发表于 2020-8-3 17:34
不需要存储操作,Spread本身就已经有撤销和重做的功能了,我这边测试的结果,在几个单元格中填入数据后,是 ...

那哪两个方法能触发撤销和重做?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-8-3 18:02:03
8#
没有提供方法,因此只能是通过上述 模拟按键的方法

SpreadActions.Undo和Redo就是触发撤销和重写动作


  1.             var inputmap = fpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused);
  2.             inputmap.Put(new Keystroke(Keys.NumPad1, Keys.Control), FarPoint.Win.Spread.SpreadActions.Undo);
  3.             inputmap.Put(new Keystroke(Keys.NumPad2, Keys.Control), FarPoint.Win.Spread.SpreadActions.Redo);
复制代码
回复 使用道具 举报
NickYau
初级会员   /  发表于:2020-8-4 09:11:33
9#
Richard.Ma 发表于 2020-8-3 18:02
没有提供方法,因此只能是通过上述 模拟按键的方法

SpreadActions.Undo和Redo就是触发撤销和重写动作

但是该方法只适用C1,spread.net在xaml中并无该方法
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-8-4 14:19:59
10#
抱歉,我没有看清楚你用的是WPF平台,
在WPF中也是通过模拟CTRL+Z和CTRL+Y就行

但是在wpf无法使用sendkeys,我帮你在网上找到的一个教程,
https://www.cnblogs.com/sixty/archive/2009/08/09/1542210.html
里面的http://files.cnblogs.com/zhouyinhui/Simulation.zip
封装好了模拟按键的类,如下调用即可模拟CTRL+Z撤销和CTRL+Y重做

  1.         private void Button_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             
  4.             spread1.Focus();
  5.             Keyboard.Press(Key.LeftCtrl);
  6.             Keyboard.Press(Key.Z);
  7.             Keyboard.Release(Key.Z);
  8.             Keyboard.Release(Key.LeftCtrl);

  9.         }

  10.         private void Button_Click_1(object sender, RoutedEventArgs e)
  11.         {
  12.             spread1.Focus();
  13.             Keyboard.Press(Key.LeftCtrl);
  14.             Keyboard.Press(Key.Y);
  15.             Keyboard.Release(Key.Y);
  16.             Keyboard.Release(Key.LeftCtrl);
  17.         }
复制代码



回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部