ノードを名前順にソートします。TreeNodeをソートするのであればTreeView.Sortメソッドを使えばいいのですが、選択しているノードの子ノードだけをソートするのであればどうすればいいのでしょうか?

選択されているノードの子ノードは以下の方法で取得できます。

あとはLINQのOrderByを使って並べ替えます。選択されているノードの子ノードはいったん削除して挿入しなおします。

同じようにすればできそうです。

俺的ライブラリをつくる 同期化されたTreeView編

俺的ライブラリをつくる 同期化されたTreeView編

これに以下を付け加えます。

俺的アウトラインプロセッサ側では

これでソートはできます。ソートに伴って選択されているアイテムが変更されるかもしれないので、フィールド変数 ignoreSelectedNodeChangeを使って制御しています。

また更新日時順(新しい順、古い順)といったSyncTreeViewにはない要素でソートしたい場合もあるかもしれません。

そこで・・・

これでソートもできるようになりました。