【发布时间】:2010-03-05 10:41:38
【问题描述】:
我有一个 .NET CF 应用程序,其表单包含一个数据网格,我已使用主要源自本文的解决方案将其绑定到 BindingList:http://msdn.microsoft.com/en-us/library/aa480736.aspx
我已将其连接起来,以便在单击列标题时,我会获取 HitTest 信息并检查类型。如果 Type 是 ColumnHeader,那么我在底层 BindingList 上启动一个 Sort(使用类似于上面发布的链接中的示例的代码)——这反过来又使 DataGrid 根据我单击的 T 的属性对自身进行排序。例如。说明
这绝对没问题!
当我现在单击我的数据网格时出现问题 - 假设我有两行,在执行排序后,没有选择任何行。我单击第 1 行中的一个单元格,并且我有选择整行的代码 - 此操作发生并且一切正常。当我现在单击第 2 行时,第 2 行被选中并且一切正常,网格仍然应用了我的排序。如果我现在再次单击第 1 行,我的排序将被反转,但至关重要的是,实际上并未调用“ApplySort”方法。那么发生了什么?只有当我单击第 1 行时才会发生这种情况,网格中的两行实际上是颠倒的。在选择第 2 行时,它不会发生。
在调试时,我可以看到 mousedown 触发(我已将 return; 语句放入其中),然后 MouseUp 触发,如果已单击列标题,则执行 HitTest 并调用 ApplySort,在这种情况下它没有。我注意到排序发生了变化 * AFTER * 控件离开了 MouseUp 事件 - 所以在某个地方,在 MouseDown/MouseUp 完成后似乎有什么东西正在改变我的网格状态。
您知道哪些事件/动作可能会干扰我的网格吗?我基本上想知道,一旦我调用了 ApplySort,我是否可以压制任何东西。
【问题讨论】:
标签: c# compact-framework datagrid mouseevent