找回密码
 立即注册

QQ登录

只需一步,快速开始

libo
注册会员   /  发表于:2018-7-20 17:43  /   查看:3028  /  回复:7
本帖最后由 libo 于 2018-7-31 16:25 编辑

设置EditModePermanent =true,
点击两次combobox单元格的dropbownbutton,焦点离开时报错,请问是什么原因?
如图0002.png
逻辑代码如下:
    Private Sub FpSpread1_EditModeOn(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOn
        Dim ct As FarPoint.Win.Spread.CellType.ComboBoxCellType
        With FpSpread1.ActiveSheet
            ct = TryCast(.GetCellType(.ActiveRowIndex, .ActiveColumnIndex), FarPoint.Win.Spread.CellType.ComboBoxCellType)
            ct.ListControl = New ListBox
            AddHandler ct.ListControl.VisibleChanged, AddressOf Spread_CboLst_VisibleChanged
        End With
    End Sub

    Private Sub FpSpread1_EditModeOff(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOff
        Dim ct As FarPoint.Win.Spread.CellType.ComboBoxCellType
        With FpSpread1.ActiveSheet
           ct = TryCast(.GetCellType(.ActiveRowIndex, .ActiveColumnIndex), FarPoint.Win.Spread.CellType.ComboBoxCellType)
            RemoveHandler ct.ListControl.VisibleChanged, AddressOf Spread_CboLst_VisibleChanged
            ct.ListControl = Nothing
        End With
    End Sub


    Private Sub Spread_CboLst_VisibleChanged(sender As Object, e As EventArgs)

    End Sub

    Private Sub FpSpread1_ComboCloseUp(sender As Object, e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles FpSpread1.ComboCloseUp
        FpSpread1.Focus()
    End Sub





0002.png

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-23 17:28:31
沙发
您好,一方面您的版本比较老了,我手头暂时没有这个版本去重现问题。
另外,看您的代码是想重新实现原有的Combo,将Combo变成 ListBox, 建议新建一个Cell Type。
而不是在EditMode里更新。
回复 使用道具 举报
libo
注册会员   /  发表于:2018-7-24 17:33:32
板凳
这个想实现的功能是,展开combobox的时候,设置看到的在最上面显示的项目。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-25 08:59:56
地板
我这边用V11测试,如果项目比较多,出现滚动条,那么会将选中项放在第一个显示。
回复 使用道具 举报
libo
注册会员   /  发表于:2018-7-25 09:07:01
5#
我这边用V11测试,如果项目比较多,出现滚动条,那么会将选中项放在第一个显示。

这个是默认的动作。
我想实现的是把选中项前面的项也展示出来。
您有什么好的建议没有?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-25 11:22:26
6#
With FpSpread1.ActiveSheet
            ct.ListControl = New ListBox

这个地方,你不要new list box 直接修改现有ListControl,相关属性设置展示item 的index。

回复 使用道具 举报
libo
注册会员   /  发表于:2018-7-31 16:29:07
7#
感谢你的帮助。
你能不能用V11试试这个代码,或者用V11做个例子提示下?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-31 17:49:31
8#
对combo做您想要的操作
  1.         private void FpSpread1_EditModeOn(object sender, EventArgs e)
  2.         {
  3.             if(fpSpread1.EditingControl is FarPoint.Win.FpCombo)
  4.             {
  5.                 var combo = fpSpread1.EditingControl as FarPoint.Win.FpCombo;
  6.                
  7.             }
  8.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部