C#.Net工作笔记019---葡萄城控件FlexGrid自定义风格_比如给某列设置某个颜色_该颜色不受选择行的影响

技术交流QQ群【JAVA,C,.NET,BigData,AI】:170933152 

项目中有个需求,就是,前两列,需要固定住,但是我们都知道固定列是,作为表的title部分的,也就是不能写入文字的,

但是客户需要,固定列,弄成可以写文字的,并且,写了文字,在进行行选择的时候,这个固定列,还不能变颜色也就是变成行选择的颜色

这个行选择,是设置了个flexgrid的属性,selectMode之类的,设置成row.

 

如果仅仅通过下面的代码,把那个固定列设置成普通的列,通过修改它的背景色等,可以实现下面的效果,但是行选择的时候,颜色还是

会变成选择色

通过把第二列设置为普通列,然后,赋值颜色:

 for (int i = 2; i < FlexGridTest.Rows.Count; i++)
            {
                FlexGridTest.GetCellRange(i, 1).StyleNew.BackColor
                    = FlexGridTest.Rows[i].StyleFixedDisplay.BackColor;
                FlexGridTest.GetCellRange(i, 1).StyleDisplay.BackColor = C1fShowPlanInfo.Rows[i].StyleFixedDisplay.BackColor;
          
                FlexGridTest.GetCellRange(i, 1).StyleNew.Border.Color
                    = FlexGridTest.Rows[i].StyleFixedDisplay.Border.Color;
                FlexGridTest.GetCellRange(i, 1).StyleDisplay.Border.Color = FlexGridTest.Rows[i].StyleFixedDisplay.Border.Color;
                FlexGridTest.GetCellRange(i, 1).StyleNew.ForeColor
                    = FlexGridTest.Rows[i].StyleFixedDisplay.ForeColor;
                FlexGridTest.GetCellRange(i, 1).StyleDisplay.ForeColor = FlexGridTest.Rows[i].StyleFixedDisplay.ForeColor;
                FlexGridTest.GetCellRange(i, 1).StyleNew.Font
                    = C1fShowPlanInfo.Rows[i].StyleFixedDisplay.Font;
                FlexGridTest.GetCellRange(i, 1).StyleDisplay.ForeColor = FlexGridTest.Rows[i].StyleFixedDisplay.ForeColor;
            } 

 但是这样的话,会出现上面图中的情况,行选择的时候,那一列显示的颜色不对,

可以通过自定义主题来实现.

具体在这样做:

load事件中加入:

  FlexGridTest.Styles.Add("myCustom4");
            FlexGridTest.Styles["myCustom4"].BackColor = FlexGridTest.Rows[0].StyleFixedDisplay.BackColor;
            FlexGridTest.Styles["myCustom4"].Border.Color = FlexGridTest.Rows[0].StyleFixedDisplay.Border.Color;
            FlexGridTest.Styles["myCustom4"].ForeColor = FlexGridTest.Rows[0].StyleFixedDisplay.ForeColor;
            FlexGridTest.Styles["myCustom4"].Font = FlexGridTest.Rows[0].StyleFixedDisplay.Font;

    FlexGridTest.DrawMode = DrawModeEnum.OwnerDraw;
           this.FlexGridTest.OwnerDrawCell += new C1.Win.C1FlexGrid.OwnerDrawCellEventHandler(this.c1FlexGrid1_OwnerDrawCell);

然后在添加一个事件,就可以了:

    private void c1FlexGrid1_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
        {
            if (e.Col == 1)
            {
                e.Style = C1fShowPlanInfo.Styles["myCustom4"];
            }
        }

这样就可以了,另外可以看到颜色上,入力的时候是红色,这个控制只能在设计器上的flex.styles.focus那改.

 

C1fShowPlanInfo.Styles.Focus = Color.Pink;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值