【发布时间】:2015-12-17 09:52:50
【问题描述】:
我在我的 Windows 应用程序和带有复选框的树视图中有树视图,我有一些“父节点”和一些“子节点”,我想一次检查和取消选中父节点和子节点点击“全选”和“取消全选”按钮...我应该怎么做?
现在,如果我点击特定的父节点以及子文件夹,它应该显示在列表视图中!
在此处输入代码
namespace howto_treeview_select_subtree
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
trvMeals.CheckBoxes = true;
foreach (TreeNode node in trvMeals.Nodes)
{
ExpandNode(node);
}
trvMeals.SelectedNode = trvMeals.Nodes[0];
foreach (TreeNode node in trvMeals.Nodes)
{
node.Checked = true;
}
}
private void ExpandNode(TreeNode node)
{
node.EnsureVisible();
foreach (TreeNode child in node.Nodes)
{
ExpandNode(child);
}
}
private void trvMeals_AfterCheck(object sender, TreeViewEventArgs e)
{
TreeNode node = e.Node;
bool is_checked = node.Checked;
foreach (TreeNode child in node.Nodes)
{
child.Checked = is_checked;
}
trvMeals.SelectedNode = node;
}
private void trvMeals_AfterSelect(object sender, TreeViewEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
foreach (TreeNode node in trvMeals.Nodes)
{
node.Checked = true;
CheckChildren(node, true);
}
//foreach (TreeNode node in trvMeals.Nodes)
//{
// node.Checked = true;
//}
}
private void button2_Click(object sender, EventArgs e)
{
foreach (TreeNode node in trvMeals.Nodes)
{
node.Checked = false;
}
}
private void button3_Click(object sender, EventArgs e)
{
listView1.Text = (listView1 + "\n") + trvMeals.SelectedNode.Text;
//foreach (TreeNode node in trvMeals.Nodes)
//{
// RcTxt.Text = RcTxt.Text + trvMeals.SelectedNode.Text;
//}
}
private void CheckChildren(TreeNode rootNode, bool isChecked)
{
foreach (TreeNode node in rootNode.Nodes)
{
CheckChildren(node, isChecked);
node.Checked = isChecked;
}
}
private void button4_Click(object sender, EventArgs e)
{
listView1.Clear();
}
}
}
【问题讨论】:
-
当您选中/取消选中父节点时,默认情况下会选中/取消选中子节点。使用 Button 时,您需要做的就是选中/取消选中代码,无论是根节点还是选定节点。你想在 ListView 中究竟发生什么?一个节点,子节点,应该怎么看。目前还不清楚!
-
@TaW ... 实际上,如何以编程方式选择所有父节点和子节点?在检查父节点中的任何节点后,它应该将其显示到 listView
-
使用复选框,如果我在父复选框上选择它应该选择父节点以及子节点,并且那些选定的节点应该导出到列表视图中......
-
只有一个节点可以被选中。例如:`treeView1.SelectedNode = treeView1.Nodes[1];
. To check:treeView1.Nodes[1].Checked = true;` 你没有告诉列表视图应该包含什么。请(更)更明确!!! -
@TaW... Listview 不包含任何内容,我们只需将其导出到 ListView 即可!如果我要选择应该显示在列表视图上的选定节点!