找回密码
 立即注册

QQ登录

只需一步,快速开始

品茗-3

金牌服务用户

37

主题

95

帖子

344

积分

金牌服务用户

积分
344
品茗-3
金牌服务用户   /  发表于:2018-12-24 14:55  /   查看:3496  /  回复:8
请问对已加载的图片进行Ctrl+V(复制),Delete(删除)、移动、旋转、缩放等一系列操作来改动图片或Shape,
对应会触发spread的哪个changed事件?
12.gif

8 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-12-24 16:20:39
沙发
shape 的改变是在shape上有propertychang的事件,粘贴和删除我这边确认下给您回复
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-12-27 16:26:05
板凳
  1. fpSpread1.ActiveSheet.DrawingContainer.Changed += DrawingContainer_Changed;
  2.       void DrawingContainer_Changed(object sender, EventArgs e)
  3.         {
  4.           Console.WriteLine("DrawingContainer.Changed" + fpSpread1.ActiveSheet.DrawingContainer.Count.ToString());
  5.         }
复制代码


DrawingContainer_Changed 可以接收到粘贴。
  
  1.   d = new RectangleShape();
  2.           d.Name = "myshape";
  3.           d.Size = new System.Drawing.Size(100, 100);
  4.           d.Changed += d_Changed;
  5.     void d_Changed(object sender, EventArgs e)
  6.         {
  7.           Console.WriteLine("Shape.Changed: Top:" + d.Top.ToString() + ", Left:" + d.Left.ToString() + ", Height:" + d.Height.ToString() + ", Width:" + d.Width.ToString());
  8.         }
复制代码


change也能接收shape 调整事件
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2018-12-27 18:58:25
地板
本帖最后由 品茗-3 于 2018-12-27 19:00 编辑
dexteryao 发表于 2018-12-27 16:26
DrawingContainer_Changed 可以接收到粘贴。
   

好的,我试试
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2018-12-28 09:01:05
5#
本帖最后由 品茗-3 于 2018-12-28 09:15 编辑
dexteryao 发表于 2018-12-27 16:26
DrawingContainer_Changed 可以接收到粘贴。
   

DrawingContainer_Changed,新增和删除确实都可以进入,但它在打开表和关闭表的时候也会进入,我这调试新建初始的空表就先进入了2次,这样我无法用来判断因shape引起的表格内容变动,不好处理表格内容发生变化而触发的changed,怎么解决?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-12-28 09:12:54
6#
在打开后再注册事件,关闭前解除事件。 还有缓存下shapecount 如果没有发生变化就什么都不做。shape现在没有专门的新增删除事件,还有就是新增删除都是通过用户点击按钮或者键盘触发的,也可以在点击按钮时候从源头做一些处理,就不用被动的接事件了。
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2018-12-28 09:29:23
7#
本帖最后由 品茗-3 于 2018-12-28 09:31 编辑
dexteryao 发表于 2018-12-28 09:12
在打开后再注册事件,关闭前解除事件。 还有缓存下shapecount 如果没有发生变化就什么都不做。shape现在没 ...

bool ret = _spreadObject.Open(fileName);
if (ret)
{
                        BindEvents(_spreadObject);
}
我就是打开都注册事件的啊,还是会进入,我如果不打开,怎么可以对sheet注册事件呢
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2018-12-28 10:09:46
8#
dexteryao 发表于 2018-12-28 09:12
在打开后再注册事件,关闭前解除事件。 还有缓存下shapecount 如果没有发生变化就什么都不做。shape现在没 ...

   private void DrawingContainer_Changed(object sender, EventArgs e)
        {
            if (sender is FarPoint.Win.Spread.DrawingSpace.RectangleShape)
            {
           }
        }
表格打开时会有FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer参数传入,
我目前先通过传进来的sender参数进行判断来暂时应付这个changed,希望后期能在spread内容改变里(如EditChange事件),把图片相关的也算进去,或独立事件提取出来
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-12-28 14:12:25
9#
明白您的意思,spread这边操作比较复杂,事件没有分的那么细。
我会提交需求上去,看事件这里能否增强一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部