找回密码
 立即注册

QQ登录

只需一步,快速开始

foamhome1

高级会员

6

主题

18

帖子

1456

积分

高级会员

积分
1456

活字格认证

foamhome1
高级会员   /  发表于:2013-9-2 14:40  /   查看:6347  /  回复:5
如题,请问有解决方案吗?我现在想粘贴某个单元格,然后触发change事件

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-9-2 17:06:00
沙发
回复 1楼foamhome1的帖子

你好,

可以通过 KeyDown 事件截获粘帖事件,调用 Spread Change 事件。
请通过以下代码测试:

  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.             this.fpSpread1.Change += new FarPoint.Win.Spread.ChangeEventHandler(fpSpread1_Change);
  10.             this.fpSpread1.PreviewKeyDown += new PreviewKeyDownEventHandler(fpSpread1_PreviewKeyDown);
  11.         }

  12.         void fpSpread1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  13.         {
  14.             if (e.Control&&e.KeyCode== Keys.V)
  15.             {
  16.                 fpSpread1_Change(null,null);
  17.             }
  18.         }

  19.         void fpSpread1_Change(object sender, FarPoint.Win.Spread.ChangeEventArgs e)
  20.         {

  21.         }

  22.     }
复制代码
回复 使用道具 举报
foamhome1
高级会员   /  发表于:2013-9-2 17:26:00
板凳
回复 2楼iceman的帖子

使用PreviewKeyDown事件调用change事件的话,没法把我当前变更的单元格的行和列传递到change事件里啊
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-3 09:30:00
地板
回复 3楼foamhome1的帖子

可以新建 ChangeEventArgs参数传递行列信息:

  1. void fpSpread1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  2.         {
  3.             if (e.Control && e.KeyCode == Keys.V)
  4.             {
  5.                 int row=this.fpSpread1.ActiveSheet.ActiveRowIndex;
  6.                 int col = this.fpSpread1.ActiveSheet.ActiveColumnIndex;
  7.                 FarPoint.Win.Spread.ChangeEventArgs param=new ChangeEventArgs(null,row,col);
  8.                 fpSpread1_Change(null, param);
  9.             }
  10.         }

  11.         void fpSpread1_Change(object sender, FarPoint.Win.Spread.ChangeEventArgs e)
  12.         {

  13.         }
复制代码


同时也可以在 Change 事件中通过 Spread 属性拿到当前行列值:

  1. int row=this.fpSpread1.ActiveSheet.ActiveRowIndex;
  2.                 int col = this.fpSpread1.ActiveSheet.ActiveColumnIndex;
复制代码
回复 使用道具 举报
wzwwbc@163.com
注册会员   /  发表于:2020-1-19 11:26:06
5#
iceman 发表于 2013-9-3 09:30
回复 3楼foamhome1的帖子

可以新建 ChangeEventArgs参数传递行列信息:

请问多行一起粘贴时,要如何传递到change事件
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-1-19 12:34:05
6#
wzwwbc@163.com 发表于 2020-1-19 11:26
请问多行一起粘贴时,要如何传递到change事件

粘贴有专门的事件ClipboardPasted,里面可以获取到粘贴区域

https://www.grapecity.com/spread ... boardPasted_EV.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部