以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 双击列名事件失效 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87623) |
-- 作者:q189802114 -- 发布时间:2016/7/15 9:49:00 -- 双击列名事件失效 我在一个主窗口的Table添加了双击列名进行排序的事件,测试是有用的。 可是当我在另外一个主窗口的Table再次设置这个事件时,就报错了。 系统提示:“不存在名称为tbDanWei的Table”! 贴上部分出错的代码: \'生成搜索字段 Dim cmb As WinForm.ComboBox cmb = e.Form.Controls("cbx_Field") For Each cl As Col In Tables("往来单位管理_tbDanWei").Cols cmb.Items.Add(cl.Name) Next \'双击列名排序 AddHandler Tables("往来单位管理_tbDanWei").grid.MouseEnterCell, AddressOf MouseEnterCellHandler AddHandler Tables("往来单位管理_tbDanWei").grid.MouseLeaveCell, AddressOf MouseLeaveCellHandler AddHandler Tables("往来单位管理_tbDanWei").grid.DoubleClick, AddressOf DoubleClickHandler 生成搜索字段的代码都可以正常运行。。可是双击列名就会报“不存在名称为tbDanWei的Table”这个错误,这是什么问题呀!表名没有错呀。 下面是没有报错,可以正常进行双击列名事件的代码: \'固定合计列 With Tables("合同管理_Table1") .Cols("合同金额").GrandTotal = True \'指定要合计的列 .GrandTotal = True \'显示合计模式 End With With Tables("合同管理_Table2") .Cols("实收/实付金额").GrandTotal = True .Cols("发票金额").GrandTotal = True \'指定要合计的列 .GrandTotal = True \'显示合计模式 End With With Tables("合同管理_Table3") .Cols("计划金额").GrandTotal = True \'指定要合计的列 .GrandTotal = True \'显示合计模式 End With DataTables("合同管理_Table1").DataCols("合同金额").SetFormat("N") Tables("合同管理_Table1").Grid.Name = Tables("合同管理_Table1").Name Tables("合同管理_Table2").Grid.Name = Tables("合同管理_Table2").Name Tables("合同管理_Table3").Grid.Name = Tables("合同管理_Table3").Name AddHandler Tables("合同管理_Table1").grid.Paint, AddressOf Grid_Paint AddHandler Tables("合同管理_Table2").grid.Paint, AddressOf Grid_Paint AddHandler Tables("合同管理_Table3").grid.Paint, AddressOf Grid_Paint \'双击列名排序 AddHandler Tables("合同管理_Table1").grid.MouseEnterCell, AddressOf MouseEnterCellHandler AddHandler Tables("合同管理_Table1").grid.MouseLeaveCell, AddressOf MouseLeaveCellHandler AddHandler Tables("合同管理_Table1").grid.DoubleClick, AddressOf DoubleClickHandler |
-- 作者:q189802114 -- 发布时间:2016/7/15 9:52:00 -- 贴上双击列名的事件代码: \'双击列头相关 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 Then Dim srt As String = Tables(sender.Name).Sort Dim name As String = Tables(sender.Name).Cols(headcol-1).Name If srt = Nothing Tables(sender.Name).Sort = name & " ASC " Else If srt.Contains(Tables(sender.Name).Cols(headcol-1).Name) If srt.Contains("DESC") Then Tables(sender.Name).Sort = name & " ASC " Else Tables(sender.Name).Sort = name & " DESC " End If Else Tables(sender.Name).Sort = name & " ASC " End If End If End Sub |
-- 作者:q189802114 -- 发布时间:2016/7/15 9:53:00 -- 实在弄不懂这是什么问题。明明在合同管理这个主窗口都可以实现双击列名排序的功能。 换到另外一个主窗口就出问题了。
|
-- 作者:q189802114 -- 发布时间:2016/7/15 10:34:00 -- 求老师解惑。 |
-- 作者:q189802114 -- 发布时间:2016/7/15 11:09:00 -- 有人吗。 |
-- 作者:Hyphen -- 发布时间:2016/7/15 12:21:00 -- 上例子测试 |
-- 作者:q189802114 -- 发布时间:2016/7/15 13:53:00 -- 啥子例子。你说做一个项目测试吗。。 我咋觉得这个是Foxtable的问题!两处地方的代码完全一样呀。
|
-- 作者:Hyphen -- 发布时间:2016/7/15 14:24:00 -- 测试没有问题。所以还是上例子说明 |