mindrayguowei 发表于 2015-9-30 10:48:00

删除图片问题

删除图片的时候,触发一个TextControl_ImageDeleted事件

这个事件里面有一个ImageEventArgs参数,现在问题来了

1.这个事件被触发的时候,图片的数量没有减少
2. 循环TextControl.Images,找不到e.Image

所以现在的问题就是,在删除图片的事件里面,无法确定哪个图片被删除了.
我的需求是要对剩下的所有图片重新排版,现在无法确定哪个被删除,图片的数量也没少,无法重新排版

iceman 发表于 2015-9-30 15:49:00

回复 1楼mindrayguowei的帖子

感谢问题反馈:
请问您是通过什么属性来查找被删除图片的?我通过文件名是可以查找到的:

      private void Form1_Load(object sender, EventArgs e)
      {
            TXTextControl.Image img = new TXTextControl.Image("..\\..\\Balloon.bmp", 1);
            TXTextControl.Image img1 = new TXTextControl.Image("..\\..\\Penguin.bmp", 1);

            this.textControl1.Images.Add(img,0);
            this.textControl1.Images.Add(img1,1);

            this.textControl1.ImageDeleted += new TXTextControl.ImageEventHandler(textControl1_ImageDeleted);
      }

      void textControl1_ImageDeleted(object sender, TXTextControl.ImageEventArgs e)
      {
            foreach (TXTextControl.Image img in this.textControl1.Images)
            {
                if (img.FileName==e.Image.FileName)
                {
                  MessageBox.Show("delete image`s name is "+e.Image.FileName);
                }
            }
      }


Demo:


问题1,这个可能是tx内部逻辑问题,在这个时候并没有同步ImageCollection的数量。

mindrayguowei 发表于 2015-10-8 14:08:00

通过FileName查找有问题的,第一次贴图之后保存成rtf文件,再打开这个rtf文件,删除图片的时候FileName有可能变空了

iceman 发表于 2015-10-8 17:25:00

回复 3楼mindrayguowei的帖子

按照你的描述我修改了代码->保存为 rtf文件再打开,并没有重现这个问题:

private void Form1_Load(object sender, EventArgs e)
      {
            TXTextControl.Image img = new TXTextControl.Image("..\\..\\Balloon.bmp", 1);
            TXTextControl.Image img1 = new TXTextControl.Image("..\\..\\Penguin.bmp", 1);


            this.textControl1.Save("..\\..\\test.rtf", TXTextControl.StreamType.RichTextFormat);
            this.textControl1.Load("..\\..\\test.rtf", TXTextControl.StreamType.RichTextFormat);


            this.textControl1.Images.Add(img,0);
            this.textControl1.Images.Add(img1,1);

            this.textControl1.ImageDeleted += new TXTextControl.ImageEventHandler(textControl1_ImageDeleted);


            foreach (TXTextControl.Table tb in this.textControl1.Tables)
            {
                MessageBox.Show(tb.ID.ToString());
            }
      }

      void textControl1_ImageDeleted(object sender, TXTextControl.ImageEventArgs e)
      {
            foreach (TXTextControl.Image img in this.textControl1.Images)
            {
                if (img.FileName==e.Image.FileName)
                {
                  MessageBox.Show("delete image`s name is "+e.Image.FileName);
                }
            }
      }


能否请你发送个demo到论坛用于重现问题?

mindrayguowei 发表于 2015-10-10 10:27:00

并不是每一次都是FileName变空的,这个是随机发生的

iceman 发表于 2015-10-10 19:11:00

回复 5楼mindrayguowei的帖子

您好,能不能提供更多的线索来重现这个问题?我们需要在重现问题后进一步解决问题。

您插入图片的方式是否和 4# 相同,或者出现问题和正常场景有哪些差异?图片格式不同?

下周一我会给您去电沟通这个问题。

iceman 发表于 2015-10-20 09:22:00

回复 1楼mindrayguowei的帖子


为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: 删除图片问题