ASP.NET 4.0 Webアプリケーションを開発していて、TreeViewコントロールを使用しています。なぜこれが起こっているのか本当に理解できないという問題が1つあります。ツリーアイテムに関連付けられたチェックボックスがあります。
チェックボックスがチェックされていない場合、すべてが正常に機能しますが、次の行を実行すると次のようになります。
node.ChildNodes.Clear();
ノードのチェックボックスがオンになっている場合、Clear()の後のnode.Parentはnullです。チェックされていない場合でも、親は正しいです。childnodesコレクションをクリアすると、親参照もクリアされる理由がよくわかりません。私は実際には、この呼び出し内でチェックされたプロパティを使用または変更しません。また、私の親も私のノードの子ではないことを100%確信しています(チェックしたかどうかで異なるのはなぜですか)。
コードが期待どおりに機能するために使用する必要がある回避策は次のとおりです。
TreeNode[] checkedNodes = new TreeNode[tvResults.CheckedNodes.Count];
tvResults.CheckedNodes.CopyTo(checkedNodes, 0);
foreach (TreeNode checkedNode in checkedNodes) // Uncheck all nodes temporary.
checkedNode.Checked = false;
node.ChildNodes.Clear(); // Now it is ok to clear and parent is "saved".
foreach (TreeNode checkedNode in checkedNodes) // Recheck all checked nodes again.
checkedNode.Checked = true;
この問題について誰かアイデアはありますか?
ありがとう、マティアス
PS!親切にしてください、これは私の最初の質問です...