请教高手一个委托的问题,详情请进。
现有一个公共函数:是在遍历树过程进行一些操作,用到了委托
public delegate void TraverseTreesTaskDelegate(TreeNode n);
//遍历树,用到上面的委托
public static void TraverseNodes(TreeNodeCollection NDS,TraverseTreesTaskDelegate myJob)
{
for(int i=0;i <=NDS.Count-1;i++)
{
myJob(NDS[i]);
TraverseNodes(NDS[i].Nodes,myJob);
}
}
我以前写过一个函数:
private void TraverseNodes(TreeNodeCollection NDS,string strPermissions)
{
for(int i=0;i <=NDS.Count-1;i++)
{
string rID = NDS[i].NodeData.Split(new char[]{ '; '})[0];
if(strPermissions.IndexOf(rID)> =0)
{
NDS[i].Checked = true;
}
else
{
NDS[i].Checked = false;
}
TraverseNodes(NDS[i].Nodes,strPermissions);
}
}
请问这个函数能不能改成用上面的公共函数?(我的主要障碍就是怎么传那个strPermissions)
如果不能,请高手写个新的公共函数(给出大体样子即可),谢谢!
------解决方案--------------------没太看明白你的意思
try
delegate.BeginInvoke( yourdelegate , 参数 );
调用
------解决方案--------------------没看懂,猜测一下,
public delegate TraverseTreesTaskDelegate(TreeNode node, string perms);
public static void TraverseNodes(TreeNodeCollection NDS,TraverseTreesTaskDelegate myJob, string strPermissions)
{
for(int i=0;i <=NDS.Count-1;i++)
{
myJob(NDS[i], strPermissions);
TraverseNodes(NDS[i].Nodes,myJob, strPermissions);
}
}
public static void MyInnerJob(TreeNode node, string perms)
{
// ....
}
TraverseTreesTaskDelegate myDelegate = new TraverseTreesTaskDelegate(MyInnerJob);
TraverseNodes(someTree.Nodes, myDelegate);
------解决方案--------------------帮顶,