在 C# 中,如何在加载树视图后立即将所有树节点设置为真
In C#, how to set all tree nodes checked true just after treeview loaded
我在 C# 中的 WindowForm
构建中有一个 TreeView
。在 treeview 中,文件正在成功加载。我还实现了复选框,显示在每个树节点的前面。
现在,在 treeviewtreeview[中加载所有目录后,我希望所有 checkboxes 默认 checked true =33=]。
我尝试了以下代码但没有运气。它只检查根节点,而不是所有子节点。
第一种方法 btnDirectoryPath_Click(object sender, EventArgs e)
用于按钮单击,它选择正在加载的目录的路径。从这里,我打电话给 setAllCheckedTrue(TreeView treeView1)
private void btnDirectoryPath_Click(object sender, EventArgs e)
{
folderBrowserDialog1.SelectedPath = txtDirectoryPath.Text;
DialogResult drResult = folderBrowserDialog1.ShowDialog();
if (drResult == System.Windows.Forms.DialogResult.OK)
{
txtDirectoryPath.Text = folderBrowserDialog1.SelectedPath;
// Setting Inital Value of Progress Bar
progressBar1.Value = 0;
// Clear All Nodes if Already Exists
treeView1.Nodes.Clear();
toolTip1.ShowAlways = true;
if (txtDirectoryPath.Text != "" && Directory.Exists(txtDirectoryPath.Text))
{
//Loading all directories and sub directories and files
LoadDirectory(txtDirectoryPath.Text);
//setting all checkboxes true by default on loading.
setAllCheckedTrue(treeView1);
}
else
MessageBox.Show("Select Directory!!");
}
}
private void setAllCheckedTrue(TreeView treeView1)
{
foreach(TreeNode treeNode in treeView1.Nodes)
{
treeNode.Checked = true;
}
}
以下是我的树视图的快照 -
另一个疑惑是,如何处理on treeview load event? c# 中是否有任何特定的东西来检测树视图加载事件?
我是C#的初学者,请帮助我。谢谢!
您还需要一个递归函数来检查所有子节点。 TreeView 不会自动执行此操作。
当您取消选择子节点时,您还必须考虑如何处理父节点的更新。
尝试像这样设置子节点:
private void SetAllCheckedTrue(TreeView treeView1)
{
foreach(TreeNode treeNode in treeView1.Nodes)
{
SetTreeNodeCheckbox(treeNode , true);
}
}
private void SetTreeNodeCheckbox(TreeNode treeNode , bool value)
{
treeNode.Checked = value;
foreach(var subNode in currentNode)
{
SetTreeNodeCheckbox(subNode, value);
}
}
首先替换下面的代码
setAllCheckedTrue(treeView1);
按照以下说明
foreach(TreeNode node in treeView1.Nodes)
{
setAllCheckedTrue (node);
}
这将更改发送到函数 "setAllCheckedTrue" 的参数类型,它将成为节点而不是树视图,并使用以下函数更新 setAllCheckedTrue 函数
private void setAllCheckedTrue(TreeNode node)
{
node.Checked = true;
foreach(TreeNode childnode in node.Nodes)
{
setAllCheckedTrue (childnode);
}
}
亲切
我在 C# 中的 WindowForm
构建中有一个 TreeView
。在 treeview 中,文件正在成功加载。我还实现了复选框,显示在每个树节点的前面。
现在,在 treeviewtreeview[中加载所有目录后,我希望所有 checkboxes 默认 checked true =33=]。
我尝试了以下代码但没有运气。它只检查根节点,而不是所有子节点。
第一种方法 btnDirectoryPath_Click(object sender, EventArgs e)
用于按钮单击,它选择正在加载的目录的路径。从这里,我打电话给 setAllCheckedTrue(TreeView treeView1)
private void btnDirectoryPath_Click(object sender, EventArgs e)
{
folderBrowserDialog1.SelectedPath = txtDirectoryPath.Text;
DialogResult drResult = folderBrowserDialog1.ShowDialog();
if (drResult == System.Windows.Forms.DialogResult.OK)
{
txtDirectoryPath.Text = folderBrowserDialog1.SelectedPath;
// Setting Inital Value of Progress Bar
progressBar1.Value = 0;
// Clear All Nodes if Already Exists
treeView1.Nodes.Clear();
toolTip1.ShowAlways = true;
if (txtDirectoryPath.Text != "" && Directory.Exists(txtDirectoryPath.Text))
{
//Loading all directories and sub directories and files
LoadDirectory(txtDirectoryPath.Text);
//setting all checkboxes true by default on loading.
setAllCheckedTrue(treeView1);
}
else
MessageBox.Show("Select Directory!!");
}
}
private void setAllCheckedTrue(TreeView treeView1)
{
foreach(TreeNode treeNode in treeView1.Nodes)
{
treeNode.Checked = true;
}
}
以下是我的树视图的快照 -
另一个疑惑是,如何处理on treeview load event? c# 中是否有任何特定的东西来检测树视图加载事件?
我是C#的初学者,请帮助我。谢谢!
您还需要一个递归函数来检查所有子节点。 TreeView 不会自动执行此操作。 当您取消选择子节点时,您还必须考虑如何处理父节点的更新。
尝试像这样设置子节点:
private void SetAllCheckedTrue(TreeView treeView1)
{
foreach(TreeNode treeNode in treeView1.Nodes)
{
SetTreeNodeCheckbox(treeNode , true);
}
}
private void SetTreeNodeCheckbox(TreeNode treeNode , bool value)
{
treeNode.Checked = value;
foreach(var subNode in currentNode)
{
SetTreeNodeCheckbox(subNode, value);
}
}
首先替换下面的代码
setAllCheckedTrue(treeView1);
按照以下说明
foreach(TreeNode node in treeView1.Nodes)
{
setAllCheckedTrue (node);
}
这将更改发送到函数 "setAllCheckedTrue" 的参数类型,它将成为节点而不是树视图,并使用以下函数更新 setAllCheckedTrue 函数
private void setAllCheckedTrue(TreeNode node)
{
node.Checked = true;
foreach(TreeNode childnode in node.Nodes)
{
setAllCheckedTrue (childnode);
}
}
亲切