ソートのわな

C# .NET で開発していて、グリッドのソートを実装しろと言われていた。そこそこ考えた結果、グリッドの AfterSort イベントでカスタムソートをすることにした。
本当は BeforeSort イベントでソートして、で EventArgs.Cancel を true にすればうまくいかないかなーと考えたのだけど、カスタムソートまでなかったことにされたから諦めたのだった。

そしたら、ソート後にカーソルが選択していたアイテムから外れるって苦情があった。

原因は、 BeforeSort イベントの後に自動のソートが行われていて、そのときはカーソルがソート結果に従って移動してくれるのに AfterSort のカスタムソートでは移動しないため。よって AfterSort のソート結果が自動ソートの結果と違うとカーソルが外れる、ということだったもよう。
だから自動ソートは止めたかったのに…… BeforeSort で EventArgs.Cancel を true にしたら AfterSort イベントも発生しないから……。