TreeNode の .Collapse() メソッドまたは TreeView の .CollapseAll() メソッドの呼び出し以外に、TreeView が折りたたまれる原因は何ですか?
私が開発しているアプリケーションでは、TreeView は正しく動作しません。TreeView は 2 つのレベルのみを維持します。親ノードの子を選択すると、他のすべてのノードがすぐに折りたたまれます。ただし、私のコードには .Collapse() または .CollapseAll() メソッド呼び出しはまったくありません!
TreeView のすべてのプロパティは、true に設定されている .LabelEdit プロパティを除き、デフォルトのままです。TreeView には、単純な検証/メッセージ ボックス ルーチン用の AfterLabelEdit イベント内に関連付けられたコードがいくつかあります。
私が試してみました:
TreeView の BeforeCollapse イベントをフックし、e.CancelAction フラグを立てます。
TreeView の AfterSelect イベント内のすべてのノードを手動で展開します。
(これは実験としては問題なく動作しますが、ノードの折りたたみを完全に禁止するつもりはありません!)
コード内の多くのポイントで、ノードごとに TreeView を反復処理してプロパティを確認しています。ただし、ノードの追加または削除は行われません。ユーザーが選択を行ったときに変更される唯一の TreeNode プロパティは、.ImageIndex と .SelectedImageIndex です。
上記の 2 つの解決策以外に、このエラーの原因についての手がかりがありません。解決策が実現できない場合でも、崩壊を閉じ込めるための適切な方法についてアイデアを持っている人はいますか? (BeforeCollapse イベント内にブレークポイントを設定しようとしましたが、ユーザーがマウスまたはキーボードを介してノードを明示的に折りたたまない限り、トリガーされません。)
アップデート:
この問題は、TreeNode の .SelectedImageIndex プロパティを変更したことが原因です。このプロパティを変更すると、他のすべてのノードが折りたたまれます。
.SelectedImageIndex プロパティ変更コードを .BeginUpdate() および .EndUpdate() 呼び出しで囲みましたが、役に立ちませんでした。
どうすればこれを回避できますか?