以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]统一设置所有窗口表样式的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176997) |
-- 作者:昱飞哥 -- 发布时间:2022/5/6 9:41:00 -- [求助]统一设置所有窗口表样式的问题 e.Table.Grid.VisualStyle = C1.Win.C1FlexGrid.VisualStyle.Office2007Blue \'返回底层的C1.Win.C1FlexGrid.C1FlexGrid对象并设置其样式 为了实现统一设置所有窗口表样式,我将这行代码写到全局代码drawcell事件中,代码如下: If e.Table.Current.index = e.Row.index Then If e.Table.Name.Contains("_") \'如果当前绘制的表是窗口表 \'\'\'\'\'\'\'\'\'\'\'\'这个方法可以改变所有窗口表的样式\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' \'e.Table.DataTable.AddUserStyle("背景", Color.Lime, Color.White) \'e.Style="背景" \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'也可以这样\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' e.Table.Grid.VisualStyle = C1.Win.C1FlexGrid.VisualStyle.Office2007Blue \'返回底层的C1.Win.C1FlexGrid.C1FlexGrid对象并设置其样式 End If End If 这样带来的问题是软件直接卡死。请教应该怎么办
|
-- 作者:有点蓝 -- 发布时间:2022/5/6 9:59:00 -- 这种用法不能放到drawcell。试试放到AfterLoadTableSetting事件 |
-- 作者:昱飞哥 -- 发布时间:2022/5/6 10:02:00 -- 这个事件在哪 |
-- 作者:有点蓝 -- 发布时间:2022/5/6 10:07:00 -- 只有表事件才有。或者放到项目事件的currenttablechanged |
-- 作者:昱飞哥 -- 发布时间:2022/5/6 10:11:00 -- 可以了,蓝老师,那在currenttablechanged里面怎么实现当前选中的行背景变色 |
-- 作者:有点蓝 -- 发布时间:2022/5/6 10:16:00 -- 当前选中只能到drawcell事件处理。不同功能要到不同的事件处理。如果一个事件就能够解决所有的问题,又何必搞那么多事件 |
-- 作者:昱飞哥 -- 发布时间:2022/5/6 10:36:00 -- 我用比较简单的方式实现了:一键设置所有窗口表的样式和设置窗口表当前行的样式(背景颜色),分享一下: 1、新建一个自定义函数:FormTableSetStyle 自定义函数代码: \'\'\'设置窗口表的样式和选中行的背景样式 Dim tbl As Table = Args(0) If tbl.Name.Contains("_") \'判断该表如果是窗口表 tbl.Grid.VisualStyle = C1.Win.C1FlexGrid.VisualStyle.Office2007Blue \'返回底层的C1.Win.C1FlexGrid.C1FlexGrid对象并设置其样式 tbl.ListMode = True \'整行突出 tbl.SysStyles("CurrentRow").BackColor = Color.Cyan \'设置当前行背景颜色 End If 2、在全局代码CurrentTableChanged事件中进行调用: Functions.Execute("FormTableSetStyle",e.Table) 3、如果要修改样式只要修改自定义函数就能全局生效。 |