Foxtable(狐表)用户栏目专家坐堂 → [求助]统一设置所有窗口表样式的问题


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

主题:[求助]统一设置所有窗口表样式的问题

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


加好友 发短信
等级:小狐 帖子:329 积分:2534 威望:0 精华:0 注册:2020/3/2 23:15:00
[求助]统一设置所有窗口表样式的问题  发帖心情 Post By: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

这样带来的问题是软件直接卡死。请教应该怎么办

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111419 积分:567171 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/6 9:59:00 [只看该作者]

这种用法不能放到drawcell。试试放到AfterLoadTableSetting事件

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


加好友 发短信
等级:小狐 帖子:329 积分:2534 威望:0 精华:0 注册:2020/3/2 23:15:00
  发帖心情 Post By:2022/5/6 10:02:00 [只看该作者]

这个事件在哪

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111419 积分:567171 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/6 10:07:00 [只看该作者]

只有表事件才有。或者放到项目事件的currenttablechanged

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


加好友 发短信
等级:小狐 帖子:329 积分:2534 威望:0 精华:0 注册:2020/3/2 23:15:00
  发帖心情 Post By:2022/5/6 10:11:00 [只看该作者]

可以了,蓝老师,那在currenttablechanged里面怎么实现当前选中的行背景变色

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111419 积分:567171 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/6 10:16:00 [只看该作者]

当前选中只能到drawcell事件处理。不同功能要到不同的事件处理。如果一个事件就能够解决所有的问题,又何必搞那么多事件

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


加好友 发短信
等级:小狐 帖子:329 积分:2534 威望:0 精华:0 注册:2020/3/2 23:15:00
  发帖心情 Post By: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、如果要修改样式只要修改自定义函数就能全局生效。

 回到顶部