以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  双击列标题事件的奇怪问题!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137706)

--  作者:lzgt
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/7/13 11:05:00
--  
只要放入MessageBox.show()  测试语句(我测过放在多个位置) 都能正常弹出! 关闭弹出提示,双击多层列标题展开隐藏子标题的功能也正常了。

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

--  作者:有点蓝
--  发布时间:2019/7/13 11:24:00
--  
做个例子发上来看看
--  作者:lzgt
--  发布时间:2019/7/13 12:43:00
--  

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

 

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

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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/7/13 14:46:00
--  
谢谢!已解决。 但是何原因呢?没想明白
--  作者:有点蓝
--  发布时间:2019/7/13 15:00:00
--  
removeHandler用于移除绑定的事件。不然每次打开窗口都重复绑定一次事件,.net的事件重复绑定是会累加的,导致事件多次重复触发而出错