私はここに来たばかりで、事実上どこでも私の問題の答えを探しましたが、役に立ちませんでした。ここの誰かが助けてくれることを願っています。
TreeView を使用して、選択したルート フォルダーの下にフォルダー構造を表示する WinForm アプリケーションがあります。ツリービューでチェックボックスが有効になりました。TreeNode のチェックボックスをオンまたはオフにすると、その TreeNode の下に表示されているノードも変更されます。
問題は、ノードをさらに展開すると、新しい可視ノードが正しい状態に更新されないことです。
次の再帰ルーチンを使用して更新を実行しました。
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if (node.Nodes.Count > 0)
{
// If the current node has child nodes, call the
// CheckAllChildNodes method recursively.
CheckAllChildNodes(node, nodeChecked);
}
}
}
このイベント ハンドラーから呼び出されます。
private void FileTreeView_AfterCheck(object sender, TreeViewCancelEventArgs e)
{
// The code only executes if the user caused the checked state to change.
if (e.Action == TreeViewAction.ByMouse)
{
if (e.Node.Nodes.Count > 0)
{
// Calls the CheckAllChildNodes method, passing in the current
// checked value of the TreeNode whose checked state changed.
CheckAllChildNodes(e.Node, e.Node.Checked);
}
}
}
再帰関数は、実行時に見える TreeNode だけを気にしているようです。
何が間違っているのか、それを修正するために何ができるのか、誰かが手がかりを与えることができれば、それは大歓迎です.
前もって感謝します。
よろしくお願いします、
L. フンメル