TreeViewの.Collapse()メソッドまたは.CollapseAll()メソッドの呼び出し以外に、TreeViewが崩壊する原因は何ですか?WinFormsでTreeViewが突然崩壊するのはなぜですか?
私が開発しているアプリケーションでは、TreeViewは正しく動作しません。 TreeViewは2つのレベルしか保持しません。親ノードの子を選択すると、他のすべてのノードが直ちに折りたたまれます。しかし、私のコードには何も.Collapse()または.CollapseAll()メソッド呼び出しはありません。
TreeViewのすべてのプロパティは、Trueに設定されている.LabelEditプロパティを除き、デフォルトでそのまま残ります。 TreeViewには、単純な検証/ MessageBoxルーチンのAfterLabelEditイベント内に関連付けられたコードがあります。
私が試してみました:
- フッキングBeforeCollapseの TreeViewコントロールのイベントと e.CancelActionフラグを上げます。
ツリービューのAfterSelect イベント内のすべてのノード を手動で拡張します。 (これは 実験として正常に動作しますが、私は
完全 不許可ノード崩壊するつもりはない!)のコード内の多くのポイントで
、私はに、ノードが、ツリービューを介してノードを反復処理していますプロパティを確認します。ただし、ノードの追加や削除は行われません。ユーザーが選択するときに変更される唯一のTreeNodeプロパティは、.ImageIndexと.SelectedImageIndexです。
上記の2つの解決策を除いて、私はこのエラーを引き起こしている可能性について何の手掛かりも持っていません。ソリューションが実現しない場合でも、誰かが崩壊を捕らえようとする適切な方法について考えているでしょうか? (IはBeforeCollapseイベント内のブレークポイントを設定しようとしているが、ユーザが明示的にマウスやキーボードを介してノードを崩壊しない限り、それがトリガされない。)
UPDATE:
問題がchagingによるものですTreeNode上の.SelectedImageIndexプロパティこのプロパティを変更すると、他のすべてのノードが折りたたまれます。
私は、.BeginUpdate()と.EndUpdate()呼び出しを使用して.SelectedImageIndexプロパティ修正コードを囲むことを試みました。
これをどのように回避できますか?
総合的な回答ありがとうございます!ツリーの再作成を引き起こしていたプロパティを特定でき、初期化のポイントを過ぎて使用することはできませんでした。ツリーはもはやノードの状態を忘れることはありません。 – James
@HansPassantなぜ私の編集をロールバックしたのか分かりますか?ありがとう –