gpt4 book ai didi

c# - 在 TreeView c# 中向上移动树节点的处理程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:13 25 4
gpt4 key购买 nike

我有一个事件处理程序可以向上移动选定的树节点。我不知道为什么 crash 与 commented 一致。treeviewdocxml是一个treeview对象,来自System.Windows.Forms

        treeViewDocXml.BeginUpdate();
TreeNode sourceNode = treeViewDocXml.SelectedNode;

if (sourceNode.Parent == null)
{
return;
}
if (sourceNode.Index > 0)
{
sourceNode.Parent.Nodes.Remove(sourceNode);
sourceNode.Parent.Nodes.Insert(sourceNode.Index - 1, sourceNode); //HERE CRASH
}
treeViewDocXml.EndUpdate();

最佳答案

这是因为在从树中移除 sourceNode.Index 之后,您正在引用它。在删除之前尝试将索引存储在变量中:

    treeViewDocXml.BeginUpdate();
TreeNode sourceNode = treeViewDocXml.SelectedNode;

if (sourceNode.Parent == null)
{
return;
}
if (sourceNode.Index > 0)
{
var sourceIndex = sourceNode.Index;
var parentNode = sourceNode.Parent;
parentNode.Nodes.Remove(sourceNode);
parentNode.Nodes.Insert(sourceIndex - 1, sourceNode); //HERE CRASH
}
treeViewDocXml.EndUpdate();

[更新]

对父节点的引用也不正确,所以我在示例中修复了它。

关于c# - 在 TreeView c# 中向上移动树节点的处理程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com