找回密码
 立即注册

QQ登录

只需一步,快速开始

basechina

论坛元老

7

主题

26

帖子

5637

积分

论坛元老

积分
5637

活字格认证

[已处理] FlexGrid求助

basechina
论坛元老   /  发表于:2012-5-24 09:13  /   查看:7349  /  回复:7
关于FlexGrid有两个问题想请教一下大神们。
1,现在grid里面有一列是显示颜色的。但是设置了HighLight属性之后,HighLight的颜色会覆盖掉那列的颜色。VisualStyle在Custom下会这样。其它样式却不会覆盖。在Custom下怎样实现那种不会覆盖的效果。
2,在Vs里面,在新建项目对话框里有个一览表,当鼠标在上面移动的时候,会出现淡黄色圆角矩形充斥整个行,这种效果在FlexGrid里能实现吗,要怎样实现。

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-5-24 10:13:00
沙发

回复 1# basechina 的帖子

basechina 你好,
问题一解决方法为,在 c1FlexGrid1_EnterCell 事件中判断当前列是否为有 BackColor 列,根据逻辑设置 HighLight:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.c1FlexGrid1.VisualStyle = C1.Win.C1FlexGrid.VisualStyle.Custom;

  4.             this.c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Column;

  5.             this.c1FlexGrid1.Cols[2].StyleNew.BackColor = Color.Red;
  6.         }

  7.         private void c1FlexGrid1_EnterCell(object sender, EventArgs e)
  8.         {
  9.             if (this.c1FlexGrid1.Col == 2)
  10.             {
  11.                 this.c1FlexGrid1.HighLight = C1.Win.C1FlexGrid.HighLightEnum.Never;
  12.             }
  13.             else
  14.             {
  15.                 this.c1FlexGrid1.HighLight = C1.Win.C1FlexGrid.HighLightEnum.Always;
  16.             }
  17.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-24 10:36:00
板凳

回复 2# iceman 的帖子

问题二解决方法如下:

  1.         int previousRow = 0;
  2.         int newRow = 0;
  3.         private void c1FlexGrid1_MouseMove(object sender, MouseEventArgs e)
  4.         {
  5.             newRow = this.c1FlexGrid1.MouseRow;
  6.             if (newRow==previousRow&&previousRow!=0)
  7.             {
  8.                 return;
  9.             }
  10.             this.c1FlexGrid1.Rows[newRow].StyleNew.BackColor = Color.LightGreen;
  11.             this.c1FlexGrid1.Rows[previousRow].StyleNew.BackColor = Color.White;

  12.             previousRow = newRow;
  13.         }
复制代码
回复 使用道具 举报
basechina
论坛元老   /  发表于:2012-5-24 12:21:00
地板
iceman你好,谢谢你的回答。
关于第一个问题,你的代码刚才运行了一下,和我的期望有点不同。估计是我刚刚没有说清楚,不好意思啊。呵。
我的意思是这样的,就是说不管它的SelectionMode是什么,也不管是点击还是片选,它带颜色的Cell都不能被HighLight所覆盖。
回复 使用道具 举报
basechina
论坛元老   /  发表于:2012-5-24 12:36:00
5#
iceman你好!
关于第二个问题,用Style这样可以实现,但是估计像圆角的处理恐怕就不行了。如果用OwnerDrawCell事件进行重绘的话,有没有可行性呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-24 17:56:00
6#

回复 4# basechina 的帖子

不好意思,这个 Case 无法实现。
回复 使用道具 举报
basechina
论坛元老   /  发表于:2012-5-25 13:25:00
7#
iceman,今天来晚了不好意思,呵。
谢谢你的回复。
:share:
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-25 17:41:00
8#

回复 7# basechina 的帖子

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