【发布时间】:2020-03-15 20:39:12
【问题描述】:
我在 C# 中的 WindowForm 构建中有一个 TreeView。在那个 treeview 中,文件正在成功加载。我还实现了复选框,显示在每个树节点的前面。
现在,我希望在 treeview 中加载所有目录之后,默认选中所有 复选框。
我尝试了以下代码,但没有运气。它只检查根节点,而不是所有子节点。
第一种方法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;
}
}
以下是我的树视图的快照 -
另一个疑问是,如何处理在树视图加载事件? c# 中是否有任何特定的东西来检测树视图加载事件?
我是 C# 的初学者,如果可能,请帮助我。谢谢!
【问题讨论】:
-
更新函数“setAllCheckedTrue”以处理具有子节点的节点。在“treeNode.Checked = true;”行之后,添加当前行: if (treeNode.Nodes.Count > 0) ){setAllCheckedTrue(treeNode)}.
标签: c# winforms checkbox treeview treenode