找回密码
 立即注册

QQ登录

只需一步,快速开始

Sai_wei20

注册会员

10

主题

23

帖子

73

积分

注册会员

积分
73
Sai_wei20
注册会员   /  发表于:2021-11-23 14:07  /   查看:3442  /  回复:6
1金币
想做一个操作,就是在修改cell内容的时候改变cell的颜色,
但是我发现使用cell().ForeColor = Color.Blue的时候会终止编辑模式。
导致我编辑内容需要重写。有什么办法可以解决这个问题么。在线等。、、、

最佳答案

查看完整内容

给你验证了第二种方式 自定义单元格类型,重写编辑控件 设置此类型为默认类型

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-23 14:07:31
来自 7#
给你验证了第二种方式


自定义单元格类型,重写编辑控件
  1.     public class CusTextCellType : TextCellType
  2.     {
  3.         public override Control GetEditorControl(Control parent, FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
  4.         {
  5.             appearance.ForeColor = System.Drawing.Color.Red;
  6.             return base.GetEditorControl(parent, appearance, zoomFactor);
  7.         }
  8.     }
复制代码


设置此类型为默认类型

  1. fpSpread1.ActiveSheet.DefaultStyle.CellType = new CusTextCellType();
复制代码

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-23 16:34:28
2#
我理解你主要是想要一个编辑时的动态样式(编辑中的单元格背景色变化),并不是要实际给这个单元格添加背景色样式,是这样吗?
回复 使用道具 举报
Sai_wei20
注册会员   /  发表于:2021-11-24 11:20:47
3#
也可以这样理解,在输入单元格的同时,让整列字体颜色变化,但不影响单元格的继续输入。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-24 12:31:04
4#
这个目前无法通过设置皮肤样式实现,如果确实需要的话,又两个办法,但是可能都比较麻烦

1.设置单元格的实际背景色,但是这个会覆盖掉此单元格本身的背景色设置,你需要先把原有的背景色保存起来,退出编辑后再设置回去

2.自定义单元格编辑器,设置编辑时显示的背景色,你如果是要给特定单元格设置的话,可以这样,但是整体设置不建议,因为可能你还需要其他的单元格类型
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2021-11-25 08:47:21
5#
本帖最后由 yin_tb 于 2021-11-25 08:52 编辑
Sai_wei20 发表于 2021-11-24 11:20
也可以这样理解,在输入单元格的同时,让整列字体颜色变化,但不影响单元格的继续输入。

根据马老师说的方法1,给你两个思路,1:在LeveCell事件中,e.Row代表离开前的Cell,e.NewRow代表新的Cell,同理,还有e.Column和e.NewColumn,在这个事件中去变你的颜色字体和恢复颜色字体。2:用自定义键盘映射,Spread有例子,比如输负号时,让颜色变红色。不知道我理解你需求对不对,你可以试试。我觉得你用LeveCell事件实现应该好弄。还有进入编辑模式,离开编辑模式等事件,你都可以用
回复 使用道具 举报
Sai_wei20
注册会员   /  发表于:2021-11-25 10:10:49
6#
若是用leavecell事件就等于编辑结束了,这个不是我要的结果,我是要再编辑中的时候改变整一行的字体颜色。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部