找回密码
 立即注册

QQ登录

只需一步,快速开始

sheep
论坛元老   /  发表于:2011-4-12 16:39:00
31#
我做了个demo,单个的功能都能实现,不能组合用,求老大指导

demo.rar

79 KB, 下载次数: 486

rar

回复 使用道具 举报
sheep
论坛元老   /  发表于:2011-4-12 16:39:00
32#
晕。。怎么发了这么多
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-4-12 17:42:00
33#
你每次设置border之前,现将border清空,再跑你的逻辑就好了。
回复 使用道具 举报
sheep
论坛元老   /  发表于:2011-4-13 15:18:00
34#
压缩下能传了,这个问题真棘手shi了

demo视频.rar

237.53 KB, 下载次数: 464

rar

回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-4-13 15:24:00
35#
看了你的视频。

如果你是想设置Thick Border之后,开始设置的All Border不存在,那就在你设置新的Border之前,将上次的设置先全部清除就ok了。

如果你是想Thick Border之后,之前设置的All Border还存在(视频里是最外面一圈消失了),你就要使用ComplexBorder(而不是LineBorder)来处理最外层一圈Cell。ComplexBorder可以指定上,下,左,右的边不一样粗细。剩下的你懂的~
回复 使用道具 举报
sheep
论坛元老   /  发表于:2011-4-14 11:24:00
36#
恩,我想设置的是 all border还存在。这样的话,直接一片空白区域设置thick border的时候,不是又囧了
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-4-14 13:47:00
37#
你不要使用LineBorder,使用ComplexBorder来代替。
设置完All Border,再设置Thick Border时,只需要把外面一圈Cell的Border的Top,Bottom,Left和Right,按照需要加粗就可以了。

All Border
  1.             CellRange cr = this.fpSpread1.ActiveSheet.GetSelection(0);
  2.             ComplexBorderSide nomalSide = new ComplexBorderSide(Color.Red,1);
  3.             for (int i = cr.Row; i < cr.Row + cr.RowCount; i++)
  4.             {
  5.                 for (int j = cr.Column; j < cr.Column + cr.ColumnCount; j++)
  6.                 {
  7.                     this.fpSpread1.ActiveSheet.Cells[i, j].Border = new ComplexBorder(nomalSide);
  8.                 }
  9.             }
复制代码

Thick Border (该示例只是设置了最上边和最下边的Border,不包括最左边和最右边,也不包括4个角的Cell)
  1.             CellRange cr = this.fpSpread1.ActiveSheet.GetSelection(0);
  2.             ComplexBorderSide noneSide = new ComplexBorderSide(Color.Empty,0);
  3.             ComplexBorderSide thickSide = new ComplexBorderSide(Color.Red, 3);
  4.             for (int i = cr.Column + 1; i < cr.Column + cr.ColumnCount - 1; i++)
  5.             {
  6.                 ComplexBorder orignalBorder = (this.fpSpread1.ActiveSheet.Cells[cr.Row, i].Border as ComplexBorder);
  7.                 if (orignalBorder == null)
  8.                 {
  9.                     // 设置CellRange最上边Cell的Border
  10.                     this.fpSpread1.ActiveSheet.Cells[cr.Row, i].Border = new ComplexBorder(noneSide, thickSide, noneSide, noneSide);
  11.                     // 设置CellRange最下边Cell的Border
  12.                     this.fpSpread1.ActiveSheet.Cells[cr.Row + cr.RowCount - 1, i].Border = new ComplexBorder(noneSide, noneSide, noneSide, thickSide);
  13.                 }
  14.                 else
  15.                 {
  16.                     // 设置CellRange最上边Cell的Border
  17.                     this.fpSpread1.ActiveSheet.Cells[cr.Row, i].Border = new ComplexBorder(orignalBorder.Left, thickSide, orignalBorder.Right, orignalBorder.Bottom);
  18.                     // 设置CellRange最下边Cell的Border
  19.                     this.fpSpread1.ActiveSheet.Cells[cr.Row + cr.RowCount - 1, i].Border = new ComplexBorder(orignalBorder.Left, orignalBorder.Top, orignalBorder.Right, thickSide);
  20.                 }
  21.             }
复制代码
回复 使用道具 举报
sheep
论坛元老   /  发表于:2011-4-15 10:08:00
38#
原来是这么回事,这个complexborder很强大啊,我对这个complexborder也不大了解,太感谢了!
回复 使用道具 举报
1234
您需要登录后才可以回帖 登录 | 立即注册
返回顶部