找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证

超级版主

299

主题

7874

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13131

活字格认证圣诞拼拼乐微信认证勋章讲师达人元老葡萄悬赏达人

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-23 17:28  /   查看:6087  /  回复:0
在实际系统中,为了便于数据更容易被理解,我们需要将一些数据显示为用户一看就明白文本,比如说:发帖的叫楼主,第一个回帖的叫沙发,第二个回帖的叫板凳。该需求在Spread中可以通过自定义CellType非常方便的实现。

首先、实现一个自定义CellType,并定义一个Dictionary<string, string>类型的属性Items,该属性用于接收实际值与显示文本,然后重写PaintCell方法:
  1.     public class MyCellType : FarPoint.Win.Spread.CellType.GeneralCellType
  2.     {

  3.         public System.Collections.Generic.Dictionary<string, string> Items
  4.         {
  5.             get;
  6.             set;
  7.         }

  8.         public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  9.         {
  10.             if (value != null)
  11.             {
  12.                 if (Items.ContainsKey(value.ToString()))
  13.                 {
  14.                     value = Items[value.ToString()];
  15.                 }
  16.                 else
  17.                 {
  18.                     value = "什么都不是";
  19.                 }
  20.             }
  21.             base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  22.         }
  23.     }
复制代码
下面就可以使用自定义的CellType了:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         MyCellType ctp = new MyCellType();

  4.         Dictionary<string, string> items = new Dictionary<string, string>();
  5.         items.Add("1", "楼主");
  6.         items.Add("2", "沙发");
  7.         items.Add("3", "板凳");
  8.         items.Add("4", "地板");
  9.         ctp.Items = items;

  10.         fpSpread1.ActiveSheet.Columns[0].CellType = ctp;
  11.         fpSpread1.ActiveSheet.Cells[0, 0].Value = 3;
  12.         fpSpread1.ActiveSheet.Cells[1, 0].Value = 2;
  13.         fpSpread1.ActiveSheet.Cells[2, 0].Value = 5;
  14.     }
复制代码
运行效果:

png

png


VS2010 + Spread for .net 6.0
4065_CellType.zip (10.08 KB, 下载次数: 669)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部