未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll 中。能改下代码可以实现 递归,,将数据库中数据依次绑定到treeview1中吗???
TreeNodeCollection是treeview1的结点集合,dataset 中数据的字段,TreeNodeKind是T或F
public void DBToTreeNode(TreeNodeCollection TNColl, string ZhiDuAN, string TreeNodeKind)
{
for (int i = 0; i < DT.Rows.Count; i++)
{
bool Bool_UseFlag;
if ( DT. Rows[i]["USE_Flag"].ToString() == "F")
{
Bool_UseFlag = true;
}
else
{
Bool_UseFlag = false;
}
if (DT.Rows[i][ZhiDuAN].ToString().Split('^').Length == 2)
{
if (DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(0).ToString() == TreeNodeKind && DT.Rows[i][ZhiDuAN].ToString().Split('^').Length == 2) ;//控件名称
{
if (!treeView1.Nodes.ContainsKey(DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString()))
{
TNColl.Add(DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString(), DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString());
TNColl[DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString()].ToolTipText = DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(0).ToString();
TNColl[DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString()].Checked = Bool_UseFlag;
DBToTreeNode(TNColl[DT.Rows[i][ZhiDuAN].ToString().Split('^').GetValue(1).ToString//递归调用()].Nodes, "Sub1_Menu", "一级子菜单");
}
}
}
}
}
红色的那行出现未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll 中。
------解决方案--------------------太牛B的写法了,乱
------解决方案--------------------要么你的逻辑出错了,要么是真的堆栈太过深了而出错了。且你的方法好像没有退出堆栈的路径。