0

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 を使用しています。

入力していただきありがとうございます。

よろしく、ジム

4

1 に答える 1

1

この例は、必要なことを行います。子の Checked プロパティを設定するとイベントが再度伝播Unknownされ、リンク先のコードのようにアクションをチェックしていないため、コードが機能していない可能性があります。

于 2011-05-24T03:22:06.587 に答える