日期:2014-5-19 浏览次数:20316次

哪为仁兄帮我分析一下这段代码,C#的for嵌套(新手)

for(int   i   =   0   ;   i   <   ds.Tables[0].Rows.Count   ;   i++)
{
for(int   x   =   0   ;   x   <   treeModels.Nodes.Count   ;   x++)
{
if(ds.Tables[0].Rows[i][ "ModelCode "].ToString()   ==   treeModels.Nodes[x].Tag.ToString())
treeModels.Nodes[x].Checked   =   true;

if(treeModels.Nodes[x].Nodes.Count   >   0)
CheckNodes(treeModels.Nodes[x],ds.Tables[0].Rows[i][ "ModelCode "].ToString());
}
}

如题,谢谢各位~~!

------解决方案--------------------
楼主要问什么?
-----------------------
CSDN 论坛助手
http://china-csdn.cn
------解决方案--------------------
你对这段代码有什么疑问?
------解决方案--------------------
看的明白,说不清白。。。帮顶
------解决方案--------------------
CheckNodes方法是什么?
估计是想递归
------解决方案--------------------
应该是实现了 treenode的check状态和数据库记录的一个匹配吧?
------解决方案--------------------
似乎是判断节点是否是可以展开的(即是否有子节点)
------解决方案--------------------
if(ds.Tables[0].Rows[i][ "ModelCode "].ToString() == treeModels.Nodes[x].Tag.ToString())
treeModels.Nodes[x].Checked = true;

如果这个节点的tag和数据库里对应的值一样,那么把他前面的复选框选中

if(treeModels.Nodes[x].Nodes.Count > 0)
CheckNodes(treeModels.Nodes[x],ds.Tables[0].Rows[i][ "ModelCode "].ToString());

如果这个节点还有子节点的话,那么调用CheckNodes

------解决方案--------------------
这应该是一个递归的过程,用DataTable中每行记录的ModelCode字段与树节点的tag 进行比对,值相待的NODE的复选框选
------解决方案--------------------
在加载的node的时候设定了node的Tag值,用于标记
在检测的时候就检测这个值

如果我新加了一个窗口,怎么才能让新加入的窗口也加进来呢?

什么意思?
------解决方案--------------------
这个和新窗体有啥子关系哦?
------解决方案--------------------
明白了
把新窗口的名称加到数据库里就可以了,只是节点要对应好