Vista の C# 2008 (.Net 3.5) には、単純な TreeView (複数の親とそれぞれ 1 レベルの子) があります。
AFterCheck ルーチンで、マウスでクリックしたときの親の状態に基づいて、子ノードの Checked プロパティを設定/設定解除しようとしています。
MessageBoxes を使用すると、イベント ルーチンが入力され、子ノードがループされていることがわかります。親がチェックされている場合は、コード
childnode.Checked = parentNode.Checked;
MessageBox.Show(childnode.Checked + " " + parentNode.Checked); 経由で表示されます。コードの実行後、「False True」が表示され、TreeView で子チェックボックスがオフのままになります。
Web で見つかったいくつかのバリエーションを試してみましたが、同じ結果が得られました。まったく同じ結果で、代わりの TreeView (MWControls) を試してみました。
興味深いことに、設定した他のすべての子ノード プロパティ (BackColor など) が有効になります。
再帰は問題ではなく、デバッグ メッセージ ボックスによって検証されているようです。
何か案は?
よろしく、ジム
これは winform アプリケーションです。
すべての MessageBox 呼び出しを変更せずに削除しました。親がチェックされているのに応じて、子ノードはまだチェックされていません。
私は自分の AfterCheck ルーチンを削除し、同じ結果でそのまま参照されたものを使用しました。親がチェックされるのに応じて、子ノードがチェックされません。
私はこれで何時間も遊んでいましたが、運が悪かったです。
奇妙なことは、変更した他のプロパティ (BackColor など) が有効になることです。
これが Win7 の問題であるというあいまいな参照が Web で見られましたが、再び見つけることができません。とにかく、Vista、.Net 3.5、および C# Express 2008 を使用しています。
入力していただきありがとうございます。
よろしく、ジム