2014-01-19 47 views
0

我做了以下编程。运行该应用程序会显示一条错误消息:索引超出范围。必须是非负数且小于集合的大小。C#:索引超出范围,必须是非负数并小于集合的大小

编辑:

public void SetShortcuts() 
    { 
     List<string> Verknüpfung = new List<string>(); 
     int i = 0; 
     int j = 0; 

     try 
     { 
      foreach (string Datei in Directory.GetFiles(PfadShortcuts, "*.txt")) 
      { 
       Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8)); 

       Image ShortcutIcon = new Image(); 
       ShortcutIcon.Source = new BitmapImage(new Uri(@"Fugue Icons\document.png", UriKind.Relative)); 
       ShortcutIcon.Height = 16; 
       ShortcutIcon.Width = 16; 
       ShortcutIcon.Stretch = Stretch.None; 

       MenuItem Shortcut = new MenuItem(); 
       Shortcut.Icon = ShortcutIcon; 
       Shortcut.Header = Verknüpfung[0 + i]; 
       Shortcut.Padding = new Thickness(5); 
       Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + j]); }; 

       Shortcuts.Items.Add(Shortcut); 
       i += 2; 
       j++; 
      } 
     } 
     catch 
     { 
      Fehlermeldung_Main_Shortcuts(); 
     } 
    } 

你能帮帮我吗? 在此先感谢。

亲切的问候。

+1

你不检查任何地方,我 Shai

+0

感谢。但为什么我需要这样做,在哪里? – gpuk360

+0

不知道,没有打扰读你的代码,因为你做错了所有的事情。 – Shai

回答

0

看行:

Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8)); 

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); }; 

Verknüpfung[1 + i]为比然后号码列表中的项目的较高的一个。

我似乎正在递增比列表填充更快。

尝试改变

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); }; 

Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + i]); }; 
+0

Verknüpfung.Count()是14.这是我想要处理的行数。 Verknüpfung[1 + i]必须从行“2”开始,然后获取2行内容。我该如何解决它? – gpuk360

+0

除非我误解Verknüpfung是一个新的空列表。 它没有第2行开始。 Verknüpfung[1 + i]是从0开始的数组编号。 –

+0

那么,“Shortcut.Header =Verknüpfung[0 + i];”作品。它将标题设置为创建的菜单。我试图做的是设置一个点击事件到每一行。 0行:你好; 第1行:运行网站; 第2行:世界; 第3行:运行网站; ... – gpuk360

0

如果你看看错误信息,它实际上告诉你到底发生了什么(你只需要说出这种语言)。 “索引超出范围”意味着你有N件物品,并且你试图拿(N + 1)物品。换句话说,你试图得到一些不存在的东西,可能是由于程序中的错误逻辑,但它也可能是你期望有N + 1项,但是不是。

最好的方法来解决这个问题,就是使用调试器来首先找出你正在得到异常的那一行。在ForEach的第一行放置一个断点(Verknüpfung.AddRange)将使您调试它。

为了消除,你需要 (1)解决您的输入文件或 (2)解决您的逻辑错误 所以你是不是想了解更多的项目比存在在数组中。

相关问题