【发布时间】:2018-11-14 20:17:09
【问题描述】:
在这里,我试图在重新加载树视图后显示最后一个选定的节点,但选定的节点始终为空。我能够从树视图节点集合中找到树节点,但无法将其分配给树视图。请建议:
public void LoadTreeViewData()
{
treeView.Nodes.Clear();// Clear any existing items
treeView.BeginUpdate(); // prevent overhead and flicker
LoadBaseNodes();//Populate all nodes
treeView.EndUpdate();
treeView.Refresh();
treeView.ExpandAll();
if (!string.IsNullOrEmpty(m_oSelectedNode_NAME))
{
TreeNode[] treeNodes = treeView.FlattenTree()
.Cast<TreeNode>()
.Where(r => Convert.ToDecimal(r.Tag) == Convert.ToDecimal(m_oSelectedNode_NAME))
.ToArray();
treeView.SelectedNode = treeNodes[0];
treeView.Focus();
}
}
【问题讨论】:
-
如果您能提供minimal reproducible example,那就太好了。
-
WinForms? ASP?我可以弄清楚 FlattenTree 在做什么,但它不是 WinForm 的 TreeView 控件中的标准功能。会不会只是
treeView.SelectedNode = tns[0];不知道你为什么要做所有其他事情。 -
这里的扁平化树只不过是返回 IEnumerable
集合来找到我最后一个保存节点。它是一个 winform 控件。 -
这里的问题是虽然我找到了树节点但是当我分配给 selectedNode 时。 SelectedNode 保持为空。
-
是的。它是十进制的,它返回给我树节点,但在分配所选节点时为空。