找回密码
 立即注册

QQ登录

只需一步,快速开始

laonawuli

银牌会员

39

主题

146

帖子

3383

积分

银牌会员

积分
3383

活字格认证

laonawuli
银牌会员   /  发表于:2011-11-17 12:16  /   查看:7506  /  回复:9
如题。
我知道可以
for(列数)
{
    for(行数)
   {
       if(Cell.Text=="")
          Cell.Value=0;
   }
}
还有其他的方法吗?

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-11-17 15:28:00
沙发

回复 1# laonawuli 的帖子

你好,需要自定义单元格类型来实现该功能,代码如下:

  1.           public class MyCellType : FarPoint.Win.Spread.CellType.TextCellType
  2.         {
  3.             public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  4.             {
  5.                 if (value == null)
  6.                 {
  7.                     value = "0";
  8.                 }
  9.                 base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  10.             }
  11.         }
复制代码
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-17 16:00:00
板凳
原帖由 iceman 于 2011-11-17 15:28:00 发表
你好,需要自定义单元格类型来实现该功能,代码如下:[code]
          public class MyCellType : FarPoint.Win.Spread.CellType.TextCellType
        {
            public override void PaintCell(Graphics ......


必须继承于TextCellType吗?  NumberCellType可以吗?
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-17 16:04:00
地板
原帖由 iceman 于 2011-11-17 15:28:00 发表
你好,需要自定义单元格类型来实现该功能,代码如下:[code]
          public class MyCellType : FarPoint.Win.Spread.CellType.TextCellType
        {
            public override void PaintCell(Graphics ......


同理,如果我想设置所有值为0的Cell显示为空,也可以用这个方法吗?
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-17 16:17:00
5#
原帖由 iceman 于 2011-11-17 15:28:00 发表
你好,需要自定义单元格类型来实现该功能,代码如下:[code]
          public class MyCellType : FarPoint.Win.Spread.CellType.TextCellType
        {
            public override void PaintCell(Graphics ......


请问这个方法重写以后,会在什么时候被执行呢?我在PaintCell中设了断点,发现没有进入,期间我把这个CellType赋值给了一些Column,而且这些Column原来的Value都是Null,设置为这个CellType以后并没有改变。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-17 18:41:00
6#
你好,这是我制作的 Demo ,实现了上述的功能,方法同样适用于 NumberCellType 。请你做参考:

Spread2.50.zip

1.91 MB, 下载次数: 456

zip

回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-18 09:41:00
7#
原帖由 iceman 于 2011-11-17 18:41:00 发表
你好,这是我制作的 Demo ,实现了上述的功能,方法同样适用于 NumberCellType 。请你做参考:


多谢上传示例!

我昨天自己做的例子不好用,是不是跟我在代码上方FP.SuplandLayOut 有关呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-18 11:55:00
8#

回复 7# laonawuli 的帖子

你好,
1.由于没有看到你的设置,所以不确定问题所在
2.然而这和 SuspendLayout() 方法没有关系,这个方法和 ResumeLayout() 结合使用可以提高程序的运行速度。
3.这有一篇关于 SuspendLayout() 的文章可以参考下:http://gcdn.grapecity.com/showtopic-2244.html
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-11-18 12:18:00
9#
原帖由 iceman 于 2011-11-18 11:55:00 发表
你好,
1.由于没有看到你的设置,所以不确定问题所在
2.然而这和 SuspendLayout() 方法没有关系,这个方法和 ResumeLayout() 结合使用可以提高程序的运行速度。
3.这有一篇关于 SuspendLayout() 的文章可以参考下:[url=http://gcdn.grapecity.com/showtopic-2244.html]http://gcdn.grape


有两个问题想请教:
1.如何改变  鼠标在Cell上面时候显示的光标? 我现在显示的是一个十字,我想显示成箭头
2.如何改变选中某行后显示的那种淡淡的蓝色呢?我尝试在SelectionColor中设置,发现不起作用
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-18 14:08:00
10#

回复 9# laonawuli 的帖子

你好,
1.设置表单单元格鼠标:

  1.             Cursor test = new Cursor(Application.StartupPath + "\\cellbtn.cur");
  2.             fpSpread1.SetCursor(FarPoint.Win.Spread.CursorType.Normal, test);
复制代码
详细请参考帮助文档 SetCursor 。
2.设置 SelectionBackColor:

  1.             fpSpread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors;
  2.             fpSpread1.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Row;
  3.             fpSpread1.ActiveSheet.SelectionBackColor = Color.Red;
  4.             fpSpread1.ActiveSheet.SelectionForeColor = Color.DarkBlue;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部