找回密码
 立即注册

QQ登录

只需一步,快速开始

q406157290

高级会员

124

主题

531

帖子

1359

积分

高级会员

积分
1359

活字格认证

q406157290
高级会员   /  发表于:2015-8-19 16:07  /   查看:21942  /  回复:26
wpf 的C1FlexGrid 如何选中一行 行颜色马上变成红色   选中多行 多行颜色都变成红色(整行整行颜色变化)
并且排序 或者filter 时 颜色不会串行  求解 非常感谢

26 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-8-19 18:50:00
沙发
回复 1楼q406157290的帖子

谢谢你的反馈。
C1FlexGrd提供了SelectionBackground属性,可以设置选择的背景色。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-20 08:35:00
板凳
回复 2楼Alice的帖子

谢谢您的回复
当排序或者Fileter筛选后  保证颜色不串  
选择多行后排序 发现颜色就会只剩下一行了
Fileter筛选后 会默认选中第一条数据 (该数据是不想给设置上颜色的) 可是筛选后就处于选择状态了 就被设置上颜色了 该问题如何解决呢
还有只设置selectionBackground 改行中除当前选中单元格没有被设置上颜色  其它单元格设置上了
请麻烦您再回答下这个问题  谢谢非常感谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-20 17:45:00
地板
回复 3楼q406157290的帖子

你好。
通过你的描述来看,需要颜色的自定义。
你可以查看之前你的提问:http://gcdn.gcpowertools.com.cn/ ... d=-1&page=1
有相关代码去设置颜色。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-21 08:24:00
5#
回复 4楼Alice的帖子

能不能好好的阅读下问题呢 这两个虽然都是设置颜色 但是不是一个问题 那种的是根据单元格中的值来决定行背景色的    这个问题是是选择的时候就马上变换行背景色
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-21 12:13:00
6#
回复 5楼q406157290的帖子

你好。
对于你的需求,需要设置单个单元格的颜色(焦点所在的单元格的颜色),没有接口可以设置,只能通过4楼中链接提示的方法是用CellFactory设置。
CellFactory的使用和参考的示例在4楼链接里,也就是你之前的提问里都有。
代码参考:
  1. Public Class MyCellFactory
  2.         Inherits C1.WPF.FlexGrid.CellFactory

  3.         Public Overrides Function CreateCellBorder(grid As C1.WPF.FlexGrid.C1FlexGrid, cellType As C1.WPF.FlexGrid.CellType, rng As C1.WPF.FlexGrid.CellRange) As System.Windows.Controls.Border
  4.             Dim bdr As Border = MyBase.CreateCellBorder(grid, cellType, rng)
  5.             If grid.Selection.Row = rng.Row AndAlso grid.Selection.Column = rng.Column Then
  6.                 bdr.Background = New SolidColorBrush(Colors.Red)
  7.             ElseIf Convert.ToInt32(grid(rng.Row, rng.Column)) = 1 Then
  8.                 bdr.Background = New SolidColorBrush(Colors.Yellow)
  9.             End If
  10.             Return bdr
  11.         End Function

  12.     End Class

  13.         FlxGrdEci.CellFactory = New MyCellFactory()
复制代码


如果我的理解有误,请指出。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-24 09:13:00
7#
回复 6楼Alice的帖子

再描述下我的需求 你好像 还没有真正理解如下图所示





下面是demo 在最后一个Tab里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-8-24 11:48:00
8#
你实现的两个事件是对“点击列头排序”时选中行的处理,并非是对Filter筛选数据的处理;
参考代码如下:
  1. /// <summary>
  2. /// 点击列头排序前记录选中行
  3. /// </summary>
  4. private void flex_SortingColumn(object sender, CellRangeEventArgs e)
  5. {
  6.         seelct.Clear();
  7.         foreach (FlexGridModel info in flex.SelectedItems)
  8.         {
  9.                 seelct.Add(info);
  10.         }
  11. }

  12. /// <summary>
  13. /// 点击列头排序后手动选中排序前选中行
  14. /// </summary>
  15. private void flex_SortedColumn(object sender, CellRangeEventArgs e)
  16. {
  17.         flex.SelectedItems.Clear();
  18.     foreach (FlexGridModel f in seelct)
  19.     {
  20.                 flex.SelectedItems.Add(f);
  21.     }
  22.     e.Cancel = true;
  23. }

  24. /// <summary>
  25. /// 通过Filter筛选数据前记录选中行
  26. /// </summary>
  27. private void Fileter_EditorOpened(object sender, System.EventArgs e)
  28. {
  29.         seelct.Clear();
  30.         foreach (FlexGridModel info in flexGridViewModel.ItemSource)
  31.         {
  32.                 info.IsSelected = false;
  33.         }
  34.         foreach (FlexGridModel info in flex.SelectedItems)
  35.         {
  36.                 info.IsSelected = true;
  37.                 seelct.Add(info);
  38.         }
  39. }

  40. /// <summary>
  41. /// 应用Filter筛选数据后手动选中筛选前选中的行
  42. /// </summary>
  43. private void Fileter_FilterApplied(object sender, System.EventArgs e)
  44. {
  45.         flex.SelectedItems.Clear();
  46.         var bb = flex.Rows.Selected;
  47.         foreach (FlexGridModel f in seelct)
  48.         {
  49.                 flex.SelectedItems.Add(f);
  50.         }
  51. }
复制代码
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-24 12:00:00
9#
回复 8楼KNight的帖子

跟我现在的做法是一样的  但是 总感觉这样麻烦 因为好多事件都需要去控制   可否用CellFactory来控制呢
你现在的这种方法你不用控制SelectionChange事件吗?
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-8-24 12:36:00
10#
回复 9楼q406157290的帖子

不用SelectionChange事件,要这个事件干嘛?
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部