请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

hiliuyong

初级会员

37

主题

61

帖子

270

积分

初级会员

积分
270
hiliuyong
初级会员   /  发表于:2021-9-5 23:03  /   查看:1994  /  回复:5
本帖最后由 Richard.Ma 于 2021-10-19 13:58 编辑

详见附件 ,已经完成了大部分代码,
希望拖动的时候,图标还可以在该列头的位置。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-6 09:57:32
沙发
问题已经收到,我验证后给你回访
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-6 16:24:59
板凳
OnOwnerDrawCell事件是在每一个单元格绘制时都会触发,一般来说是用于根据条件去动态设置每个单元格的内容,比如判断当单元格值>100时,设置背景色为红色。
如果是用于绘制的话,也是根据这个单元格的范围e.Bounds来作为坐标范围,

目前你的需求,可以用Paint事件,在flexgrid绘制时来加图标,通过col.WidthDisplay可以获取到实际显示的宽度,由于拖动后,flexgrid也会重绘,因此也不需要再特别设置

  1.         private void C1FlexGridEx_Paint(object sender, PaintEventArgs e)
  2.         {
  3.             int xoffset = 0;
  4.             foreach (Column col in this.Cols)
  5.             {
  6.                 if(!col.AllowEditing)
  7.                     e.Graphics.DrawImage(Properties.Resources.Lock, xoffset, 3, 10, 11);
  8.                 xoffset += col.WidthDisplay ;
  9.                
  10.             }
  11.         }
复制代码
回复 使用道具 举报
hiliuyong
初级会员   /  发表于:2021-9-6 17:10:03
地板
完美解决,万分感谢!
  1.         private void C1FlexGridEx_Paint(object sender, PaintEventArgs e)
  2.         {
  3.             int xoffset = 120;
  4.             foreach (Column col in this.Cols)
  5.             {
  6.                 if (!col.AllowEditing)
  7.                 {
  8.                     xoffset += col.WidthDisplay;
  9.                     Graphics g = e.Graphics;
  10.                     g.DrawImage(Properties.Resources.Lock, xoffset, 5, 7, 8);
  11.                 }
  12.             }
  13.         }
复制代码

实际操作时,int xoffset = 120;  要多120个像素的偏移量,问题是解决了,但是不知道这个偏移量是哪里来的
回复 使用道具 举报
hiliuyong
初级会员   /  发表于:2021-9-6 17:22:40
5#
搞明白了,是我代码有点问题,最终的代码是这样的
  1.             int xoffset = -10;
  2.             foreach (Column col in this.Cols)
  3.             {
  4.                 xoffset += col.WidthDisplay;
  5.                 if (!col.AllowEditing)
  6.                 {
  7.                     e.Graphics.DrawImage(Properties.Resources.Lock, xoffset, 5, 7, 8);
  8.                 }
  9.             }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-6 17:40:38
6#
嗯,有其他的问题欢迎发新帖咨询
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部