找回密码
 立即注册

QQ登录

只需一步,快速开始

yinzhm

初级会员

32

主题

129

帖子

339

积分

初级会员

积分
339

活字格认证微信认证勋章

yinzhm
初级会员   /  发表于:2014-6-25 11:55  /   查看:4735  /  回复:1
好!
Spread7.0 ADO版本.
DrawItem事件,会重绘列Header部分,通过事件参数每次传入一个列Header的行号和列号以及矩形区域等,直到所有列Header绘制完毕为止。如果有5列就会DrawItem5次。
现在升级到Spread7.0 for WinForms
(1)没有该事件
(2)考虑用Paint事件替代,但是事件参数提供的信息差别很大。
     (2.1)无法得到具体某列的矩形区域,传入的是整个Spread的区域。----------- 只能通过其他方式获得。
     (2.2)该事件值Paint一次,不会有几列Paint几次,所以必须在一次Paint的事件将所有列绘制完毕。-----需要添加处理,而且绘制出来的效果不是很好,还在调查中。

有没有更好的方案替代DrawItem,是不是这个事件Spread本身是有的,只不过没有公开出来,可不可以重写?
请教版主!!!

1 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-6-25 18:00:00
沙发
回复 1楼yinzhm的帖子

Spread for WinForms 版本可以通过以下放法实现:

  1.         private void Form1_Load(object sender, System.EventArgs e)
  2.         {
  3.             fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = new myColumnHeaderRenderer();
  4.             fpSpread1.Sheets[0].Columns[0].AllowAutoSort = true;
  5.             fpSpread1.Sheets[0].Columns[0].AllowAutoFilter = true;
  6.         }
  7.         // Define a new column header renderer.
  8.         public class myColumnHeaderRenderer : FarPoint.Win.Spread.CellType.ColumnHeaderRenderer
  9.         {
  10.             public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  11.             {
  12.                 base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  13.             }
  14.             // Override the sorting indicator paint method.
  15.             override public void PaintSortIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
  16.             {
  17.                 //g.DrawImage(new Image(), new Point(0, 0));
  18.             }
  19.             // Override the filtering indicator paint method.
  20.             override public void PaintFilterIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
  21.             {
  22.                 g.FillRectangle(new SolidBrush(Color.Blue), r);
  23.             }
  24.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部