标签属性的值消失

Ikk*_*kke 1 c# winforms

我正忙着一个简单的应用程序.它读取xml并将信息放在树视图中.

我这样做是通过创建TreeNodes并嵌套它们,并最终返回根treenode.因为我想在选择treenode时显示一些额外的信息,所以我将信息放在TreeNode的tag属性中.通过这种方式,我应该能够在选择节点时检索信息.

但是当我尝试检索Tag属性中的信息时,它表示值= null.

这是我填写标签的代码.这是一个递归用于读取XML dom的函数.treeNode是赋予此函数的参数.

if (treeNode.Tag == null)
{
treeNode.Tag = new List<AttributePair>();
}
(treeNode.Tag as List<AttributePair>).Add(new AttributePair(currentNode.Name, currentNode.Value));
Run Code Online (Sandbox Code Playgroud)

这是选择treenode的事件

private void tvXML_AfterSelect(object sender, TreeViewEventArgs e)
{
    if (tvXML.SelectedNode.Tag != null)
    {
    }
    if (e.Node.Tag != null)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

两个值都计算为null.我怎么解决这个问题?

Jud*_*ngo 8

您发布的代码应该按原样运行.您的代码中的其他内容,您未在此处发布的代码,会导致此问题中断.它可能是清除Tag,它可能是标签上的数据绑定集等.

在没有看到所有代码的情况下,我能做的最好的事情就是猜测并帮助您找出问题所在.

这就是我要做的事情:设置Visual Studio以允许使用调试器进入.NET框架源代码.然后,在TreeNode.Tag属性的setter上设置断点.将代码中的标记设置为AttributePair列表后,请查看何时再次设置该标记.断点将命中,您将查看堆栈跟踪并查看清除Tag属性的确切内容.