可爱的【Web版】TreeNodeCollection

两个TreeNodeCollection,将其中一个的节点赋给另一个:
TreeNodeCollection a = new TreeNodeCollection();

TreeNodeCollection b = this.treeview.nodes;

foreach (TreeNode tn in b)
{
     a.Add(tn);

}
调试的时候发觉,在执行了a.Add(tn)之后,发觉b中的该节点没了,原以为节点最多指向同样的内存地址,
却没有想到竟然没了,查看相关源代码之后才发觉。。。原来Add方法会将其移除掉:
 

public void AddAt(int index, TreeNode child)
{
    if (child == null)
    {
        throw new ArgumentNullException("child");
    }
    if (this._updateParent)
    {
        if ((child.Owner != null) && (child.Parent == null))
        {
            child.Owner.Nodes.Remove(child);
        }
        if (child.Parent != null)
        {
            child.Parent.ChildNodes.Remove(child);
        }
        if (this._owner != null)
        {
            child.SetParent(this._owner);
            child.SetOwner(this._owner.Owner);
        }
    }
    this._list.Insert(index, child);
    this._version++;
    if (this._isTrackingViewState)
    {
        ((IStateManager) child).TrackViewState();
        child.SetDirty();
    }
    this.Log.Add(new LogItem(LogItemType.Insert, index, this._isTrackingViewState));
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值