找回密码
 立即注册

QQ登录

只需一步,快速开始

淡定

注册会员

1

主题

2

帖子

7

积分

注册会员

积分
7
最新发帖
淡定
注册会员   /  发表于:2017-8-29 08:08  /   查看:3713  /  回复:5
您好,我在使用c1flexgrid设置样式的时候 发现有如下三个属性:Style、StyleDisplay、StyleNew请问他们有什么区别?

5 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2017-8-29 10:59:41
沙发
您好,C1flexgrid的所有样式都在Style下面,不太理解您说的这个几个样式是指的那些样式,能否截图给我指一下,您使用的是winfrom平台吗?
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
淡定
注册会员   /  发表于:2017-8-29 11:10:19
板凳
本帖最后由 淡定 于 2017-8-29 11:11 编辑
JeffryLI 发表于 2017-8-29 10:59
您好,C1flexgrid的所有样式都在Style下面,不太理解您说的这个几个样式是指的那些样式,能否截图给我指一 ...

是winform。以下三组写法有何区别
  1. CellRange cr = flex.GetCellRange(1, 1);
  2. cr.Style.BackColor = Color.Black;
  3. cr.StyleDisplay.BackColor = Color.Black;
  4. cr.StyleNew.BackColor = Color.Black;
复制代码


回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-8-29 12:21:28
地板
您好,谢谢您的耐心,是这样的,public CellStyle Style { get; set; } 获取或设置用于显示范围内每个单元格的样式,获取或设置范围样式可确保范围中的每个单元格具有相同的样式。 如果范围不包含任何具有自定义样式的单元格,则此属性返回null。
public CellStyle StyleDisplay { get; } 获取用于呈现单元格的样式(C1.Win.C1FlexGrid.CellRange.r1,C1.Win.C1FlexGrid.CellRange.c1)。此属性从不返回null。 它将返回分配给范围中第一个单元格的自定义样式,返回单元格的行,列或内置样式。
public CellStyle StyleNew { get; }获取用于显示范围中每个单元格的样式,如有必要,创建新样式。此属性从不返回null。 如果范围没有分配样式,将自动创建新样式。
后面两个属性只是只读,不能设置。希望能帮到您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
zzutian
初级会员   /  发表于:2019-10-31 16:19:17
5#
请问创建cell的新式样后,关于内存,即使将这个格子删除了,新式样的内存也没有释放,这是不是控件自身bug,我用的flexgrid版本是4.0.20172,麻烦你验证一下
现在问题是每次检索,每次都删除行,然后追加行,然后对每个格子设置新式样,结果就是内存一直增加,新版本有没有这个问题
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-10-31 17:19:11
6#
本帖最后由 Richard.Ma 于 2019-10-31 17:20 编辑

我估计你这边是用StyleNew来新建的样式,这样测试下来确实内存增加很快,也无法自动释放

换了一种写法,这样看到每次内存增长并不是很快了,同时实际上可以对添加的style进行操作
  1.             int i = 0;
  2.             while(true) {
  3.                 i++;
  4.                 CellStyle style= c1FlexGrid1.Styles.Add(i.ToString());
  5.                 style.BackColor = Color.Red;
  6.                 c1FlexGrid1.Rows.Add();
  7.                 CellRange range= c1FlexGrid1.GetCellRange(c1FlexGrid1.Rows.Count - 1, 1);
  8.                 range.Style = style;
  9.                 c1FlexGrid1.Rows.Remove(c1FlexGrid1.Rows.Count - 1);
  10.                 int c=c1FlexGrid1.Styles.Count;
  11.                 c1FlexGrid1.Styles.Clear();
  12.             }
复制代码





如果每次再加上下面的这句,即可将增加的style清除掉,这样就可以解决问题了

  1. c1FlexGrid1.Styles.Clear();
复制代码




回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部