找回密码
 立即注册

QQ登录

只需一步,快速开始

jplzj
论坛元老   /  发表于:2012-9-9 21:06:00
11#
还有个问题,如何不让下拉列表显示呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-10 17:29:00
12#
不显示下拉列表,就无法修改单元格的值了啊。
如果不需要显示下拉列表,返回的Editor就可以直接使用TextBox就可以。
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2012-9-10 19:42:00
13#
我使用自定义的其它方法给它赋值
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2012-9-11 19:46:00
14#
老大能不显示吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-11 20:12:00
15#
回复 14楼jplzj的帖子

稍微修改一下自定义的CellType类型:
  1. Public Class MyComboCellType
  2.     Inherits FarPoint.Win.Spread.CellType.GeneralCellType

  3.     Dim editor As FarPoint.Win.FpCombo
  4.     Dim ItemSource As Dictionary(Of String, String)


  5.     Public Sub New(ByVal data As Dictionary(Of String, String))

  6.         ItemSource = data

  7.         Dim l_Items As New List(Of String)
  8.         Dim l_Itemdata As New List(Of String)

  9.         For Each key As String In data.Keys
  10.             l_Items.Add(data(key))
  11.             l_Itemdata.Add(key)
  12.         Next

  13.         editor = New FarPoint.Win.FpCombo()
  14.         editor.Editable = True
  15.         editor.BorderStyle = BorderStyle.None
  16.         editor.BackgroundColor = Color.White
  17.         editor.List.AddRange(l_Items.ToArray())
  18.         editor.ItemData.AddRange(l_Itemdata.ToArray())

  19.     End Sub

  20.     Public Overrides Sub PaintCell(ByVal g As System.Drawing.Graphics, ByVal r As System.Drawing.Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal value As Object, ByVal isSelected As Boolean, ByVal isLocked As Boolean, ByVal zoomFactor As Single)
  21.         If Not value Is Nothing Then
  22.             value = ItemSource(value.ToString())
  23.         End If
  24.         MyBase.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor)
  25.     End Sub

  26.     Public Overrides Function GetEditorControl(ByVal parent As System.Windows.Forms.Control, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal zoomFactor As Single) As System.Windows.Forms.Control
  27.         Return editor
  28.     End Function

  29.     Public Overrides Function GetEditorValue() As Object

  30.         If editor.SelectedIndex = -1 Then
  31.             Return Nothing
  32.         End If

  33.         For Each key As String In ItemSource.Keys
  34.             If ItemSource(key).Equals(editor.SelectedItem.ToString()) Then
  35.                 Return key
  36.             End If
  37.         Next

  38.         Return Nothing
  39.     End Function

  40.     Public Overrides Sub SetEditorValue(ByVal value As Object)

  41.         Dim index As Integer = -1

  42.         If value Is Nothing Then
  43.             editor.Text = ""
  44.             editor.SelectedIndex = index
  45.             Return
  46.         End If

  47.         For Each key As String In ItemSource.Keys
  48.             index = index + 1
  49.             If key.Equals(value.ToString()) Then
  50.                 editor.SelectedIndex = index
  51.                 Return
  52.             End If
  53.         Next

  54.     End Sub
  55. End Class
复制代码
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2012-9-11 20:53:00
16#
老大没休息呀,我还想着明天才能回复呢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-11 21:01:00
17#
每周二是我们的 【客户日】,除了解决用户问题外,还会集中讨论客户反馈的信息。
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2012-9-11 21:53:00
18#
原来如此呀,辛苦辛苦!
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2013-11-26 20:40:00
19#
还有一个问题,上面这个类如何实现序列化和反序列化,我想对单元格进行复制和粘贴。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-27 09:52:00
20#
回复 19楼jplzj的帖子

自定义单元格类型无法针对您自定义部分进行序列号和反序列化。
需要您这边自主实现,重载 Serialize 和 Deserialize 方法去自定义。

复制和粘帖是在同一个实例中进行的吗?可以把单元格类型设置为全局变量,操作快捷键即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部