我有.NET CF应用程序,与包含我已经使用主要来自本文的溶液结合到的BindingList一个数据网格的一种形式:http://msdn.microsoft.com/en-us/library/aa480736.aspx发布DataGrid的MouseUp变更!
我迷上它,以便当一个列标题被点击,我得到HitTest信息并检查Type。如果Type是ColumnHeader,那么我在底层BindingList(使用类似于上面链接中的示例的代码)上启动一个排序 - 这反过来又使DataGrid根据我点击的T属性进行排序。例如。说明
这工作绝对好!
当我现在点击我的数据网格时,问题出现了 - 假设我有两行,执行排序后,没有选中行。我点击第1行中的一个单元格,并且我有选择整行的代码 - 此操作发生并且一切正常。当我现在点击第2行时,第2行被选中,一切正常,网格仍然适用我的排序。如果我现在再次单击第1行,我的排序就会颠倒过来,但重要的是,“ApplySort”方法实际上并未被调用。那么发生了什么?它只发生在我点击第1行时,网格中的两行有效反转。在选择第2行时,它不会发生。在调试时,我可以看到mousedown触发(我已经放入了一个return;语句),然后MouseUp触发,如果已经点击了columnheader,它会执行HitTest并调用ApplySort,在这种情况下它不会。我注意到排序发生了变化* AFTER *控制已经离开了MouseUp事件 - 因此在MouseDown/MouseUp完成后,某处某处似乎正在改变我的网格状态。
任何想法事件/动作可能会与我的网格搞乱?我基本上想知道,一旦我调用了我的ApplySort,是否可以压制任何东西。