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

Hirosue 2013-02-13 11:31:24
写网页的时候,在pageload时写了这么个代码

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


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

不明白为什么,希望知道原因的朋友给解释下。谢谢了。
...全文
479 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 Hirosue 的回复:
我知道怎样做是对的。但是我更想知道我为什么错了。 是不是规定就是同一个mneuitem不能被同一个menu添加多次?
我非常赞赏这种“要知道为什么”的态度。 但是要知道,在csdn可能很少有人能够告诉你。所以你首先要养成看源代码的习惯,不要什么简单的问题都去求人。
  • 打赏
  • 举报
回复
引用 4 楼 Hirosue 的回复:
谢谢回复阿。我知道怎样做是对的。但是我更想知道我为什么错了。 是不是规定就是同一个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删除掉。
threenewbee 2013-02-14
  • 打赏
  • 举报
回复
MenuItem i1 = new MenuItem(); MenuItem i2 = new MenuItem(); Menu1.Items.Add(i1); Menu1.Items.Add(i2); 这样呢?
机器人 2013-02-14
  • 打赏
  • 举报
回复
出错的肯定不是这段代码,debug下。
Hirosue 2013-02-14
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
MenuItem i1 = new MenuItem(); MenuItem i2 = new MenuItem(); Menu1.Items.Add(i1); Menu1.Items.Add(i2); 这样呢?
谢谢回复阿。我知道怎样做是对的。但是我更想知道我为什么错了。 是不是规定就是同一个mneuitem不能被同一个menu添加多次?
Hirosue 2013-02-14
  • 打赏
  • 举报
回复
引用 1 楼 fangxinggood 的回复:
出错的肯定不是这段代码,debug下。
应该就是这段了,。我新建的是一个页面,什么都没有。调试运行的话,错误就会定位在第二个add,也就是第三行。。
Hirosue 2013-02-14
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
但是要知道,在csdn可能很少有人能够告诉你。所以你首先要养成看源代码的习惯,不要什么简单的问题都去求人。
这个题明白了。。也明白为什么平常学东西,学不精了。 看.net的时候也只是以为拖完控件,添几行代码就完事了。不会了、出错了就直接百度谷歌,查不到就没有方向了。 谢谢。
threenewbee 2013-02-14
  • 打赏
  • 举报
回复
赞lz探究精神和sp1234的耐心解释。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧