以文本方式查看主题 - 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 -- 附件中:问题重现,双次进入可展开。退出进入无反应
[此贴子已经被作者于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的事件重复绑定是会累加的,导致事件多次重复触发而出错 |