3

我对这个 DataGridView 控件感到非常沮丧。我真正想做的只是确保网格最初以某种默认方式排序(尽管如果需要,用户可以对它进行不同的排序)。

我尝试分配 DataSource,然后调用 Sort 方法。这有时有效,但有时会导致 InvalidOperationException。调试它似乎表明它不起作用的时间网格没有行或列。行为的间歇性让我猜测正在进行一场比赛,所以当我分配数据源时,网格可能没有同步绑定,而是在后台进行。

所以我查看了 MSDN 文档,发现有一个事件 DataBindingCompleted。这看起来差不多,我附上了一个处理程序。该事件是在网格本身上声明的,因此您会认为这意味着整个控件的所有数据绑定都已完成。然而,每次我实际将新数据绑定到网格时,它都会触发很多次(我不知道,但我猜测每个单元格一次)。

我想我可以忍受这个;开销可能并不大,因为如果被要求对自己进行排序“col1 asc”并且它已经以这种方式排序,那么网格可能足够聪明,根本不会做太多事情。(如果没有,我总是可以自己做那个测试,而不是调用 sort ,除非我真的要改变一些东西。)不过,我真的很想知道是否真的没有办法知道数据绑定何时真正完成。

4

1 回答 1

1

我们通常在处理诸如排序之类的绑定后细节时使用 DataBound 事件,并且多年来一直使用它而没有描述行为。也许这就是您正在寻找的事件?

于 2013-02-15T14:43:24.687 回答