You need to enable JavaScript to run this app. C# WinForm用关联数据库表填充TreeView时编译报错求助
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm用关联数据库表填充TreeView时编译报错求助

C# WinForm TreeView填充报错解决办法

两个报错都是因为误用了ASP.NET WebForm的TreeView相关API,WinForm和WebForm的控件成员定义完全不同,修改方案如下:

错误1:TreeNode构造函数参数转换失败

WinForm的TreeNode没有接收两个字符串(文本、键)的构造重载,你需要构造节点后单独给Name属性赋值(对应你要存的编码值)。

修改示例:

// 原错误写法
// macroNode = new TreeNode(macroName, macroCode);
// superNode = new TreeNode(superName, superCode);
// objektNode = new TreeNode(objektName, objekCode);

// 修正后WinForm写法
macroNode = new TreeNode(macroName)
{
    Name = macroCode
};
superNode = new TreeNode(superName)
{
    Name = superCode
};
objektNode = new TreeNode(objektName)
{
    Name = objekCode
};

错误2:TreeNode找不到ChildNodes属性

WinForm的TreeNode子节点集合属性名为Nodes,而非WebForm的ChildNodes,全局替换所有ChildNodes为Nodes即可。

修改示例:

// 原错误写法
// macroNode.ChildNodes.Add(superNode);
// superNode.ChildNodes.Add(objektNode);

// 修正后写法
macroNode.Nodes.Add(superNode);
superNode.Nodes.Add(objektNode);

额外代码问题修正

你的代码里还有三处会导致运行报错的问题,建议同步修改:

  1. 事件名错误:Page_Load是WebForm的页面加载事件,WinForm窗体加载事件默认是Form_Load,你需要把Page_Load方法关联到Form2的Load事件,否则初始化逻辑不会执行。
  2. SqlCommand参数错误:第一个查询的SqlCommand构造错把连接字符串当SQL语句传入,修改为:
// 原错误写法
// cmd = new SqlCommand(Form1.MyConnectionString, con);
// 修正后
cmd = new SqlCommand(CmdString, con);
  1. 资源泄漏问题:代码里重复创建SqlConnection,建议把数据库操作都放到using块中,自动释放连接资源。

内容的提问来源于stack exchange,提问作者Олег Литвинов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:45:02