C#winform 如何判断树节点中被选中的是哪些子节点
我在BUTTON1单击事件中希望能对选中的节点进行操作,比如如果节点二是勾选状态,则弹出一个OK2的对话框,如果节点三是勾选状态,则弹出一个OK3的对话框,不勾选则无操作...
我在BUTTON1单击事件中希望能对选中的节点进行操作,比如如果节点二是勾选状态,则弹出一个OK2的对话框,如果节点三是勾选状态,则弹出一个OK3的对话框,不勾选则无操作。我自己的想法是在按钮事件中用SWITCH语句来用,但是不
知道如何使用,知道的朋友能否回答下,谢谢! 展开
知道如何使用,知道的朋友能否回答下,谢谢! 展开
2013-11-27
展开全部
可以遍历所有节点,用节点的Checked属性来判断
展开全部
foreach(TreeNode node in this.treeview1.Nodes)
{
foreach(TreeNode node1 in node.Nodes)
{
if(node1.Checked)
{
MessageBox.Show(node1.Text);
}
}
}
{
foreach(TreeNode node1 in node.Nodes)
{
if(node1.Checked)
{
MessageBox.Show(node1.Text);
}
}
}
追问
假设我有6个根节点每个根节点有8个子节点,如果都用IF来判断,这样内存开销会不会很大?现在还处于查找资料的状态,也许最终还是会像你写的代码一样,一个个状态的去写。但是现在我还是抱着侥幸的心里想去找个更漂亮的代码
追答
其实这个foreach循环已经把你的开销都算进去了。如果你不逐个判断复选框的状态又怎能知道它是否选中呢,对吧。况且这是在循环里边的判断,很快的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用的什么实现的勾选功能啊?checkbox?
追问
用控件Treeview,且勾选的节点不确定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么要用SWITCH呢....
private TreeNode TreeNodeSearch(TreeNode node, string keyword)
{
TreeNode tn = null;
if (node.Text==keyword)
{
return node;
}
foreach (TreeNode subNode in node.Nodes)
{
if (subNode.Text == keyword)
{
return subNode;
}
tn= TreeNodeSearch(subNode, keyword);
if (tn != null) return tn;
}
return tn;
}
private void button1_Click(object sender, EventArgs e)
{
TreeNode tn1 = TreeNodeSearch(this.treeView1.Nodes[0], "节点2");
TreeNode tn2 = TreeNodeSearch(this.treeView1.Nodes[0], "节点3");
if (tn1!=null&&tn1.Checked)
{
MessageBox.Show("OK2");
}
if (tn2 != null && tn2.Checked)
{
MessageBox.Show("OK3");
}
}
private TreeNode TreeNodeSearch(TreeNode node, string keyword)
{
TreeNode tn = null;
if (node.Text==keyword)
{
return node;
}
foreach (TreeNode subNode in node.Nodes)
{
if (subNode.Text == keyword)
{
return subNode;
}
tn= TreeNodeSearch(subNode, keyword);
if (tn != null) return tn;
}
return tn;
}
private void button1_Click(object sender, EventArgs e)
{
TreeNode tn1 = TreeNodeSearch(this.treeView1.Nodes[0], "节点2");
TreeNode tn2 = TreeNodeSearch(this.treeView1.Nodes[0], "节点3");
if (tn1!=null&&tn1.Checked)
{
MessageBox.Show("OK2");
}
if (tn2 != null && tn2.Checked)
{
MessageBox.Show("OK3");
}
}
更多追问追答
追问
追答
private void RecurseTreeNodeSearch(TreeNode node, ref List result)
{
if (node.Checked)
{
result.Add(node);
}
foreach (TreeNode subNode in node.Nodes)
{
this.RecurseTreeNodeSearch(subNode, ref result);
}
}
用这个函数获取所有处于勾选状态的节点,存在result里面 然后通过判定list里面是不是有相应的节点....实现你想的功能。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询