找回密码
 立即注册

QQ登录

只需一步,快速开始

darkelf
论坛元老   /  发表于:2013-11-1 16:46  /   查看:6055  /  回复:6
现在用Spread For WinForm 7来升级程序。
遇到以下问题,旧Spread里,Noboder这个属性用true,false设置即可。
现在Spread7里该如何实现同样的功能?


  1.     ''' <summary>
  2.     ''' 设置表格范围外没有表格区域的显示/非显示
  3.     ''' </summary>
  4.     ''' <remarks></remarks>
  5.     Private _NoBorder As Boolean = False

  6.     ''' <summary>
  7.     ''' Spread右下角,表格范围外没有表格区域的显示/非显示
  8.     ''' True:非表示、False:表示
  9.     ''' </summary>
  10.     ''' <value></value>
  11.     ''' <returns></returns>
  12.     ''' <remarks></remarks>
  13.     Public Property NoBorder() As Boolean

  14.         Get
  15.             If MyBase.ActiveSheet IsNot Nothing Then
  16.                 Return _NoBorder
  17.             Else
  18.                 Return Nothing
  19.             End If

  20.         End Get
  21.         Set(value As Boolean)
  22.             If MyBase.ActiveSheet IsNot Nothing Then
  23.                 _NoBorder = value
  24.                 Dim g As Graphics = MyBase.CreateGraphics()
  25.                 Dim eb As EmptyBorder = New EmptyBorder

  26.                 If value = False Then
  27.                     ' 问题1,范围外的显示描画设置范围如何设置,这里偷懒用最大行列来代替
  28.                     eb.Paint(g, 0, 0, MaxCols, MaxRows)
  29.                    ' 问题2,如何将描画结果反映到当前spreadSheet中
  30.                 End If
  31.             End If
  32.         End Set
  33.     End Property
复制代码


问题1,范围外的显示描画设置范围如何设置?
问题2,如何将描画结果反映到当前spreadSheet中?

以上两个问题请指教。

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-1 18:44:00
沙发
回复 1楼darkelf的帖子

darkelf 你好,
Spread Winforms 中没有 NoBorder 属性,不过可以通过以下方法设置单元格的边框,

  1. FarPoint.Win.ComplexBorderSide bottomborder = new FarPoint.Win.ComplexBorderSide(true, Color.Black, 3, System.Drawing.Drawing2D.DashStyle.Solid, null, new Single[] {0.1f, 0.2f, 0.3f, 0.6f, 0.7f, 0.9f});
  2. fpSpread1.Sheets[0].Cells[3, 7].Border = new FarPoint.Win.ComplexBorder(null, null, null, bottomborder);

复制代码

这个方法也同样适用于 行、列。
请你尝试,如果没有解决问题,请及时通知我。
回复 使用道具 举报
darkelf
论坛元老   /  发表于:2013-11-5 08:24:00
板凳
了解了。也就是说手动画出最大单元格的边界线,而不是用EmptyBorder属性。

感谢回答。
回复 使用道具 举报
darkelf
论坛元老   /  发表于:2013-11-5 09:53:00
地板
  1. Dim attr As Single() = New Single() {0.1F, 0.2F, 0.3F, 0.6F, 0.7F, 0.9F}
  2.                     Dim bottomborder As FarPoint.Win.ComplexBorderSide = New FarPoint.Win.ComplexBorderSide(True, Color.Black, 3, Drawing2D.DashStyle.Solid, Nothing, attr)
  3.                     MyBase.ActiveSheet.Cells(0, MaxCols - 1, MaxRows - 1, MaxCols - 1).Border = New FarPoint.Win.ComplexBorder(Nothing, Nothing, bottomborder, Nothing)
  4.                     MyBase.ActiveSheet.Cells(MaxRows - 1, 0, MaxRows - 1, MaxCols - 1).Border = New FarPoint.Win.ComplexBorder(Nothing, Nothing, Nothing, bottomborder)
  5.                     MyBase.ActiveSheet.Cells(MaxRows - 1, MaxCols - 1).Border = New FarPoint.Win.ComplexBorder(Nothing, Nothing, bottomborder, bottomborder)
复制代码

最后用这样的方法实现了单元格区域的Noborder属性。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-5 11:10:00
5#
回复 4楼darkelf的帖子

当然,你如果指的是网格线(控件加载时的灰色网格)的话。可以通过以下设置:

  1. this.fpSpread1.Sheets[0].HorizontalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);
  2.             this.fpSpread1.Sheets[0].VerticalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);
复制代码
回复 使用道具 举报
darkelf
论坛元老   /  发表于:2013-11-5 12:16:00
6#
不是单元格的网格线。只是单元格和sheet之间的区分线。

目前大概算是解决了,具体结果要等新旧程序执行结果测试再说了。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-5 14:04:00
7#
回复 6楼darkelf的帖子

好的,期待你的反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部