发布MouseUp更改datagrid!

时间:2010-03-05 10:41:38

标签: c# compact-framework datagrid mouseevent

我有.NET CF应用程序,其中包含一个数据网格,我使用主要来源于本文的解决方案绑定到BindingList:http://msdn.microsoft.com/en-us/library/aa480736.aspx

我已将它连接起来,以便在单击列标题时,我获取HitTest信息并检查Type。如果Type是ColumnHeader,那么我在底层BindingList上启动一个Sort(使用类似于上面发布的链接中的示例的代码) - 这反过来又使得DataGrid根据我点击的T的属性自行排序。例如。描述

这绝对没问题!

当我现在点击我的数据网格时出现问题 - 假设我有两行,在执行排序后,没有选择任何行。我单击第1行中的单元格,我有代码选择整行 - 这个操作发生,一切都很好。当我现在单击第2行时,第2行被选中并且一切正常,网格仍然应用了我的排序。如果我现在再次单击第1行,我的排序会反转,但至关重要的是,实际上并没有调用“ApplySort”方法。那么发生了什么?它只发生在我单击第1行时,网格中的两行有效地反转。在选择第2行时,它不会发生。

在调试时,我可以看到mousedown fires(我已经把一个return;语句输入)然后MouseUp触发,它执行HitTest并在单击列标题时调用ApplySort,在这种情况下它没有。我注意到排序的变化发生了* AFTER *控件已经离开了MouseUp事件 - 所以在MouseDown / MouseUp完成之后某些地方似乎正在改变我的网格状态。

任何想法,什么事件/行动可能会搞乱我的网格?我基本上想知道一旦调用了我的ApplySort,我是否可以压制任何东西和其他所有东西。

1 个答案:

答案 0 :(得分:0)

我不希望有很多答案...但我刚刚注意到,只有当要排序的列包含彼此相同的值时,才会出现此行为。

数据不同的列,不会发生此行为。

所以我认为这可能是设计的 - 我应该使实现不那么通用,并对包含不同值的特定id属性进行排序,而不是根据用户点击的内容动态对列进行排序 - 因为这可能我已经描述了副作用。