C#winform 如何判断树节点中被选中的是哪些子节点

我在BUTTON1单击事件中希望能对选中的节点进行操作,比如如果节点二是勾选状态,则弹出一个OK2的对话框,如果节点三是勾选状态,则弹出一个OK3的对话框,不勾选则无操作... 我在BUTTON1单击事件中希望能对选中的节点进行操作,比如如果节点二是勾选状态,则弹出一个OK2的对话框,如果节点三是勾选状态,则弹出一个OK3的对话框,不勾选则无操作。我自己的想法是在按钮事件中用SWITCH语句来用,但是不

知道如何使用,知道的朋友能否回答下,谢谢!
展开
 我来答
匿名用户
2013-11-27
展开全部
可以遍历所有节点,用节点的Checked属性来判断
8246sasuke
2013-11-27
知道答主
回答量:42
采纳率:0%
帮助的人:15.4万
展开全部
foreach(TreeNode node in this.treeview1.Nodes)
{
foreach(TreeNode node1 in node.Nodes)
{
if(node1.Checked)
{
MessageBox.Show(node1.Text);
}
}
}
追问
假设我有6个根节点每个根节点有8个子节点,如果都用IF来判断,这样内存开销会不会很大?现在还处于查找资料的状态,也许最终还是会像你写的代码一样,一个个状态的去写。但是现在我还是抱着侥幸的心里想去找个更漂亮的代码
追答
其实这个foreach循环已经把你的开销都算进去了。如果你不逐个判断复选框的状态又怎能知道它是否选中呢,对吧。况且这是在循环里边的判断,很快的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wulala91
2013-11-27 · 超过11用户采纳过TA的回答
知道答主
回答量:100
采纳率:42%
帮助的人:21.8万
展开全部
你用的什么实现的勾选功能啊?checkbox?
追问
用控件Treeview,且勾选的节点不确定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦魇六月
推荐于2016-06-11 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:127万
展开全部
为什么要用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");
}
}
更多追问追答
追问

额,大哥,节点的勾选状态不确定,我公司要我开发的是类似福昕自定工具栏的功能,父现在还差子节点与工具栏的关联。我没想到更好的方法,只是觉得假设用SWITCH 的话,遍历子节点,凡是子节点为勾选状态的就添加执行代码。目前设定根节点有六个,每个根节点有8个子节点,如果用大哥你的代码,貌似也没有问题,但是如果前面要定义48个TreeNode,貌似有点走回面向过程的路子。

追答
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里面是不是有相应的节点....实现你想的功能。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式