Foxtable(狐表)用户栏目专家坐堂 → 双击列标题事件的奇怪问题!!


  共有1804人关注过本帖树形打印复制链接

主题:双击列标题事件的奇怪问题!!

帅哥哟,离线,有人找我吗?
lzgt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
双击列标题事件的奇怪问题!!  发帖心情 Post By:2019/7/13 10:45:00 [只看该作者]

请教坛中前辈&高手&老师!!! 先行谢过!!



参照 点击浏览该文件:双击列标题事件.table的代码写了双击多层表头列标题隐藏/展开子标题的代码。


1、首次进入窗体中的表,双击动作运行正常,关闭窗体(未曾退出程序)再进入双击无反应了。再次退出进入,又正常,退出再进入,无反应,如此反复。

 

2、引入 MessageBox.show() 测试,  多次进入都是正确的。拿掉测试,还是如前述1的情况,



代码如下:

Public headCol As Integer = -1


Public Sub MouseLeaveCellHandler(sender As object, e As C1.Win.C1FlexGrid.RowColEventArgs )

headcol = -1

End Sub


Public Sub MouseEnterCellHandler(sender As object, e As C1.Win.C1FlexGrid.RowColEventArgs )

If e.Row = 0  Then

    headcol = e.Col

End If

End Sub


Public Sub DoubleClickHandler(sender As object, e As System.EventArgs)

If headcol <> -1  AndAlso Tables(sender.name).Cols(headcol-1).Caption.Contains("_") Then

    

    Dim fldcap As String = Tables(sender.name).Cols(headcol-1).Caption

    Dim i As Integer = fldcap.IndexOf("_")

    Dim fldcapqz As String = fldcap.SubString(0,i+1)

    

    For Each nowc As Col In Tables(sender.name).Cols

        'MessageBox.show(fldcapqz)

        If nowc.Caption.StartsWith(fldcapqz) Then

            '含"+"&"*"号的标题项为固有显示&隐藏项

            If nowc.Caption.EndsWith("+") OrElse nowc.Caption.EndsWith("*") Then

                Continue For

            Else

                nowc.Visible = not nowc.Visible

            End If

        End If

    Next

End If

End Sub



[此贴子已经被作者于2019/7/13 10:45:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/13 10:57:00 [只看该作者]

Public Sub DoubleClickHandler(sender As object, e As System.EventArgs)

msgbox(1) '再进入双击这里能不能弹出?

If headcol <> -1  AndAlso Tables(sender.name).Cols(headcol-1).Caption.Contains("_") Then

……


 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2019/7/13 11:05:00 [只看该作者]

只要放入MessageBox.show()  测试语句(我测过放在多个位置) 都能正常弹出! 关闭弹出提示,双击多层列标题展开隐藏子标题的功能也正常了。

2、引入 MessageBox.show() 测试,  多次进入都是正确的。拿掉测试,还是如前述1的情况,

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/13 11:24:00 [只看该作者]

做个例子发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2019/7/13 12:43:00 [只看该作者]

附件中:问题重现,双次进入可展开。退出进入无反应

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2019/7/13 13:10:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/13 13:58:00 [只看该作者]

窗口AfterClose事件

Tables(e.Form.TableName).Grid.Name = Tables(e.Form.TableName).Name
removeHandler Tables(e.Form.TableName).grid.MouseEnterCell, AddressOf MouseEnterCellHandler
removeHandler Tables(e.Form.TableName).grid.MouseLeaveCell, AddressOf MouseLeaveCellHandler
removeHandler Tables(e.Form.TableName).grid.DoubleClick, AddressOf DoubleClickHandler

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2019/7/13 14:46:00 [只看该作者]

谢谢!已解决。 但是何原因呢?没想明白

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/13 15:00:00 [只看该作者]

removeHandler用于移除绑定的事件。不然每次打开窗口都重复绑定一次事件,.net的事件重复绑定是会累加的,导致事件多次重复触发而出错

 回到顶部