首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

menu控件 异常 索引必须位于该列表的界限内。 参数名: index

2013-02-24 
menu控件 错误 索引必须位于该列表的界限内。 参数名: index写网页的时候,在pageload时写了这么个代码MenuI

menu控件 错误 索引必须位于该列表的界限内。 参数名: index
写网页的时候,在pageload时写了这么个代码


MenuItem i = new MenuItem();
Menu1.Items.Add(i);
Menu1.Items.Add(i);


运行下,就会弹出错误。
索引必须位于该列表的界限内。 参数名: index

不明白为什么,希望知道原因的朋友给解释下。谢谢了。 menu
[解决办法]
出错的肯定不是这段代码,debug下。
[解决办法]
MenuItem i1 = new MenuItem();
MenuItem i2 = new MenuItem();
Menu1.Items.Add(i1);
Menu1.Items.Add(i2);
这样呢?
[解决办法]
引用:
谢谢回复阿。我知道怎样做是对的。但是我更想知道我为什么错了。
是不是规定就是同一个mneuitem不能被同一个menu添加多次?

看看 MenuItemCollection 的源代码:
public void Add(MenuItem child)
{
    this.AddAt(this._list.Count, child);
}

public void AddAt(int index, MenuItem child)
{
    if (child == null)
    {
        throw new ArgumentNullException("child");
    }
    if ((child.Owner != null) && (child.Parent == null))
    {
        child.Owner.Items.Remove(child);
    }
    if (child.Parent != null)
    {
        child.Parent.ChildItems.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));
}

显然你的程序造成了:当要向 Menu1.Items[1] 插入第二个 i 时,首先要将 Menu1.Items 中之前插入的i删除掉。

热点排行