找回密码
 立即注册

QQ登录

只需一步,快速开始

lbzgrape

注册会员

13

主题

20

帖子

195

积分

注册会员

积分
195
lbzgrape
注册会员   /  发表于:2019-1-7 19:48  /   查看:3314  /  回复:1

因为C1FlexGrid不支持修改边框颜色,所以我们在Paint事件中重绘了表格控件的边框,正常情况下绘制没有问题,
但是如果在固定行和固定列的交汇处有合并,绘制就会出现问题,如上图所示,

测试代码:(c1FlexGrid1是向窗体拖的Grid控件)
        private void Form1_Load(object sender, EventArgs e)
        {
            c1FlexGrid1.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None;
            c1FlexGrid1.AllowMerging = AllowMergingEnum.Custom;
            c1FlexGrid1.ScrollBars = ScrollBars.None;
            c1FlexGrid1.Rows.Count = 0;
            c1FlexGrid1.Cols.Count = 0;
            c1FlexGrid1.Rows.Count = 50;
            c1FlexGrid1.Cols.Count = 50;
            c1FlexGrid1.Rows.Fixed = 3;
            c1FlexGrid1.Cols.Fixed = 1;
            c1FlexGrid1.Width = 500;
            c1FlexGrid1.Height = 200;
            c1FlexGrid1.MergedRanges.Add(0, 0, 2, 0);
            c1FlexGrid1.MergedRanges.Add(5, 0, 7, 0);
            c1FlexGrid1.MergedRanges.Add(0, 3, 0, 5);
            c1FlexGrid1[0, 0] = "索引";
            c1FlexGrid1.Paint += (s1, e1) =>
            {
                e1.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0, 0, c1FlexGrid1.Width - 1, c1FlexGrid1.Height - 1);
            };

        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-1-8 10:15:58
沙发
这个问题初步判断应该是控件合并单元格时会在里面创建一个其他的控件之类,因此就会遮挡画布中的这块
建议可以用下面的代码来替换你写的Paint,绘制窗体中对应位置,这样出来的红框效果基本一致,刚好大一圈,是看不出来的,

  1.             this.Paint += (s1, e1) =>
  2.             {
  3.                 e1.Graphics.DrawRectangle(new Pen(Color.Red, 1), c1FlexGrid1.Location.X-1, c1FlexGrid1.Location.Y - 1, c1FlexGrid1.Width + 1, c1FlexGrid1.Height + 1);
  4.             };
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部