【问题标题】:Post MouseUp alteration of datagrid!发布数据网格的 MouseUp 更改!
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多