日期:2014-05-17  浏览次数:20738 次

大侠速来围观,很有意思的题,重在大家提供思路。
先上截图

有三个根节点,每个根节点下只有四个子节点(都是平级关系)。当选中一个节点后,然后选中一个ComBox的的状态(持续,缺省,关闭),然后点击确定按钮就触发事件。要求:当根节点选中时,它下面的三个子节点就不用再判断了,直接一起触发事件。本来效果已经做出来了,我是这样做的:我用了三个switch语句(判断选中的是持续,缺省,关闭)循环判断每一个子节点(选中根节点不触发任何事件),但是代码不够简洁,且当我选中多个根节点时,就出问题了导致有的case下没有触发事件。各位有没有好的办法来解决这个问题。我也不知道这样说,各位有没有明白我的问题,不懂得可以问,在线等。
 
循环触发事件

------解决方案--------------------
帮楼主顶一下!
------解决方案--------------------
我也来顶一下! 
------解决方案--------------------
如果说需要在每个节点的状态发生转变时,触发某些事件,那么也只能遍历判断,结合选中节点 及 选中状态来进行,而且每次修改 都需要重新遍历下选中节点
------解决方案--------------------
不是很明白LZ的需求 当点击按钮循环触发出发事件是触发什么事件 根节点展开后是什么样子 或许可以有助于理解需求
------解决方案--------------------
帮顶
------解决方案--------------------
隐约有点感觉LZ的想表达什么了。是不是子节点钩选本身就是带事件用户代码的,现在由于父节点选中了,附带就把子节点也都自动钩选/取消钩选了,但其实这时候子节点其实并不需要执行选中的代码?



AfterCheck事件中:

if (e.Action == TreeViewAction.Unknown) return;

if (是相对根节点)
{
    全选/全不选子节点(e.Node);
}
else
{
    子节点要干的活(e.Node);
}

------解决方案--------------------
虽没做过但看过串口通讯处理好像需要一定时间,应该做排队处理和等待回馈什么的,那么,程序就应该有个什么显示的来表示处理进度什么的?!我想问题应该不在代码上,不知道这样思路是否有帮助。
癸巳〖蛇〗 丁巳月 甲辰日
二〇一三年 四月   廿九
双子座 甲申时
今属:木;五行:水火木土金;缺:。
纳音五行:长流水。
------解决方案--------------------
处理的代码放到另一个线程里试试
------解决方案--------------------
要优化代码,去掉switch,改用IOC的方式,要优化性能,就在第二条线程里执行串口数据发送的工作。
------解决方案--------------------
顶起
------解决方案--------------------
你应该把界面处理流程和点击按钮开始的发送指令流程分开来
1.界面处理。在每个节点的选中事件中处理=》最后把所有选中的节点存为临时列表
2.根据列表,在单独线程里面去发送指令。
------解决方案--------------------
顶顶有健康呦
------解决方案--------------------
帮顶接分吧
------解决方案--------------------
好厉害的样子  
------解决方案--------------------
多简单的问题啊。获得触发这个事件的节点。if他是跟节点。则执行所有子节点要执行的内容。else 这个节点就是子节点了。执行你要的内容就行了
------解决方案--------------------
根节点的状态改变时,子节点状态与其同步
点确定时,遍历节点,并且触发事件,在事件参数中,将节点传进去,在处理事件中,判断e.Node.Level