找回密码
 立即注册

QQ登录

只需一步,快速开始

q406157290

高级会员

124

主题

531

帖子

1359

积分

高级会员

积分
1359

活字格认证

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

26 个回复

正序浏览
Alice
社区贡献组   /  发表于:2015-9-1 11:36:00
27#
回复 26楼q406157290的帖子

很抱歉,看到新帖子@KNight已经给了回复。
我会在新帖子跟帖处理,如果有什么问题在新帖讨论。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-9-1 08:29:00
26#
回复 25楼Alice的帖子

新帖子你只是把状态改了为什么不处理下呢
着急等待回复 谢谢 很着急
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-31 18:04:00
25#
回复 24楼q406157290的帖子

不用客气。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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

暂时解决了 谢谢您还记得  但是方法感觉太繁琐
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-31 15:18:00
23#
回复 22楼q406157290的帖子

请问问题的进展如何?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-31 09:18:00
22#
回复 20楼KNight的帖子

谢谢您
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-27 16:41:00
21#
回复 20楼KNight的帖子

谢谢反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-8-26 09:35:00
20#
回复 19楼q406157290的帖子

:-| 控件不是万能的......C1FlexGrid主要是在DraggedColumn事件之后又会触发SelectedChanged事件,所以想了如下解决办法:
除了加上之前的那些事件,把DataGrid的ColumnReordering事件和ColumnReordered事件换成C1FlexGrid的DraggingColumn事件和DraggedColumn事件,并仍在DraggingColumn事件里调用SaveSelection方法保存选中状态;然后在DraggedColumn事件里标记当前是拖动状态结束,并在C1FlexGrid的SelectedChanged事件里对该状态进行判断处理,如果为true则调用RetainSelection方法回复选中状态即可;
参考代码如下:
  1. List<int> hashCode = new List<int>();
  2. private bool m_DraggedFlag = false;
  3. public void SaveSelection()
  4. {
  5.         hashCode.Clear();
  6.         foreach (var info in flex.SelectedItems)
  7.         {
  8.                 hashCode.Add(info.GetHashCode());
  9.         }
  10. }
  11. public void RetainSelection()
  12. {
  13.         flex.SelectionChanged -= flex_SelectionChanged;
  14.         if (hashCode.Count > 0)
  15.         {
  16.                 flex.SelectedItems.Clear();
  17.         }
  18.         foreach (var row in flex.Rows)
  19.         {
  20.                 int code = row.DataItem.GetHashCode();
  21.                 if (hashCode.Contains(code))
  22.                 {
  23.                         row.Selected = true;
  24.                 }
  25.         }
  26.         flex.SelectionChanged += flex_SelectionChanged;
  27. }
  28. private void flex_DraggingColumn(object sender, CellRangeEventArgs e)
  29. {
  30.         SaveSelection();
  31. }
  32. private void flex_DraggedColumn(object sender, CellRangeEventArgs e)
  33. {
  34.         m_DraggedFlag = true;
  35. }
  36. private void flex_SelectionChanged(object sender, CellRangeEventArgs e)
  37. {
  38.         if (m_DraggedFlag)
  39.         {
  40.                 RetainSelection();
  41.                 m_DraggedFlag = false;
  42.         }
  43. }
复制代码


其他事件照旧,如果需要的话;

评分

参与人数 1金币 +500 满意度 +5 收起 理由
Alice + 500 + 5 太厲害了

查看全部评分

回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-8-26 08:41:00
19#
回复 17楼KNight的帖子

谁说不是呢  为了一个背景色的设置要控制好多事件   如果能有别的简单的方法 谁还这么麻烦呢   只能说C1并没有想象中的那么好  而且我主要是针对C1FlexGrid 的  
C1FlexGrid  和C1DataGrid 事件也是有区别的
为了实现这么一个背景色的设置  用了这么多的事件   难道就没有别的方法了吗
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部